===== Počáteční šablona pro tvorbu aplikace =====
Šablonu aplikace najdete na počítačích v laboratoři v adresáři
/opt/apo/mzapo_template
Další šablony, pro další platformy např. QtMips, naleznete na https://gitlab.fel.cvut.cz/b35apo/stud-support v adresari ''seminaries/binrep''
Výhodnější je však šablonu nahrát z verzovacího systému a založit si poté pro projekt vlastní repozitář ([[..:documentation:githowto:start|viz stránka z dokumentace]])
git clone https://gitlab.fel.cvut.cz/b35apo/mzapo_template.git
Součástí šablony jsou následující soubory
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/Makefile|Makefile]] - pravidla pro sestavení a vzdálené spouštění aplikace
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/change_me.c|change_me.c]] - zdrojový kód s hlavní funkcí main - šablona určená k přejmenování
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/font_prop14x16.c|font_prop14x16.c]] - proporcionální font s maximální šířkou 14 a výškou 16 bodu
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/font_rom8x16.c|font_rom8x16.c]] - font s fixní šířkou
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/font_types.h|font_types.h]] - definice typu použitého pro popis fontu
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/mzapo_parlcd.h|mzapo_parlcd.h]] - deklarace funkcí pro nízkoúrovňový přístup k LCD display
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/mzapo_parlcd.c|mzapo_parlcd.c]] - implementace funkcí pro nízkoúrovňový přístup k LCD display
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/mzapo_phys.h|mzapo_phys.h]] - deklarace funkce pro mapování fyzického rozsahu adres do aplikačního procesu
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/mzapo_phys.c|mzapo_phys.c]] - implementace funkce pro mapování fyzického rozsahu adres do aplikačního procesu
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/mzapo_regs.h|mzapo_regs.h]] - definice bázových adres a registrů výukového návrhu MZ_APO
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/serialize_lock.h|serialize_lock.h]] - definice zámku pro seřazení více aplikací tak, aby v danou chvíli běžela jen jedna
* [[https://gitlab.fel.cvut.cz/b35apo/mzapo_template/blob/master/serialize_lock.c|serialize_lock.c]] - implementace serializace - umožňuje jeden kit sdílet více uživateli
Podrobnější popis registrů návrhu lze nalézt v [[..:documentation:mz_apo:start|dokumentaci výukového kitu 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 [[https://www.gnu.org/software/ddd/|Data Display Debugger]]
make TARGET_IP=192.168.202.xx debug
Soubory jsou dostupné i v GitLab FEL přes ssh (nutný nahraný public key): git@gitlab.fel.cvut.cz:b35apo/mzapo_template.git
Případně přes https: https://gitlab.fel.cvut.cz/b35apo/mzapo_template.git
Klíč pro přístup k vývojovému kitu je možné v prostředí Xfce aktivovat automaticky po přihlášení v nastavení automaticky spouštěných aplikací ''Setting manager > Session and startup > Application Autostart'' (''Nastavení > Správce nastavení > Relace a spouštění > Automatický start aplikace''). Přidejte položku, název vyplňte například na ''ssh-mz_apo'', přidejte popis a příkaz
ssh-add /opt/zynq/ssh-connect/mzapo-root-key