7.5. ROMFS¶
ROMFS – це файлова система лише для читання, вбудована в камеру під час компіляції та підключена за адресою /rom/. Блоки файлів зберігаються у флеш-пам’яті та відображаються в адресний простір, тому відкриття файлу там надає його байти безпосередньо з флеш-пам’яті без копіювання в оперативну пам’ять. Типовий вміст: моделі, файли міток та каскади Хаара.
7.5.1. Чому моделі зберігаються тут¶
Дві причини. Перша – вже згаданий компроміс щодо оперативної пам’яті: модель на /rom/ зчитується безпосередньо з флеш-пам’яті і не потребує оперативної пам’яті понад тензорну арену, тоді як модель на /sdcard/ копіюється в оперативну пам’ять під час завантаження і займає розмір файлу понад арену. На менших камерах ця різниця часто є різницею між тим, що поміщається, і тим, що не поміщається.
Друга – NPU. NPU чіпа N6 та Ethos-U на AE3 очікують свої ваги в регіоні пам’яті з адресацією та правильним вирівнюванням, і інструменти компіляції, що перетворюють модель для цих прискорювачів (STEdgeAI для NPU N6, Vela для Ethos-U на AE3), розміщують результат у ROMFS з відповідним компонуванням. Модель, завантажена з /sdcard/, потрапляє в динамічну пам’ять, що підходить для шляхів CPU, які використовують H7 та RT1062, але позбавляє прямого з флеш-пам’яті шляху NPU, навколо якого були спроєктовані швидші камери.
7.5.2. Звичайна файлова система MicroPython¶
Під час виконання ROMFS поводиться як будь-яка інша підключена файлова система MicroPython: os.listdir() перелічує /rom/, builtins.open() відкриває файли в ній, а шлях під нею передається будь-якому API, що приймає шлях. Єдине обмеження – скрипти не можуть записувати до неї: розділ доступний лише для читання під час виконання.
IDE може редагувати ROMFS. Він відображає вміст розділу у своєму файловому браузері та підтримує додавання, видалення та заміну файлів там так само, як і для SD-карти. Призначення – додавання власних моделей, файлів міток, допоміжних скриптів або будь-яких інших ресурсів, які додаток має постачати разом із камерою. Усе, що потрапляє до /rom/ через IDE, отримує таке саме сховище з прямим доступом із флеш-пам’яті з підтримкою NPU, як і попередньо завантажені моделі.