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

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

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