14.2. Sovelluksen toimittaminen#
Toimiva skripti työpöydällä ja toimitettu tuote eivät ole sama asia. Kentälle menevän kameran on pystyttävä toimimaan omillaan niin kauan kuin tuote on asennettuna – kuukausia, vuosia – ilman operaattoria konsolilla, ilman liitettyä IDE:tä ja ilman lähellä olevaa Python-asiantuntijaa, kun jokin lakkaa toimimasta. Tämän osion sivut käsittelevät sitä, mikä muuttuu sovelluksessa, kun tavoitteena on toimitettu tuote eikä työpöytädemo.
14.2.1. Esitarkistuslista#
Ennen kuin kamera lähtee työpöydältä, tässä on lyhyt lista asioista, joiden tulisi olla totta:
Sovelluskoodi on käännöksessä, ei tiedostojärjestelmässä. Jäädytetyt moduulit ja ROMFS-levykuva kattavat koodin ja resurssit. Flash- ja SD-korttitallennus ovat vain ajonaikaista tilaa ja lokitiedostoja varten. Loppukäyttäjä ei voi muokata, poistaa tai korvata sovellusta ilman uudelleenflashausta.
Vahtikoira on jatkuvasti käynnissä.
machine.WDTkäynnistetäänmain.py-tiedoston alussa ja ruokitaan kerran kutakin pääsilmukan iteraatiota kohden. Mikä tahansa määritettyä aikakatkaisua pidempi jumiutuminen aiheuttaa laitteistonollauksen, ja kamera palaa toimintaan.Sovellus kirjaa lokia palautettavissa olevaan kohteeseen.
logging-kirjasto kirjoittaa tietueita, joissa on taso, aikaleima ja kohde, jonka kenttä voi palauttaa SD-kortilta.print()on vain kehitysaikaista – sen oletuskohde on USB:n stdout, jota mikään toimitettu tuote ei lue.Flashia ja SD-korttia kohdellaan epäonnistumiskykyisinä. Sisäinen flash-muisti pitää sisällään pieniä kiinteäkokoisia tietueita (konfiguraatio, viimeisin tunnettu kalibrointi); SD-kortti pitää sisällään suuria vaihtelevankokoisia tiedostoja (kuvakaappaukset, lokitiedostot); kummankin operaatiot kääritään virheenkäsittelyyn, ja sovelluksella on määritelty varatoiminto, kun kumpikaan ei ole käytettävissä.
14.2.2. Sovelluksen leipominen käännökseen#
Kaksi toisiaan täydentävää mekanismia laittavat tiedostot laiteohjelmiston levykuvaan: