Search
Tato stránka obsahuje návody k práci s přípravkem. Popis hardware a periferií naleznete na stránce Přípravek MicroZed APO.
Přístup přes sériový port, parametry:
Použít lze například program gtkterm nebo ještě jednodušeji tio -b 115200 /dev/ttyUSB0 z terminálu.
gtkterm
tio -b 115200 /dev/ttyUSB0
Po zjištění adresy připojené desky je výhodnější použít přístup přes SSH. Z počítače, kde je nainstalovaný pouze OS Windows, je možné na sériový port i přes SSH přistupovat k zařízení s využitím programu PuTTY.
ssh -i /opt/zynq/ssh-connect/mzapo-root-key root@192.168.223.xxx
Pro přenos souborů mezi cílovým systémem a hostitelským PC lze použít program SCP nebo si lze připojit kompletní souborový systém cílové desky do podadresáře /tmp příkazem
/tmp
/opt/zynq/sshfs-mount-target 192.168.223.xxx
ssh-add /opt/zynq/ssh-connect/mzapo-root-key
Připravený příkaz pro rychlé zavedení klíče
ssh-add-mzapo-key
A potom se lze k systému připojit přes ssh s uživatelem root již bez zadávání klíče nebo hesla:
ssh root@192.168.223.xxx
Více o použití protokolu SSH, SSH klíčů a SSH agenta najdete v článku o vzdáleném přístupu.
V závorce je uvedené číslo připojeného motoru.
192.168.223.201 (mzapoa) 192.168.223.202 (mzapob)
Laboratoř je přístupná přes instalaci konferenčního systému BigBluButton. Jedná se o lokální/experimentální instalaci na osobním/desktopovém počítači, s problémy se obracejte na jeho majitele (Pavel Píša), přístupovou bránu zařídil Ing. Daniel Večerka. Brána pro vstup do virtuální laboratoře je na adrese https://cw.felk.cvut.cz/courses/apo/.
Připojení k přípravkům s oprávněními uživatele root je autentizované na základě vlastnictví privátního klíče mzapo-root-key. Při navázání spojení s požadavkem na přístup na uživatelský/systémový účet root je vlastnictví privátního klíče ověřené veřejným klíčem uloženým v seznamu oprávnění k přístupu k účtu na přípravcích. Privátní klíč je k dispozici všem uživatelům v adresáři /opt/zynq/ssh-connect na serveru postel. Zkopírovat ho lze na vlastní počítač příkazem
root
mzapo-root-key
/opt/zynq/ssh-connect
postel
scp cvut_login@postel.felk.cvut.cz:/opt/zynq/ssh-connect/mzapo-root-key ~/.ssh/ chmod 600 ~/.ssh/mzapo-root-key
K vybranému přípravku se poté lze připojit protunelování do lokální sítě laboratoře KN:E-2 přes server postel.
ssh -i ~/.ssh/mzapo-root-key -o 'ProxyJump=cvut_login@postel.felk.cvut.cz' root@192.168.223.xxx
Klíč je také možné si po dobu běhu sezení na vývojovém počítači uložit do SSH agenta
ssh-add ~/.ssh/mzapo-root-key
a poté již není nutné klíč v každém příkazu uvádět. Adresář ~/.ssh/ zde používáme, protože na windows subsystem for Linux vznikají potíže se změnou přístupových práv k souborům uloženým přímo v domovském (~/) adresáři.
~/.ssh/
~/
Další možností vzdáleného přístupu k přípravkům je otevření sezení na serveru postel nebo na počítačích v laboratoři KN:E-23, kdy lze postupovat stejně jako při lokální práci v laboratoři.
Šablonu aplikace najdete na počítačích v laboratoři v adresáři
/opt/apo/mzapo_template
Výhodnější je však šablonu nahrát z verzovacího systému a založit si poté pro projekt vlastní repozitář (viz stránka z dokumentace)
git clone https://gitlab.fel.cvut.cz/b35apo/mzapo_template.git
Součástí šablony jsou následující soubory
Podrobnější popis registrů návrhu lze nalézt v dokumentaci desky MZ_APO.
Pravidla Makefile pro sestavovací program je potřeba upravit pro vlastní aplikaci. Aplikace se bude skládat z jednoho nebo více zdrojových souborů v jazyce C (soubory s příponou *.c) a nebo v jazyce C++ (soubory s příponou *.cpp). Příkladem s hlavní funkci main je vzorový soubor change_me.c, který by měl být nahrazen, přejmenován za soubor specifický pro danou aplikaci.
Makefile
*.c
*.cpp
main
change_me.c
Do proměnné SOURCES je nastaven seznam zdrojových souborů, viz následující část souboru Makefile
SOURCES
SOURCES = change_me.c mzapo_phys.c mzapo_parlcd.c #SOURCES += font_prop14x16.c font_rom8x16.c
V první řádce je potřeba upravit jméno hlavního souboru aplikace. Pokud jsou využité fonty, je potřeba druhou řádku odkomentovat. Do seznamu je možné na těchto dvou řádkách nebo opakováním řádku s plus-rovná-se přidat i další potřebné soubory. Hlavičkové soubory (*.h) se do seznamu neuvádí.
*.h
Jméno žádaného binárního spustitelného souboru je nastavené v do proměnné TARGET_EXE.
TARGET_EXE
Překlad je proveden prostým zavoláním sestavovacího programu
make
kdy je vyvoláno první nalezené pravidlo all.
all
Pro smazání generovaných souborů (objektové soubory, binární kód aplikace a automaticky generované závislosti) slouží cíl clean. Cíle lze i kombinovat
clean
make clean all
Případná kompilace při změně a spuštění aplikace na vzdálené jednotce je provedeno při vyvolání cíle run
run
make TARGET_IP=192.168.223.xx run
Automatické přihlášení, přenos dat a spuštění aplikace na cílovém zařízení s danou IP adresou vyžaduje již zavedený privátní klíč v SSH agentovi pro dané sezení
ssh-add /opt/apo/zynq/ssh-connect/mzapo-root-key
Aplikace je nejdříve překopírovaná do podadresáře /tmp vytvořeného podle přihlašovacího jména uživatele a poté je aplikace spuštěné s tím, že standardní vstup i výstup je k dispozici na straně vývojářského počítače přes SSH spojení.
Aplikaci je možné na cílové platformě i ladit s využitím grafického ladícího programu Data Display Debugger
make TARGET_IP=192.168.223.xx debug
Na počítači, ze kterého je cílový systém laděný, musí být nainstalované balíčky ddd a gdb-multiarch (případně s úpravou Makefile arm-linux-gnueabihf-gdb).
ddd
gdb-multiarch
Doporučení pro studenty bez předchozí preference je na našich systémech používat editor/prostředí Geany.
Stránka s návodem jak nastavit vývojové prostředí Eclipse pro práci s přípravkem.
Pro kompilaci na Ubuntu/Debian systemu nainstalujde křížový kompilátor viz Kompilace.
Zkopírujte privátní klíč pro SSH připojení k deskám MZ_APO z lokální sítě učebny
scp ctu_login@postel.felk.cvut.cz:/opt/zynq/ssh-connect/mzapo-root-key . chmod go-rwx mzapo-root-key ssh-add mzapo-root-key
Vyzkoušíme, že se na systém můžeme připojit přes SSH
ssh -o 'ProxyJump=ctu_login@postel.felk.cvut.cz' root@192.168.223.xxx
Když projde tak exit.
exit
Zeditujte Makefile, v proměnné TARGET_IP nastavte konkrétní adresu cílové desky ve vnitřní síti. Odkomentujte řádku s nastavením SSH pro spojení přes prostředníka s veřejnou adresou a nahraďte přihlašovací jméno ctu_login svým přiděleným přihlašovacím jménem do sítě ČVUT.
TARGET_IP
ctu_login
TARGET_IP ?= 192.168.223.xxx SSH_OPTIONS=-o 'ProxyJump=ctu_login@postel.felk.cvut.cz'
Spusťte aplikaci na vzdáleném systému
make run
Pro urychlení přihlašování na server postel.felk.cvut.cz bez nutnosti vypisovat heslo můžete také využít ověřování privátním klíčem. Pokud ještě privátní klíč na svém systému nemáte nagenerovaný, tak použijte
postel.felk.cvut.cz
ssh-keygen
Správné je svůj klíč i na svém počítači chránit heslem. Více na o klíčích na stránce Jak používat GIT s SSH klíčem. Pokud je klíč chráněný heslem, tak je ho potřeba po přihlášení do sezení aktivovat příkazem
ssh-add
Dále informujeme server postel.felk.cvut.cz o naší důvěře, volbě, že ṕro ověření našeho předaného účtu stačí otisk daného klíče
ssh-copy-id ctu_login@postel.felk.cvut.cz
Dále by již make run mělo startovat aplikaci bez nutnosti jakékoliv interakce ze strany uživatele (žádné dotazy na hesla atd.).
Alternativou, k ProxyJump z předchozí kapitoly je využít trvalé SSH spojení na server postel.felk.cvut.cz pro tunelování přístupu na SSH port 22 na vybraném přípravku. Přihlášení přes server s veřejnou adresou se provede jen jednou, je tedy menší riziko, že ochrana serveru vyhodnotí rychlé připojování jako útok. Opětovná připojování jsou takto i výrazně rychlejší.
ProxyJump
Tunel na port požadovaného kitu se vytvoří v samostatném okně se shellem příkazem
ssh -nNT ctu_login@postel.felk.cvut.cz -L 2222:192.168.223.xxx:22
Aktuální Makefile na to je na toto použití připravené, je potřeba povolit
TARGET_IP = 127.0.0.1 SSH_OPTIONS=-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "Port=2222" SSH_GDB_TUNNEL_REQUIRED=y
Síť laboratoře K2 je za NATem. Proto není možné přímé spojení z vlastního počítače na desku. Pokud nám však na počítači běží SSH server, tak je možné vytvořit reverzní tunel.
Nejdříve zjistíme adresu našeho počítače v síti EDUROAM
ip addr show
Ideálně si na svém počítači vytvoříme pomocný uživatelský účet s nízkou úrovní oprávnění a přístupů k souborům.
adduser restricted_user
ssh -R 2222:localhost:22 restricted_user@147.32.xxx.xxx
K přípravku se pak připojujeme přes tunel tak, že se připojíme k lokálnímu teleportovanému portu 2222.
ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -p 2222 root@localhost
scp login@postel.felk.cvut.cz:/opt/apo/zynq/ssh-connect/mzapo-root-key . chmod 600 mzapo-root-key ssh-add mzapo-root-key
Při volání make z adresáře se šablonou aplikace pak bude nutné přidat parametr SSH_OPTIONS
SSH_OPTIONS
make SSH_OPTIONS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=2222" TARGET_IP=localhost run
V základní nastavení se přípravek chová jako DHCP klient a očekává přidělení IP adresy po připojení síťového kabelu. Pokud není možné zprostředkovat připojení k DHCP serveru, je možné nastavit statické IP adresy hostovského PC i přípravku a propojit tyto napřímo. K nastavení statické IP adresy je možné využít příkaz ip ve formátu:
ip
ip addr add [IP_ADDRESS] dev [DEVICE]
IP_ADDRESS
DEVICE
ip addr
ifconfig
Nastavit statickou IP adresu na přípravku lze pomocí sériového rozhraní (například přes gtkterm), po přihlášení jménem a heslem, například pomocí příkazu, v doporučené sekvenci příkazů je před nastavení pevné IP adresy přidané vypnutí DHCP klienta a nakonec pak aktivace rozhraní:
ifdown eth0 ip addr add 192.168.135.14/24 dev eth0 ip link set dev eth0 up
sudo -i
ip addr add 192.168.135.101/24 dev enx00e04c18681b
enx00e04c18681b
courses:b35apo:documentation:mz_apo-howto:compilation