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):