14.2. Isporuka aplikacije#

Radna skripta na radnom stolu i isporučeni proizvod nisu ista stvar. Kamera koja ide u upotrebu mora se izvoditi samostalno onoliko dugo koliko je proizvod instaliran – mjesecima, godinama – bez operatera za konzolom, bez priključenog IDE-a i bez stručnjaka za Python u blizini kada nešto prestane raditi. Stranice u ovom odjeljku obrađuju što se mijenja u vezi s aplikacijom kada je cilj isporučeni proizvod umjesto demonstracije na stolu.

14.2.1. Popis za provjeru prije polijetanja#

Prije nego što kamera napusti radni stol, ovo je kratak popis stvari koje bi trebale biti istinite:

  • Aplikacijski kod je u izgradnji, a ne na datotečnom sustavu. Zamrznuti moduli i ROMFS slika pokrivaju kod i resurse. Pohrana na flash memoriji i SD kartici služi samo za stanje tijekom izvođenja i datoteke zapisnika. Krajnji korisnik ne može uređivati, brisati ni zamijeniti aplikaciju bez ponovnog prijenosa na flash.

  • Nadzorni mehanizam radi neprekidno. machine.WDT pokreće se na vrhu main.py i hrani se jednom po iteraciji glavne petlje. Svako zaglavljivanje dulje od konfiguriranog isteka uzrokuje hardversko ponovno postavljanje i kamera se ponovno pokreće.

  • Aplikacija zapisuje na odredište iz kojeg se može oporaviti. Biblioteka logging zapisuje zapise s razinom, vremenskom oznakom i odredištem koje se na terenu može oporaviti sa SD kartice. print() je samo za vrijeme razvoja – njegovo zadano odredište je USB stdout, koji nijedan isporučeni proizvod ne čita.

  • Flash memorija i SD tretiraju se kao da mogu zakazati. Interna flash memorija drži male zapise fiksne veličine (konfiguracija, posljednja poznata kalibracija); SD drži glomazne promjenjive datoteke (snimke slika, datoteke zapisnika); operacije na bilo kojoj od njih obavijene su rukovanjem pogreškama, a aplikacija ima definiranu zamjensku opciju kada bilo koja nije dostupna.

14.2.2. Ugrađivanje aplikacije u izgradnju#

Dva komplementarna mehanizma stavljaju datoteke u sliku ugrađenog programa (firmware):