14.2. การจัดส่งแอปพลิเคชัน

สคริปต์ที่ทำงานได้บนโต๊ะทำงานและผลิตภัณฑ์ที่จัดส่งแล้วไม่ใช่สิ่งเดียวกัน กล้องที่ออกไปใช้งานจริงต้องทำงานด้วยตัวเองตราบเท่าที่ผลิตภัณฑ์ยังติดตั้งอยู่ -- เป็นเดือน, เป็นปี -- โดยไม่มีผู้ควบคุมที่คอนโซล ไม่มี IDE เชื่อมต่อ และไม่มีผู้เชี่ยวชาญ Python อยู่ใกล้ๆ เมื่อมีบางอย่างหยุดทำงาน หน้าในส่วนนี้อธิบายว่าอะไรเปลี่ยนแปลงในแอปพลิเคชันเมื่อเป้าหมายคือ ผลิตภัณฑ์ที่จัดส่ง แทนที่จะเป็น การสาธิตบนโต๊ะ

14.2.1. รายการตรวจสอบก่อนบิน

ก่อนที่กล้องจะออกจากโต๊ะทำงาน นี่คือรายการสั้น ๆ ของสิ่งที่ควรเป็นจริง:

  • โค้ดแอปพลิเคชันอยู่ในการสร้าง ไม่ใช่ในระบบไฟล์ โมดูล frozen และ ROMFS image ครอบคลุมโค้ดและ asset การเก็บข้อมูลแฟลชและ SD card ใช้สำหรับสถานะรันไทม์และไฟล์บันทึกเท่านั้น ผู้ใช้ปลายทางไม่สามารถแก้ไข ลบ หรือแทนที่แอปพลิเคชันได้โดยไม่ต้องแฟลชใหม่

  • Watchdog รันต่อเนื่อง machine.WDT เริ่มต้นที่ด้านบนของ main.py และป้อนทุกรอบของลูปหลัก การค้างใด ๆ ที่นานกว่า timeout ที่กำหนดจะทำให้เกิด hardware reset และกล้องจะกลับมาทำงาน

  • แอปพลิเคชันบันทึกไปยังปลายทางที่กู้คืนได้ ไลบรารี logging เขียนบันทึกพร้อมระดับ, การประทับเวลา, และปลายทางที่สนามสามารถกู้คืนได้จาก SD card print() ใช้สำหรับการพัฒนาเท่านั้น -- ปลายทางเริ่มต้นคือ USB stdout ซึ่งผลิตภัณฑ์ที่จัดส่งไม่มีใครอ่าน

  • แฟลชและ SD ถูกปฏิบัติว่าอาจล้มเหลว แฟลชภายในเก็บบันทึกขนาดคงที่ขนาดเล็ก (การกำหนดค่า, การสอบเทียบล่าสุดที่รู้จัก); SD เก็บไฟล์ขนาดใหญ่ที่ผันแปร (การจับภาพ, ไฟล์บันทึก); การดำเนินการบนทั้งสองถูกห่อในการจัดการข้อผิดพลาด และแอปพลิเคชันมีทางเลือกที่กำหนดเมื่อใดก็ตามที่ไม่พร้อมใช้งาน

14.2.2. การฝังแอปพลิเคชันเข้าสู่การสร้าง

กลไกเสริมสองอย่างวางไฟล์เข้าสู่เฟิร์มแวร์ image: