Soubory programu jsou děleny dle funkčnosti. Podrobnjěí informace s popisem jednotlivých souborů, metod, funkcí, struktur, proměných a maker je možné dohledat v dokumentaci v sekci: Files.
Aplikace je vytvořena pro MicroZed based MZ_APO board designed by Petr Porazil at PiKRON.
Aplikace vychází z šablony mzapo_template.
Blokové schéma popisuje fungování algoritmu hry Pac-Man.
Obecně si ho můžeme rozdělit do třech částí:
- konfigurace dané hry (Main menu)
- hra samotná (Game)
- výpis skóre a pauza (Dispaly score, Pause)
Pro kompliaci programu je připravený Makefile i s předpřipraveným připojením přes ProxyJump do školní sítě a s možností se připojit rovnou na zařízení.
Makefile vychází z šablony mzapo_template.
Podrobné informace o způsobech připojení a detailního využití připraveného Makefilu je možné dohledat v dokumnetaci předmětu: https://cw.fel.cvut.cz/wiki/courses/b35apo/documentation/mz_apo-howto/start.
Program je kompilován gcc kompilátorem s následujícími flagy.
CC = arm-linux-gnueabihf-gcc
CXX = arm-linux-gnueabihf-g++
CPPFLAGS = -I .
CFLAGS =-g -std=gnu99 -O1 -Wall
CXXFLAGS = -g -std=gnu++11 -O1 -Wall
LDFLAGS = -lrt -lpthread -pthread
Ke kompilaci na Ubuntu/Debina systému je třeba mít naistalovaný křížový kompilátor.
sudo apt install crossbuild-essential-armhf
Pokud budete upravovat nějaký ze souborů nebo přidávat vlastní, je třeba mít přidané všechny soubory ke kompilaci.
SOURCES = apoman.c mzapo_phys.c mzapo_parlcd.c update_peripherals.c text_fb.c map_from_template.c map_to_fb.c draw_shapes.c
SOURCES += terminal_read.c pacman.c ghost.c
SOURCES += font_prop14x16.c font_rom8x16.c
SOURCES += map_circles.c map_conch.c map_star.c
SOURCES += menu_utilities.c
SOURCES += final_score.c
SOURCES += game.c
Název výsledného binárního souboru je definován tímto příkazem:
TARGET_EXE = apoman
Způsobů, jak pracovat se zařízením, je mnoho. My doporučujeme využít tzv. ProxyJumpu, který jsme během vývoje používali. Pojďme si představit jednotlivé doporučené přístupy.
Rád bych upozornil, že tato část je rychlým srhnutí poskytnuté dokumentace dostupné na stránkách předmětu (https://cw.fel.cvut.cz/wiki/courses/b35apo/documentation/mz_apo-howto/start).
Prvním způsobem je propojit se přes tzv. ProxyJump. Je vhodné rovnou do Makefilu vyplnit cílovou IP adresu zařízení
TARGET_IP ?= 192.168.202.xxx
a vyplnit své uživatelské jméno s přístupem k ssh klíči (k školnímu serveru).
SSH_OPTIONS= -i ~/.ssh/mzapo-root-key -o 'ProxyJump=username@postel.felk.cvut.cz'
Předejte tak zbytečnému zablokování ze strany školního serveru při opakovaném a častém připojování. Přístup pro vás bude snazší.
Další možností připojení je využít trvalé SSH spojení na server postel.felk.cvut.cz
. Tento způsob zaručí, že je menší riziko, aby naše připojení bylo vyhodnoceno ochranou serveru jako útok. Opětovaná připojování jsou tak tedy mnohem rychlejší.
Tunel vytvoříme příkazem
ssh -nNT ctu_login@postel.felk.cvut.cz -L 2222:192.168.202.xxx:22
A v Makefilu je třeba povolit řádku s následujícími příkazy:
TARGET_IP = 127.0.0.1
SSH_OPTIONS=-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "Port=2222"
SSH_GDB_TUNNEL_REQUIRED=y
Třetím možným způsobem je se připojit na školní PC, který je ve stejné síti jako používaný přípravek.
Zde stačí pouze zavolat příkaz, který nám kód zkompiluje a rovnou spustí na zařízení s danou IP adresou:
make TARGET_IP=192.168.202.xx run
Další částí Makefilu jsou příkazy, které lze při práci s aplikací využít. Pojďme si představit ty nejvíce elementární.
make
make clean
make run