7.5. ROMFS¶
ROMFS היא מערכת קבצים לקריאה בלבד הבנויה לתוך המצלמה בזמן הקומפילציה ומעוגנת ב-/rom/. בלוקי הקבצים שוכנים בזיכרון הפלאש (flash) וממופים אל מרחב הכתובות, כך שפתיחת קובץ שם חושפת את הבייטים שלו ישירות מזיכרון הפלאש ללא העתקה ל-RAM. מודלים, קובצי תוויות, ומפלי Haar הם התוכן האופייני.
7.5.1. מדוע מודלים שוכנים כאן¶
שתי סיבות. הראשונה היא ההתחשבנות על ה-RAM שכבר צוינה: מודל שב-/rom/ נקרא במקומו מזיכרון הפלאש (flash) ואינו עולה RAM מעבר לזירת הטנזורים שלו, בעוד מודל שב-/sdcard/ מועתק אל ה-RAM בזמן הטעינה ועולה את גודל הקובץ נוסף על הזירה. במצלמות הקטנות יותר, ההפרש הזה הוא לעיתים קרובות ההבדל בין להיכנס ללא להיכנס לזיכרון.
השנייה היא ה-NPU. ה-NPU של ה-N6 וה-Ethos-U שב-AE3 מצפים שמשקליהם יהיו באזור הניתן למיעון בזיכרון עם היישור הנכון, וכלי הבנייה המקמפלים מודל עבור מאיצים אלו (ST Edge AI עבור ה-NPU של ה-N6, Vela עבור ה-Ethos-U של ה-AE3) מציבים את התוצאה ב-ROMFS עם הפריסה הזו. מודל הנטען מ-/sdcard/ נוחת ב-RAM של הערימה (heap), מה שמתאים למסלולי ה-CPU שבהם משתמשים ה-H7 וה-RT1062, אך מוותר על מסלול ה-NPU הישיר-מזיכרון-הפלאש שסביבו עוצבו המצלמות המהירות יותר.
7.5.2. מערכת קבצים רגילה של MicroPython¶
בזמן ריצה ROMFS מתנהגת כמו כל מערכת קבצים מעוגנת אחרת של MicroPython: os.listdir() מונה את /rom/, builtins.open() פותחת בה קבצים, ונתיב תחתיה מועבר לכל API המקבל נתיב. המגבלה היחידה היא שסקריפטים אינם יכולים לכתוב אליה – המחיצה היא לקריאה בלבד בזמן ריצה.
ה-IDE כן יכול לערוך את ROMFS. הוא חושף את תוכן המחיצה בדפדפן הקבצים שלו ותומך בהוספה, הסרה, והחלפה של קבצים שם באותו אופן שבו הוא עושה זאת עבור כרטיס ה-SD. השימוש המיועד הוא להוספת מודלים מותאמים אישית, קובצי תוויות, סקריפטי עזר, או כל משאב אחר שהיישום צריך לשלוח עם המצלמה. כל דבר שמושלך אל /rom/ דרך ה-IDE מקבל את אותו אחסון ישיר-מזיכרון-הפלאש, נגיש ל-NPU, שיש למודלים שנטענו מראש.