Nápověda k práci s přípravkem MicroZed APO

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řipojení k přípravku

Přístup přes sériový port, parametry:

  • Zařízení: /dev/ttyUSB0
  • Přenosová rychlost: 115200
  • Žádná parita a jeden stopbit
  • Login: root
  • Heslo bude sděleno na cvičení

Použít lze například program gtkterm.

Po zjištění adresy připojené desky je výhodnější použít přístup přes SSH

Adresu desky je možné zjistit i z výpisu na obrazovce. Adresa je zobrazená binárně v každé řádce vždy od nejvýznamnějšího bitu (MSB) k bitu nejméně významnému (LSB).

ssh -i /opt/zynq/ssh-connect/mzapo-root-key root@192.168.202.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

/opt/zynq/sshfs-mount-target 192.168.202.xxx

Případně lze privátní klíč přidat do ssh agenta:
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 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.202.xxx

Počáteční šablona pro tvorbu aplikace

Š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

  • Makefile - pravidla pro sestavení a vzdálené spouštění aplikace
  • change_me.c - zdrojový kód s hlavní funkcí main - šablona určená k přejmenování
  • font_prop14x16.c - proporcionální font s maximální šířkou 14 a výškou 16 bodu
  • font_rom8x16.c - font s fixní šířkou
  • font_types.h - definice typu použitého pro popis fontu
  • mzapo_parlcd.h - deklarace funkcí pro nízkoúrovňový přístup k LCD display
  • mzapo_parlcd.c - implementace funkcí pro nízkoúrovňový přístup k LCD display
  • mzapo_phys.h - deklarace funkce pro mapování fyzického rozsahu adres do aplikačního procesu
  • mzapo_phys.c - implementace funkce pro mapování fyzického rozsahu adres do aplikačního procesu
  • mzapo_regs.h - definice bázových adres a registrů výukového návrhu MZ_APO

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.

Do proměnné SOURCES je nastaven seznam zdrojových souborů, viz následující část souboru Makefile

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í.

Jméno žádaného binárního spustitelného souboru je nastavené v do proměnné TARGET_EXE.

Překlad je proveden prostým zavoláním sestavovacího programu

make

kdy je vyvoláno první nalezené pravidlo 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

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

make TARGET_IP=192.168.202.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.202.xx debug

Vývojová prostředí pro tvorbu programů

Stránka s návodem jak nastavit vývojové prostředí Eclipse pro práci s přípravkem.

Připojení k přípravku v laboratoři ze sítě EDUROAM

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
a zvolíme heslo. Z přípravku se připojíme k svému počítači přes SSH a vytvoříme reverzní tunel.

ssh -R 2222:localhost:22 restricted_user@147.32.xxx.xxx
Vytvořený tunel naslouchá na portu 2222 na našem počítači a každý pokus o připojení na port 2222 přenese na přípravek a zde provede pokus o otevření portu localhost:22, kde naslouchá SSH server na přípravku.

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
K úspěšnému přihlášení budeme ještě potřebovat privátní klíč, který otvírá vstup k přípravku. Ten si lze stáhnout ze serveru postel a poté zavést například následujícími příkazy
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

make SSH_OPTIONS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o Port=2222" TARGET_IP=localhost run
Pro opakované použití lze provést nastavení parametrů přímo v souboru Makefile.

courses/b35apo/documentation/mz_apo-howto/start.txt · Last modified: 2019/04/24 10:36 by procht23