14.2. 发布应用¶
工作台上能运行的脚本,和一件已发布的产品,并不是一回事。投入现场的摄像头必须在产品安装的整个期间——数月、数年——独立运行,控制台前没有操作员,没有连接 IDE,出问题时身边也没有 Python 专家。本节的各页介绍当目标是 已发布的产品 而非 桌面演示 时,应用会有哪些变化。
14.2.1. 起飞前检查清单¶
在摄像头离开工作台之前,下面是一份应当成立的简短清单:
应用代码位于构建中,而非文件系统上。 冻结模块和 ROMFS 镜像涵盖代码与资产。闪存和 SD 卡存储仅用于运行时状态和日志文件。终端用户在不重新烧录的情况下无法编辑、删除或替换应用。
看门狗持续运行。
machine.WDT在main.py的开头启动,并在主循环每次迭代时喂狗一次。任何超过所配置超时时间的卡死都会触发硬件复位,使摄像头重新启动。应用记录日志到可恢复的目标。
logging库写入带有级别、时间戳以及可从 SD 卡在现场恢复的目标的记录。print()仅用于开发期——它的默认目标是 USB 标准输出,而没有任何已发布的产品会读取它。闪存和 SD 卡都被当作可能失败来对待。 内部闪存保存固定大小的小型记录(配置、最近一次已知的标定值);SD 卡保存体积庞大的可变文件(图像采集、日志文件);对二者的操作都包裹在错误处理中,并且当其中任一不可用时,应用都有明确定义的回退方案。
14.2.2. 将应用烘焙进构建¶
有两种互补的机制可将文件放入固件镜像: