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: