7.5. ROMFS¶
ROMFS je datotečni sustav samo za čitanje ugrađen u kameru tijekom kompilacije i montiran na /rom/. Blokovi datoteka borave u flash memoriji i mapirani su u adresni prostor, pa otvaranje datoteke tamo izlaže njezine bajtove izravno iz flash memorije bez kopiranja u RAM. Modeli, datoteke s oznakama i Haar Cascade tipičan su sadržaj.
7.5.1. Zašto modeli borave ovdje¶
Dva razloga. Prvi je već spomenuti kompromis s RAM-om: model na /rom/ čita se na licu mjesta iz flash memorije i ne troši RAM osim svoje tensor arene, dok se model na /sdcard/ kopira u RAM pri učitavanju i troši veličinu datoteke uz arenu. Na manjim kamerama ta je razlika često razlika između toga da stane i da ne stane.
Drugi je NPU. N6-ov NPU i Ethos-U na AE3 očekuju svoje težine u memorijski adresabilnom području s pravilnim poravnanjem, a alati za izgradnju koji kompiliraju model za te akceleratore (STEdgeAI za N6-ov NPU, Vela za AE3-ov Ethos-U) smještaju rezultat u ROMFS s tim rasporedom. Model učitan iz /sdcard/ završava u RAM-u na hrpi, što je u redu za CPU putanje koje koriste H7 i RT1062, ali odustaje od putanje izravno-iz-flash-memorije za NPU oko koje su brže kamere dizajnirane.
7.5.2. Normalan MicroPython datotečni sustav¶
Tijekom izvođenja ROMFS se ponaša kao svaki drugi montirani MicroPython datotečni sustav: os.listdir() nabraja /rom/, builtins.open() otvara datoteke u njemu, a putanja ispod njega prosljeđuje se bilo kojem API-ju koji prima putanju. Jedino ograničenje je da skripte ne mogu pisati u njega – particija je samo za čitanje tijekom izvođenja.
OpenMV IDE može uređivati ROMFS. Izlaže sadržaj particije u svom pregledniku datoteka i podržava dodavanje, uklanjanje i zamjenu datoteka tamo na isti način kao i za SD karticu. Namjena je dodavanje prilagođenih modela, datoteka s oznakama, pomoćnih skripti ili bilo kojeg drugog resursa koji aplikacija treba isporučiti s kamerom. Sve što se kroz IDE ubaci u /rom/ dobiva istu pohranu izravno-iz-flash-memorije, dostupnu NPU-u, kakvu imaju i prethodno učitani modeli.