14.1.1.6. การกู้คืนบูตโหลดเดอร์#

การแฟลชเฟิร์มแวร์ตามปกติไม่เคยแตะต้องบูตโหลดเดอร์ ดังนั้นการอัปเดต เฟิร์มแวร์ที่ถูกขัดจังหวะ แทบทุกครั้งสามารถกู้คืนได้: เรียกคำสั่งแฟลชเดิมจาก การแฟลชเฟิร์มแวร์ อีกครั้ง (dfu-util -w จะรอให้อุปกรณ์พร้อม) หรือเรียก Load Custom Firmware อีกครั้งในขณะที่กล้องยังอยู่ในบูตโหลดเดอร์ หน้านี้ครอบคลุมกรณีที่พบได้น้อยกว่าซึ่ง บูตโหลดเดอร์เอง ได้รับความเสียหายและกล้องไม่สามารถแสดงตัวเป็นอุปกรณ์ DFU เมื่อรีเซ็ต

บูตโหลดเดอร์อยู่ในบริเวณแฟลชแยกต่างหากจากเฟิร์มแวร์และระบบไฟล์ และกล้องทุกรุ่นที่มีตราสินค้า OpenMV มีเส้นทางฮาร์ดแวร์สำรอง ดังนั้นกล้องจึงยากที่จะทำให้ไม่สามารถกู้คืนได้อย่างถาวร ยกเว้นบอร์ด Arduino เท่านั้น -- บูตโหลดเดอร์ของ Arduino เป็นแบบคงที่และผู้ใช้ไม่สามารถกู้คืนเองได้

OpenMV IDE ทำให้กระบวนการกู้คืนทั้งหมดเหล่านี้เป็นอัตโนมัติ โดยแนะนำคุณผ่านขั้นตอนฮาร์ดแวร์ (จัมเปอร์ สวิตช์ ปุ่ม) ตลอดกระบวนการ ส่วนต่าง ๆ ด้านล่างบันทึกขั้นตอนสำหรับแต่ละกลุ่มกล้อง เพื่อให้คุณสามารถดำเนินการกู้คืนด้วยตนเองได้

14.1.1.6.1. กล้อง STM32 (จัมเปอร์ BOOT--RST)#

สำหรับกล้อง OpenMV รุ่น STM32 (M4, M7, H7, H7 Plus, Pure Thermal):

  1. ถอดสายกล้องออก

  2. ต่อสายจัมเปอร์ระหว่างพิน BOOT และ RST

  3. เชื่อมต่อใหม่ กล้องจะแสดงตัวเป็นอุปกรณ์ ST system DFU (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.6.2. OpenMV Cam N6 (จัมเปอร์ BOOT--VCC)#

  1. ถอดสายกล้องออก

  2. ต่อสายจัมเปอร์ระหว่างพิน BOOT และ VCC

  3. เชื่อมต่อใหม่ กล้องจะแสดงตัวเป็นอุปกรณ์ ST system DFU (0483:df11) โดยไม่ขึ้นกับบูตโหลดเดอร์ที่เสียหาย

  4. แฟลชใหม่ด้วย STM32CubeProgrammer (รวมอยู่ใน OpenMV SDK) โดยใช้ตัวบ่งชี้ flash-layout ที่ส่งมาพร้อมกับ bootloader.bin -- จะเขียนทับบูตโหลดเดอร์ระยะแรก ตัวโหลด external-flash และบูตโหลดเดอร์:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. ถอดจัมเปอร์และเชื่อมต่อใหม่

  6. แฟลชเฟิร์มแวร์ตามปกติ (ดู การแฟลชเฟิร์มแวร์)

14.1.1.6.3. OpenMV Cam RT1062#

การสร้าง secure bootloader ของ RT1062 ขึ้นใหม่ต้องการเข้าสู่โหมด ROM serial-download (SDP) ของชิปด้วยจัมเปอร์ วาง RAM flashloader จากนั้นเขียนทับ flash configuration block, SBL และเฟิร์มแวร์ ขั้นตอนดำเนินการด้วยตนเอง:

  1. ถอดสายกล้อง ต่อจัมเปอร์ที่พิน SBL และ 3.3V แล้วเชื่อมต่อใหม่ ชิปจะแสดงตัวในโหมด SDP ROM (0x1FC9:0x0135)

  2. วางและเริ่ม RAM flashloader:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. กล้องจะตอบสนองในฐานะ flashloader (0x15A2:0x0073) กำหนดค่า external flash เขียน flash configuration block จากนั้นเขียน 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. เขียนเฟิร์มแวร์และตั้งค่า boot-source fuse เพื่อให้ชิปบูต SBL ใหม่จาก external flash:

    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. ถอดจัมเปอร์และปิดแล้วเปิดกล้องใหม่

Warning

efuse-program-once 0x06 00000010 คือการเขียน fuse แบบ ครั้งเดียวและไม่สามารถย้อนกลับได้ ซึ่งตั้งค่าให้อุปกรณ์บูตจาก external flash นี่เป็นอีกเหตุผลที่ควรให้ OpenMV IDE ดำเนินการกู้คืนบูตโหลดเดอร์ RT1062 แทนการรันลำดับขั้นตอนด้วยตนเอง

14.1.1.6.4. OpenMV AE3#

secure bootloader ของ AE3 ไม่ ได้รับการกู้คืนผ่าน USB DFU แต่จะถูกเขียนทับเข้า MRAM ของชิปด้วย Alif Semiconductor's SE Tools (รวมอยู่กับ OpenMV IDE) ผ่านการเชื่อมต่อ serial ISP นี่เป็นกระบวนการแบบโต้ตอบและใช้สำหรับกู้คืนเท่านั้น -- ไม่ใช่วิธีแฟลชตามปกติ -- และมีความเสี่ยงเกิดข้อผิดพลาดหากทำด้วยตนเอง จากทุกอย่างในหน้านี้ นี่คือสิ่งที่ควรปล่อยให้ OpenMV IDE จัดการ

การเชื่อมต่อ SE Tools สื่อสารกับ AE3 ผ่านพอร์ต serial ISP ของ debug adapter -- อินเทอร์เฟซ FTDI 0403:6015 หรือ CH340 1A86:55D3 ร่วมกับ J-Link การกู้คืนต้องวางอุปกรณ์ใน recovery mode: เปิดสวิตช์กู้คืนบนบอร์ด

SE Tools OpenMV IDE รวมไฟล์ปฏิบัติการ Alif เหล่านี้ไว้ด้วย โดยใช้ไฟล์กำหนดค่าร่วมกันสองไฟล์ -- isp_config_data.cfg และ global-cfg.db -- ที่สร้างโดย maintenance เมื่อเชื่อมต่อครั้งแรก:

เครื่องมือ

วัตถุประสงค์

maintenance

ตรวจสอบ Secure Enclave (maintenance -opt sesbanner อ่านเวอร์ชัน) และวางอุปกรณ์ใน recovery mode

updateSystemPackage

อัปเดต Secure Enclave system package เมื่อเวอร์ชันเก่ากว่าที่เฟิร์มแวร์ต้องการ

app-gen-toc

สร้างภาพ table-of-contents (TOC) (ใช้สำหรับการเขียนเฉพาะแอปพลิเคชัน)

app-write-mram

เขียนภาพลงใน MRAM -- ขั้นตอนที่กู้คืนบูตโหลดเดอร์

ขั้นตอน:

  1. เชื่อมต่อกับ AE3 ด้วย maintenance; โปรแกรมจะถามพอร์ตซีเรียลและประเภทอุปกรณ์ สร้าง isp_config_data.cfg และ global-cfg.db สำหรับเครื่องมืออื่น ๆ

  2. หาก Secure Enclave system package ล้าสมัย 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. ปิดแล้วเปิดกล้องใหม่และปิดสวิตช์กู้คืนกลับ

Note

OpenMV IDE จัดการกับสถานการณ์ที่ซับซ้อนกว่านี้มาก -- Secure Enclave firmware ที่เสียหาย บูตโหลดเดอร์ที่ผิดพลาด และสถานะความล้มเหลวอื่น ๆ แต่ละอย่างต้องการขั้นตอนกู้คืนของตัวเอง และสิ่งต่าง ๆ มากมายอาจผิดพลาดได้ระหว่างทาง หากขั้นตอนด้วยตนเองข้างต้นไม่สามารถนำกล้องกลับมาได้ ให้ใช้ OpenMV IDE เพื่อกู้คืน