7.5. ROMFS

ROMFS je souborový systém pouze pro čtení zabudovaný do kamery v době kompilace a připojený na /rom/. Bloky souborů žijí ve flash paměti a jsou namapovány do adresního prostoru, takže otevření souboru tam vystaví jeho bajty přímo z flash paměti bez kopie do RAM. Typickým obsahem jsou modely, soubory se štítky a kaskády Haar.

7.5.1. Proč zde modely žijí

Dva důvody. Prvním je již zmíněný kompromis s RAM: model na /rom/ se čte přímo na místě z flash paměti a nestojí žádnou RAM nad rámec své tensor areny, zatímco model na /sdcard/ se při načtení kopíruje do RAM a stojí velikost souboru navíc k areně. Na menších kamerách je tento rozdíl často rozdílem mezi tím, zda se model vejde, nebo ne.

Druhým je NPU. NPU čipu N6 a Ethos-U na AE3 očekávají své váhy v paměťově adresovatelné oblasti se správným zarovnáním a nástroje sestavení, které kompilují model pro tyto akcelerátory (STEdgeAI pro NPU čipu N6, Vela pro Ethos-U na AE3), umisťují výsledek do ROMFS s tímto rozvržením. Model načtený z /sdcard/ skončí v haldové RAM, což je v pořádku pro cesty přes CPU, jež používají H7 a RT1062, ale vzdává se cesty NPU přímo z flash paměti, kolem níž byly navrženy rychlejší kamery.

7.5.2. Běžný souborový systém MicroPython

Za běhu se ROMFS chová jako jakýkoli jiný připojený souborový systém MicroPython: os.listdir() vyjmenuje /rom/, builtins.open() v něm otevírá soubory a cesta pod ním projde jakémukoli API, jež cestu přijímá. Jediným omezením je, že do něj skripty nemohou zapisovat – oddíl je za běhu pouze pro čtení.

IDE ROMFS upravovat může. Vystavuje obsah oddílu ve svém prohlížeči souborů a podporuje přidávání, odebírání a nahrazování souborů v něm stejným způsobem jako u SD karty. Zamýšleným použitím je přidávat vlastní modely, soubory se štítky, pomocné skripty nebo jakýkoli jiný zdroj, který aplikace potřebuje dodávat s kamerou. Cokoli vložené do /rom/ přes IDE získá stejné úložiště přímo z flash paměti přístupné pro NPU, jaké mají předem nahrané modely.