14.1.1.5. Przywracanie bootloadera

Zwykłe wgrywanie oprogramowania układowego nigdy nie narusza bootloadera, więc przerwana aktualizacja oprogramowania układowego jest niemal zawsze możliwa do naprawienia: uruchom ponownie to samo polecenie wgrywania z Wgrywanie oprogramowania układowego (dfu-util -w czeka na urządzenie) lub ponownie wykonaj Load Custom Firmware, gdy kamera nadal znajduje się w swoim bootloaderze. Ta strona obejmuje rzadszy przypadek, w którym sam bootloader jest uszkodzony, a kamera po resecie nie jest już wykrywana jako urządzenie DFU.

Bootloader znajduje się w osobnym regionie pamięci flash, oddzielonym od oprogramowania układowego i systemu plików, a każda kamera marki OpenMV ma sprzętową ścieżkę powrotu, dzięki czemu trudno jest doprowadzić kamerę do stanu trwałej nieodwracalności. Jedynym wyjątkiem są płytki Arduino – ich bootloadery są stałe i nie mogą być przywracane przez użytkownika.

OpenMV IDE automatyzuje wszystkie te procedury odzyskiwania, prowadząc Cię po drodze przez kroki sprzętowe (zworki, przełączniki, przyciski). Poniższe sekcje dokumentują, co robi ono dla każdej rodziny kamer, na wypadek gdybyś chciał przeprowadzić odzyskiwanie samodzielnie.

14.1.1.5.1. Kamery STM32 (zworka BOOT–RST)

Dla kamer OpenMV opartych na STM32 (M4, M7, H7, H7 Plus, Pure Thermal):

  1. Odłącz kamerę.

  2. Połącz zworką piny BOOT i RST.

  3. Podłącz ponownie. Kamera jest teraz wykrywana jako systemowe urządzenie DFU firmy ST (0483:df11), niezależnie od uszkodzonego oprogramowania układowego.

  4. Wgraj ponownie tylko bootloader – użyj Load Custom Firmware w OpenMV IDE z plikiem bootloader.bin lub:

    dfu-util -w -d ,0483:df11 -a 0 -s 0x08000000 -D bootloader.bin
    
  5. Usuń zworkę i podłącz ponownie.

  6. Wgraj oprogramowanie układowe w zwykły sposób (zobacz Wgrywanie oprogramowania układowego).

14.1.1.5.2. OpenMV Cam N6 (zworka BOOT–VCC)

  1. Odłącz kamerę.

  2. Połącz zworką piny BOOT i VCC.

  3. Podłącz ponownie. Kamera jest teraz wykrywana jako systemowe urządzenie DFU firmy ST (0483:df11), niezależnie od uszkodzonego bootloadera.

  4. Wgraj ponownie za pomocą STM32CubeProgrammer (dołączonego do OpenMV SDK), używając deskryptora układu pamięci flash dostarczanego wraz z bootloader.bin – przepisuje on bootloader pierwszego stopnia, loader pamięci flash zewnętrznej oraz bootloader:

    STM32_Programmer_CLI -c port=USB1 -d OPENMV_N6/FlashLayout.tsv
    
  5. Usuń zworkę i podłącz ponownie.

  6. Wgraj oprogramowanie układowe w zwykły sposób (zobacz Wgrywanie oprogramowania układowego).

14.1.1.5.3. OpenMV Cam RT1062

Odtworzenie bezpiecznego bootloadera RT1062 wymaga przejścia chipa w tryb pobierania szeregowego z pamięci ROM (SDP) za pomocą zworki, przygotowania flashloadera w pamięci RAM, a następnie przepisania bloku konfiguracji pamięci flash, SBL oraz oprogramowania układowego. Sekwencja ręczna:

  1. Odłącz kamerę, połącz zworką piny SBL i 3.3V, a następnie podłącz ponownie. Chip jest wykrywany w trybie SDP ROM (0x1FC9:0x0135).

  2. Przygotuj i uruchom flashloader w pamięci RAM:

    sdphost -u 0x1FC9,0x0135 -- write-file 0x20001C00 sdphost_flash_loader.bin
    sdphost -u 0x1FC9,0x0135 -- jump-address 0x20001C00
    
  3. Kamera odpowiada teraz jako flashloader (0x15A2:0x0073). Skonfiguruj pamięć flash zewnętrzną, zapisz blok konfiguracji pamięci flash, a następnie zapisz 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. Zapisz oprogramowanie układowe i ustaw bezpiecznik źródła rozruchu, aby chip uruchamiał nowy SBL z pamięci flash zewnętrznej:

    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. Usuń zworkę i wykonaj cykl zasilania kamery.

Ostrzeżenie

efuse-program-once 0x06 00000010 to jednorazowy, nieodwracalny zapis bezpiecznika, który ustawia urządzenie tak, aby uruchamiało się z pamięci flash zewnętrznej. To kolejny powód, aby pozwolić OpenMV IDE przeprowadzić odzyskiwanie bootloadera RT1062 zamiast wykonywać tę sekwencję ręcznie.

14.1.1.5.4. OpenMV AE3

Bezpieczny bootloader AE3 nie jest przywracany przez USB DFU. Jest on przepisywany do pamięci MRAM chipa za pomocą narzędzi SE Tools firmy Alif Semiconductor (dołączonych do OpenMV IDE) przez szeregowe połączenie ISP. Jest to interaktywna procedura przeznaczona wyłącznie do odzyskiwania – nie jest to rutynowa metoda wgrywania – i jest podatna na błędy przy wykonywaniu ręcznym; ze wszystkiego na tej stronie to właśnie ją najlepiej pozostawić OpenMV IDE.

Połączenie. Narzędzia SE Tools komunikują się z AE3 przez port szeregowy ISP jego adaptera debugowania – interfejs FTDI 0403:6015 lub CH340 1A86:55D3, wraz z J-Link. Odzyskiwanie wymaga przełączenia urządzenia w tryb odzyskiwania: włącz wbudowany przełącznik odzyskiwania.

SE Tools. OpenMV IDE dołącza te pliki wykonywalne firmy Alif. Współdzielą one dwa pliki konfiguracyjne – isp_config_data.cfg oraz global-cfg.db – tworzone przez maintenance przy pierwszym połączeniu:

Narzędzie

Przeznaczenie

maintenance

Odpytuje Secure Enclave (maintenance -opt sesbanner odczytuje jego wersję) i przełącza urządzenie w tryb odzyskiwania.

updateSystemPackage

Aktualizuje pakiet systemowy Secure Enclave, gdy jest on starszy niż wersja wymagana przez oprogramowanie układowe.

app-gen-toc

Generuje obraz spisu treści (TOC) (używany przy zapisie wyłącznie aplikacji).

app-write-mram

Zapisuje obraz(y) do MRAM – krok, który przywraca bootloader.

Procedura:

  1. Połącz się z AE3 za pomocą maintenance; narzędzie poprosi o port szeregowy oraz typ urządzenia, tworząc pliki isp_config_data.cfg i global-cfg.db dla pozostałych narzędzi.

  2. Jeśli pakiet systemowy Secure Enclave jest nieaktualny, updateSystemPackage go zaktualizuje; wykonaj cykl zasilania, gdy pojawi się odpowiedni komunikat.

  3. app-write-mram -i "bootloader.bin 0x80000000 firmware_pad.toc 0x8057E000" zapisuje bootloader oraz TOC do pamięci MRAM.

  4. AE3 zostaje ponownie wykryty jako urządzenie DFU 37C5:96E3. Uruchom zwykłe wgrywanie czterech obrazów z OpenMV AE3: dfu-util, aby załadować aplikację.

  5. Wykonaj cykl zasilania kamery i wyłącz przełącznik odzyskiwania.

Informacja

OpenMV IDE obsługuje znacznie więcej niż tę bezproblemową ścieżkę – uszkodzone oprogramowanie układowe Secure Enclave, wadliwy bootloader oraz inne stany awaryjne wymagają każdorazowo własnych kroków odzyskiwania, a po drodze wiele może pójść nie tak. Jeśli powyższe kroki ręczne nie przywrócą kamery do działania, użyj OpenMV IDE, aby ją odzyskać.