14.2. Xuất xưởng ứng dụng

Một tập lệnh hoạt động trên bàn thử nghiệm và một sản phẩm xuất xưởng không phải là một. Camera đưa ra thực địa phải tự vận hành trong suốt thời gian sản phẩm được lắp đặt -- tháng, năm -- không có người vận hành tại bàn điều khiển, không có IDE được kết nối, và không có chuyên gia Python nào ở gần khi có sự cố. Các trang trong phần này trình bày những gì thay đổi về ứng dụng khi mục tiêu là sản phẩm xuất xưởng thay vì demo tại bàn.

14.2.1. Danh sách kiểm tra trước khi xuất xưởng

Trước khi camera rời khỏi bàn thử nghiệm, đây là danh sách ngắn các điều cần đảm bảo:

  • Mã ứng dụng nằm trong build, không phải trên hệ thống tệp. Các module đóng băng và ảnh ROMFS bao gồm mã và tài nguyên. Bộ nhớ flash và thẻ SD chỉ dành cho trạng thái runtime và tệp log. Người dùng cuối không thể chỉnh sửa, xóa, hoặc thay thế ứng dụng mà không reflash.

  • Watchdog chạy liên tục. machine.WDT được khởi động ở đầu main.py và được cấp nguồn mỗi lần lặp vòng lặp chính. Bất kỳ treo máy nào dài hơn timeout đã cấu hình đều gây ra hardware reset và camera khởi động lại.

  • Ứng dụng ghi log đến đích có thể khôi phục. Thư viện logging ghi các bản ghi với cấp độ, dấu thời gian, và đích mà thực địa có thể khôi phục từ thẻ SD. print() chỉ dùng trong quá trình phát triển -- đích mặc định của nó là USB stdout, mà không sản phẩm xuất xưởng nào đọc.

  • Flash và SD được xử lý như có thể thất bại. Flash nội bộ lưu trữ các bản ghi nhỏ có kích thước cố định (cấu hình, hiệu chỉnh cuối cùng đã biết); SD lưu các tệp biến đổi lớn (ảnh chụp, tệp log); thao tác trên cả hai được bọc trong xử lý lỗi, và ứng dụng có phương án dự phòng được xác định khi cả hai không khả dụng.

14.2.2. Đưa ứng dụng vào build

Hai cơ chế bổ sung nhau đặt tệp vào ảnh firmware: