14.1.1.5. שחזור המאתחל (bootloader)

צריבת קושחה רגילה לעולם אינה נוגעת במאתחל (bootloader), ולכן עדכון קושחה שנקטע כמעט תמיד ניתן לשחזור: הרץ מחדש את אותה פקודת צריבה מתוך צריבת הקושחה (dfu-util -w ממתין להתקן) או הרץ מחדש את Load Custom Firmware בעוד המצלמה עדיין במאתחל שלה. עמוד זה מכסה את המקרה הנדיר יותר שבו המאתחל עצמו ניזוק והמצלמה כבר אינה מזוהה כהתקן DFU בעת איפוס.

המאתחל (bootloader) שוכן באזור פלאש (flash) נפרד מהקושחה וממערכת הקבצים, ולכל מצלמה הנושאת את המותג OpenMV יש נתיב חומרה לחזרה, ולכן קשה להביא מצלמה למצב בלתי ניתן לשחזור באופן קבוע. לוחות Arduino הם החריג היחיד – המאתחלים שלהם קבועים ואינם ניתנים לשחזור על ידי המשתמש.

OpenMV IDE מבצע אוטומציה של כל הליכי השחזור הללו, ומדריך אותך לאורך שלבי החומרה (גשרים, מתגים, לחצנים) בדרך. הסעיפים שלהלן מתעדים מה הוא עושה עבור כל משפחת מצלמות, למקרה שתרצה להריץ את השחזור בעצמך.

14.1.1.5.1. מצלמות STM32 (גשר BOOT–RST)

עבור מצלמות OpenMV מבוססות STM32 (M4, M7, H7, H7 Plus, Pure Thermal):

  1. נתק את המצלמה.

  2. חבר חוט גשר בין הפינים BOOT ו-RST.

  3. חבר מחדש. המצלמה מזוהה כעת כהתקן ה-DFU של מערכת ST (0483:df11), ללא תלות בקושחה הפגומה.

  4. צרוב מחדש רק את המאתחל – באמצעות Load Custom Firmware של OpenMV IDE עם bootloader.bin, או:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. הסר את הגשר וחבר מחדש.

  6. צרוב את הקושחה כרגיל (ראה צריבת הקושחה).

14.1.1.5.2. OpenMV Cam N6 (גשר BOOT–VCC)

  1. נתק את המצלמה.

  2. חבר חוט גשר בין הפינים BOOT ו-VCC.

  3. חבר מחדש. המצלמה מזוהה כעת כהתקן ה-DFU של מערכת ST (0483:df11), ללא תלות במאתחל הפגום.

  4. צרוב מחדש באמצעות STM32CubeProgrammer (כלול ב-OpenMV SDK), תוך שימוש במתאר פריסת הפלאש המסופק לצד bootloader.bin – הוא כותב מחדש את מאתחל השלב הראשון, את מטעין הפלאש החיצוני ואת המאתחל:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. הסר את הגשר וחבר מחדש.

  6. צרוב את הקושחה כרגיל (ראה צריבת הקושחה).

14.1.1.5.3. OpenMV Cam RT1062

יצירה מחדש של המאתחל המאובטח של ה-RT1062 דורשת כניסה למצב ההורדה הטורית של ה-ROM (SDP) של השבב באמצעות גשר, הכנת מטעין פלאש ב-RAM, ולאחר מכן כתיבה מחדש של בלוק תצורת הפלאש, ה-SBL והקושחה. הרצף הידני:

  1. נתק את המצלמה, גשר את הפינים SBL ו-3.3V, וחבר מחדש. השבב מזוהה במצב SDP ROM (0x1FC9:0x0135).

  2. הכן והפעל את מטעין הפלאש שב-RAM:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. המצלמה עונה כעת כמטעין הפלאש (0x15A2:0x0073). הגדר את הפלאש החיצוני, כתוב את בלוק תצורת הפלאש, ולאחר מכן כתוב את ה-SBL:

    blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xC0000008 word
    blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000
    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60000000 0x1000
    blhost -u 0x15A2,0x0073 -- fill-memory 0x2000 4 0xF000000F word
    blhost -u 0x15A2,0x0073 -- configure-memory 9 0x2000
    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60001000 <sbl_size>
    blhost -u 0x15A2,0x0073 -- write-memory 0x60001000 blhost_flash_loader.bin
    
  4. כתוב את הקושחה והגדר את נתיך מקור האתחול כך שהשבב יאתחל את ה-SBL החדש מהפלאש החיצוני:

    blhost -u 0x15A2,0x0073 -t 120000 -- flash-erase-region 0x60040000 <firmware_size>
    blhost -u 0x15A2,0x0073 -- write-memory 0x60040000 firmware.bin
    blhost -u 0x15A2,0x0073 -- efuse-program-once 0x06 00000010
    blhost -u 0x15A2,0x0073 -- reset
    
  5. הסר את הגשר ובצע מחזור הפעלה למצלמה.

אזהרה

efuse-program-once 0x06 00000010 היא כתיבת נתיך חד-פעמית ובלתי הפיכה שמגדירה את ההתקן לאתחל מפלאש חיצוני. זוהי סיבה נוספת לתת ל-OpenMV IDE לבצע את שחזור המאתחל של ה-RT1062 במקום להריץ את הרצף ידנית.

14.1.1.5.4. OpenMV AE3

המאתחל המאובטח של ה-AE3 אינו משוחזר דרך USB DFU. הוא נכתב מחדש אל ה-MRAM של השבב באמצעות Alif Semiconductor’s SE Tools (מצורפים ל-OpenMV IDE) דרך חיבור ISP טורי. זהו הליך אינטראקטיבי, לשחזור בלבד – לא שיטת צריבה שגרתית – והוא מועד לשגיאות כשמבצעים אותו ידנית; מכל מה שבעמוד זה, זהו ההליך שכדאי להשאיר ל-OpenMV IDE.

חיבור. ה-SE Tools מתקשרים עם ה-AE3 דרך יציאת ה-ISP הטורית של מתאם הניפוי שלו – ממשק FTDI 0403:6015 או CH340 1A86:55D3, יחד עם J-Link. השחזור דורש להעביר את ההתקן למצב שחזור: הפעל את מתג השחזור שעל הלוח.

SE Tools. OpenMV IDE כולל קובצי הרצה של Alif אלה. הם משתפים שני קובצי תצורה – isp_config_data.cfg ו-global-cfg.db – הנוצרים על ידי maintenance בעת החיבור הראשון:

כלי

מטרה

maintenance

שואל את ה-Secure Enclave (maintenance -opt sesbanner קורא את גרסתו) ומעביר את ההתקן למצב שחזור.

updateSystemPackage

מעדכן את חבילת המערכת של ה-Secure Enclave כאשר היא ישנה מהגרסה שהקושחה דורשת.

app-gen-toc

מייצר את תמונת תוכן העניינים (TOC) (משמשת לכתיבת יישום בלבד).

app-write-mram

כותב תמונה/תמונות אל ה-MRAM – השלב שמשחזר את המאתחל.

הליך:

  1. התחבר אל ה-AE3 באמצעות maintenance; הוא מבקש את היציאה הטורית ואת סוג ההתקן, ויוצר את isp_config_data.cfg ו-global-cfg.db עבור הכלים האחרים.

  2. אם חבילת המערכת של ה-Secure Enclave אינה מעודכנת, updateSystemPackage מעדכן אותה; בצע מחזור הפעלה כשתתבקש.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" כותב את המאתחל ואת ה-TOC אל ה-MRAM.

  4. ה-AE3 מזוהה מחדש כהתקן ה-DFU 37C5:96E3. הרץ את צריבת ארבע התמונות הרגילה מתוך OpenMV AE3: dfu-util כדי לטעון את היישום.

  5. בצע מחזור הפעלה למצלמה והחזר את מתג השחזור למצב כבוי.

הערה

OpenMV IDE מטפל בהרבה יותר מהמסלול התקין הזה – קושחת Secure Enclave פגומה, מאתחל לקוי ושאר מצבי הכשל דורשים כל אחד שלבי שחזור משלו, והרבה יכול להשתבש בדרך. אם השלבים הידניים שלמעלה אינם מחזירים את המצלמה לחיים, השתמש ב-OpenMV IDE כדי לשחזר אותה.