14.1.1.5. استعادة محمّل الإقلاع

لا يمسّ تحديث البرنامج الثابت العادي محمّل الإقلاع أبدًا، لذا فإن تحديث البرنامج الثابت المُقاطَع قابل للاسترداد دائمًا تقريبًا: أعد تشغيل أمر الفلاش نفسه من تحميل البرنامج الثابت (يَنتظر dfu-util -w ظهور الجهاز) أو أعد تشغيل Load Custom Firmware بينما لا تزال الكاميرا في محمّل الإقلاع. تتناول هذه الصفحة الحالة الأندر التي يكون فيها محمّل الإقلاع نفسه تالفًا ولم تعد الكاميرا تظهر كجهاز DFU عند إعادة التشغيل.

يقع محمّل الإقلاع في منطقة ذاكرة فلاش منفصلة عن البرنامج الثابت ونظام الملفات، ولكل كاميرا تحمل علامة 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. أعد التوصيل. تظهر الكاميرا الآن كجهاز 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)، مستخدمًا واصف تخطيط الفلاش المُرفق مع 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) باستخدام وصلة، ثم تجهيز مُحمّل فلاش في الذاكرة المؤقتة، ثم إعادة كتابة كتلة تكوين الفلاش وSBL والبرنامج الثابت. التسلسل اليدوي:

  1. افصل الكاميرا، وصِل دبوسَي SBL و3.3V بوصلة، ثم أعد التوصيل. تظهر الشريحة في وضع SDP ROM (0x1FC9:0x0135).

  2. جهّز مُحمّل الفلاش في الذاكرة المؤقتة وابدأ تشغيله:

    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 الخاصة بالشريحة باستخدام أدوات SE من Alif Semiconductor (المضمَّنة مع OpenMV IDE) عبر اتصال ISP تسلسلي. هذا إجراء تفاعلي مخصّص للاسترداد فقط -- وليس طريقة فلاش روتينية -- وهو عُرضة للأخطاء عند تنفيذه يدويًا؛ ومن بين كل ما في هذه الصفحة، فهو الإجراء الأجدر بأن يُترك لـ OpenMV IDE.

الاتصال. تتواصل أدوات SE مع AE3 عبر منفذ ISP التسلسلي في مُحوِّل التصحيح الخاص به -- وهو واجهة FTDI 0403:6015 أو CH340 1A86:55D3، إلى جانب J-Link. يتطلب الاسترداد وضع الجهاز في وضع الاسترداد: فعِّل مفتاح الاسترداد الموجود على اللوحة.

أدوات SE. تُضمِّن 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 لاستردادها.