14.2. Mengirimkan aplikasi¶
Skrip yang berfungsi di meja kerja dan produk yang dikirimkan bukanlah hal yang sama. Kamera yang masuk ke lapangan harus berjalan sendiri selama produk terpasang -- berbulan-bulan, bertahun-tahun -- tanpa operator di konsol, tanpa IDE yang terpasang, dan tanpa ahli Python di dekatnya ketika sesuatu berhenti bekerja. Halaman-halaman di bagian ini mencakup apa yang berubah tentang aplikasi ketika tujuannya adalah produk yang dikirimkan bukan demo di meja kerja.
14.2.1. Daftar periksa sebelum pengiriman¶
Sebelum kamera meninggalkan meja kerja, ini adalah daftar singkat hal-hal yang harus benar:
Kode aplikasi ada di dalam build, bukan di filesystem. Modul frozen dan citra ROMFS mencakup kode dan aset. Penyimpanan flash dan kartu SD hanya untuk status runtime dan berkas log saja. Pengguna akhir tidak dapat mengedit, menghapus, atau mengganti aplikasi tanpa melakukan reflash.
Watchdog berjalan terus-menerus.
machine.WDTdimulai di bagian atasmain.pydan diberi makan sekali per iterasi loop utama. Hang yang lebih lama dari timeout yang dikonfigurasi menyebabkan hard reset dan kamera kembali menyala.Aplikasi mencatat log ke tujuan yang dapat dipulihkan. Library
loggingmenulis record dengan level, timestamp, dan tujuan yang dapat dipulihkan dari lapangan dari kartu SD.print()hanya untuk waktu pengembangan -- tujuan defaultnya adalah USB stdout, yang tidak dibaca oleh produk yang dikirimkan mana pun.Flash dan SD diperlakukan sebagai yang dapat gagal. Flash internal menyimpan record berukuran tetap yang kecil (konfigurasi, kalibrasi terakhir yang diketahui); SD menyimpan berkas variabel yang besar (tangkapan citra, berkas log); operasi pada keduanya dibungkus dalam penanganan error, dan aplikasi memiliki fallback yang ditentukan saat salah satunya tidak tersedia.
14.2.2. Memanggang aplikasi ke dalam build¶
Dua mekanisme pelengkap menempatkan berkas ke dalam citra firmware: