14.2. Dodání aplikace

Funkční skript na stole a dodaný produkt nejsou totéž. Kamera, která jde do terénu, musí běžet samostatně po celou dobu, kdy je produkt nainstalován – měsíce, roky – bez operátora u konzole, bez připojeného IDE a bez Python experta nablízku, když něco přestane fungovat. Stránky v této sekci popisují, co se na aplikaci mění, když je cílem dodaný produkt namísto ukázky na stole.

14.2.1. Předletový kontrolní seznam

Než kamera opustí pracovní stůl, toto je krátký seznam věcí, které by měly platit:

  • Aplikační kód je v sestavení, nikoli na souborovém systému. Zmrazené moduly a obraz ROMFS pokrývají kód a aktiva. Úložiště ve flash paměti a na SD kartě slouží pouze pro běhový stav a soubory protokolů. Koncový uživatel nemůže aplikaci upravovat, mazat ani nahrazovat bez opětovného flashování.

  • Watchdog běží nepřetržitě. machine.WDT se spustí na začátku main.py a je krmen jednou za každou iteraci hlavní smyčky. Jakékoli zaseknutí delší než nakonfigurovaný časový limit způsobí hardwarový reset a kamera se znovu spustí.

  • Aplikace zapisuje protokoly do obnovitelného cíle. Knihovna logging zapisuje záznamy s úrovní, časovou značkou a cílem, který lze v terénu obnovit z SD karty. print() je pouze pro dobu vývoje – jeho výchozím cílem je USB stdout, který žádný dodaný produkt nečte.

  • S flash pamětí a SD kartou se zachází jako s něčím, co může selhat. Interní flash paměť uchovává malé záznamy pevné velikosti (konfigurace, poslední známá kalibrace); SD karta uchovává objemné soubory proměnné velikosti (zachycené obrazy, soubory protokolů); operace na obou jsou obaleny ošetřením chyb a aplikace má definovaný záložní postup, pokud je kterákoli z nich nedostupná.

14.2.2. Zapečení aplikace do sestavení

Dva vzájemně se doplňující mechanismy vkládají soubory do obrazu firmwaru: