14.2. Постачання застосунку¶
Працюючий скрипт на столі і готовий продукт – це не одне й те саме. Камера, що йде в поле, повинна працювати самостійно протягом усього терміну служби продукту – місяці, роки – без оператора за консоллю, без підключеного IDE та без фахівця Python поруч, коли щось перестає працювати. Сторінки цього розділу описують, що змінюється в застосунку, коли ціль – готовий продукт, а не демонстрація за столом.
14.2.1. Передстартовий перелік¶
Перш ніж камера покине стенд, ось короткий список речей, які мають бути виконані:
Код застосунку міститься у збірці, а не у файловій системі. Заморожені модулі та образ ROMFS охоплюють код і ресурси. Флеш-пам’ять та картка SD призначені лише для стану виконання та журналів. Кінцевий користувач не може редагувати, видаляти або замінювати застосунок без перепрошивки.
Watchdog працює безперервно.
machine.WDTзапускається на початкуmain.pyта скидається на кожній ітерації основного циклу. Будь-яке зависання довше за налаштований тайм-аут призводить до апаратного скидання і камера відновлює роботу.Застосунок веде журнал у відновлюване місце призначення. Бібліотека
loggingзаписує рядки з рівнем, часовою міткою та місцем призначення, з якого можна відновити дані в полі з картки SD.print()призначений лише для розробки – його стандартне місце призначення – USB stdout, який жоден готовий продукт не читає.Флеш-пам’ять і картка SD розглядаються як потенційно ненадійні. Внутрішня флеш-пам’ять зберігає невеликі записи фіксованого розміру (конфігурація, останнє відоме калібрування); картка SD зберігає великі змінні файли (зображення, журнали); операції з обома обгортаються в обробку помилок, і застосунок має визначений запасний варіант на випадок недоступності будь-якого з них.
14.2.2. Вбудовування застосунку у збірку¶
Два взаємодоповнюючі механізми розміщують файли в образі мікропрограми: