14.5. Recapitulare

Ați parcurs ciclul de viață al unei camere care trece de la un script funcțional pe banc la un produs livrat:

  • Versiuni de firmware personalizate – mediul de dezvoltare, construirea imaginii de firmware din sursă, programarea acesteia pe o cameră și calea de depanare de la VS Code Cortex-Debug la gdbrunner din linia de comandă atunci când ceva nu este în regulă pe partea de firmware.

  • Livrarea aplicației – încorporarea codului aplicației în firmware prin module înghețate, încorporarea resurselor într-o imagine ROMFS și ordinea de căutare care determină ce copie a unui fișier încarcă efectiv runtime-ul la pornire. Împărțirea care rezultă: boot.py pentru configurarea mediului anterior REPL, main.py ca punct de intrare al aplicației, main.py înghețat pentru intrare și ROMFS pentru restul.

  • Pregătirea pentru producție – biblioteca logging care scrie într-o cale cunoscută, un machine.WDT alimentat o dată la fiecare iterație a buclei principale, un try / except de nivel superior care transformă blocările în evenimente jurnalizate în loc de resetări, igiena sistemului de fișiere care menține operațiile cu fișiere rapide pe măsură ce aplicația acumulează înregistrări de-a lungul lunilor pe teren și – atunci când produsul o impune – protecția împotriva citirii memoriei flash.

  • Material avansat – certificate TLS pentru camerele care trebuie să se autentifice la serviciile de rețea și să cripteze traficul cu acestea.

O cameră livrată are toate acestea pregătite: codul aplicației sale rulează din imaginea de firmware, watchdog-ul său este alimentat o dată la fiecare iterație a buclei principale, jurnalul său ajunge într-un director datat pe cardul SD și – atunci când produsul o impune – memoria sa flash a fost blocată împotriva citirii.

14.5.1. Încotro de aici

Producția este ultimul capitol al tutorialului. De aici, documentația se împarte în material de referință:

  • Referința bibliotecii este perspectiva alfabetică de tip „care este numele exact al acestui apel” asupra fiecărui modul pe care camera îl expune – machine, logging, os, csi, image, ml și restul.

  • Paginile de referință rapidă pentru fiecare placă acoperă specificul fiecărei camere din gama de produse OpenMV – configurațiile de pini, magistralele care pot fi montate, ID-urile plăcilor, disponibilitatea perifericelor și micile diferențe care contează atunci când aplicația trebuie să ajungă pe o anumită componentă.

  • Paginile de referință pentru senzori și paginile de referință pentru shield-uri acoperă senzorii de imagine individuali și shield-urile suplimentare pe care le poate purta o cameră – specificațiile pentru fiecare componentă, configurațiile de pini și notele de care aplicația are nevoie atunci când alege senzori și shield-uri pentru o configurație.

  • Referința limbajului MicroPython acoperă limbajul în sine – diferențele de sintaxă față de CPython, particularitățile de implementare care contează atunci când un script se află la limita dintre cele două și referința pentru assembler-ul inline pentru cazul rar în care Python este prea lent.

Tutorialul este calea de la „am o cameră nouă în mână” la „am livrat un produs”. De aici, camera este o componentă a unui sistem mai amplu de care răspunde aplicația, iar munca aparține aplicației în sine.