ATS Mini Controller
Radio + aplikacja

Kopia zapasowa i odzyskiwanie firmware

Radio nie uruchamia się po wgraniu firmware: co robić i w jakiej kolejności. Dalej: jak zrobić pełną kopię zapasową przed zapisem, jak ją przywrócić i jak wygląda nieudany zapis.

Jeśli twoje radio przestało się uruchamiać, czytaj tę stronę od tego miejsca w dół. Wyjaśnienia są dalej; najpierw kroki.

Radio nie uruchamia się po wgraniu firmware

Zacznij od najmniej drastycznego. ESP32-S3, który nie potrafi uruchomić swojej aplikacji, nadal odpowiada programatorowi, bo ta część, która z programatorem rozmawia, siedzi w ROM-ie samego układu, a nie w firmware, który właśnie zapisałeś. Dlatego nieudany zapis prawie zawsze da się naprawić tym samym narzędziem, które go spowodowało.

  1. Zostaw radio podłączone i włączone i zapisz jeszcze raz. Przerwany zapis zostawia niekompletny firmware, a nie uszkodzony układ. Jeśli port nadal jest widoczny, w większości przypadków to wystarcza.
  2. Zapisz kompletny obraz zamiast trzech plików. Użyj obrazu scalonego pod 0x0 albo swojej kopii zapasowej. Kompletny obraz zastępuje wszystko, co częściowy zapis mógł uszkodzić, łącznie z bootloaderem.
  3. Jeśli komputer nie widzi już portu szeregowego, wprowadź radio w tryb odzyskiwania ręcznie — następna sekcja — i zapisz ponownie.
  4. Jeśli port pojawia się i znika, to pętla restartów i właśnie dla niej istnieje tryb odzyskiwania. Nie próbuj w kółko zapisywać w takim stanie; najpierw wymuś tryb odzyskiwania.

Nie uruchamiaj drugiego zapisu po pierwszym, który zakończył się powodzeniem. Jeśli narzędzie mówi, że firmware został zapisany i nie powiódł się wyłącznie automatyczny restart, obraz już tam jest — wyłącz i włącz radio ręcznie.

Ręczne wymuszenie trybu odzyskiwania

Najpierw zajrzyj na płytkę. Część płytek ATS Mini ma wlutowane przyciski BOOT i RESET, część ma tylko BOOT, a część nie ma żadnego. Od tego zależy, która z poniższych sekwencji jest twoja.

Z obydwoma przyciskami: włącz odbiornik, podłącz go przez USB, naciśnij i przytrzymaj BOOT, naciśnij RESET, puść BOOT.

Z samym BOOT: podłącz odbiornik przez USB, naciśnij i przytrzymaj BOOT, włącz odbiornik, puść BOOT.

Bez przycisku BOOT: jeśli na płytce są pola lutownicze, krótkie zwarcie ich robi to samo co przycisk. Jeśli nie ma nawet pól, odpowiedź samego projektu firmware brzmi: zewrzeć nóżkę 27 (GPIO0) układu ESP32-S3 do masy i w ten sposób udać naciśnięcie. Tak czy inaczej otwierasz obudowę i dotykasz płytki pod napięciem, czyli robisz krok, którego nie robi się od niechcenia — ale jest to udokumentowana droga.

W trybie odzyskiwania radio nie robi nic z własnej woli: nie uruchamia wtedy swojego firmware’u, więc ciemny albo zamrożony ekran nie jest awarią. Liczy się komputer — powinien pokazać port szeregowy, a programator połączyć się z nim normalnie.

Co właściwie robią BOOT i RESET

RESET restartuje procesor. BOOT przytrzymany w chwili restartu każe procesorowi wystartować tryb pobierania z ROM-u zamiast firmware’u z pamięci flash. Żaden z nich niczego nie naprawia. To, co dają, to gwarancja, że układ słucha programatora, zamiast próbować uruchomić uszkodzony obraz.

Ta gwarancja jest powodem, dla którego płytka bez tych przycisków jest bardziej ryzykowna. Bez nich zależysz od tego, czy narzędzie do wgrywania samo namówi układ na tryb pobierania przez łącze USB, a to działa, dopóki układ się zachowuje. Kiedy przestaje — obraz, który wysypuje się, zanim USB zdąży ruszyć, albo pętla restartów gubiąca port — nie ma przycisku, na który można się wycofać, i zostaje zwieranie nóżki we wnętrzu obudowy. Warto wiedzieć, jaką masz płytkę, zanim ją zaprogramujesz, a nie w trakcie ratowania.

Kopia zapasowa przed zapisem

Kopia zapasowa to tutaj wierna, bajt w bajt kopia całej 8 MB pamięci flash radia: bootloader, tablica partycji, firmware i wszystko, co radio trzyma pomiędzy nimi. Jest kompletnym obrazem — i to właśnie czyni ją kompletną drogą powrotu.

W instalatorze firmware to pierwsza połowa kroku 5, Najpierw odczytaj kopię obecnego firmware’u, i jest domyślnie włączona. Odczyt całych 8 MB trwa kilka minut; na koniec dostajesz plik do pobrania. Zapisz go tam, gdzie go później znajdziesz — nazwa pliku zawiera datę, a kopia, której nie umiesz odnaleźć, nie jest kopią.

Ręcznie to samo odczytuje esptool.py poleceniem read_flash 0x0 ALL przy --baud 921600. Dokumentacja projektu firmware podaje pełne polecenie.

Kopię zapasową można zrobić tylko wtedy, gdy radio jeszcze działa. Po nieudanym zapisie nie ma już czego kopiować. To jedyny krok w całym procesie, którego nie da się zrobić później.

Przywracanie kopii zapasowej

Kopia zapasowa jest kompletnym obrazem, więc trafia pod 0x0, dokładnie tak jak scalony obraz wydania. Nie ma osobnej procedury przywracania ani specjalnego narzędzia.

W instalatorze zaznacz w kroku 4 Mam surowy obraz .bin zamiast archiwum wydania i wczytaj plik. Aplikacja odczytuje nagłówek samego obrazu, rozpoznaje kompletny obraz i proponuje 0x0. Nie jest w stanie sprawdzić luźnego .bin pod kątem twojego sprzętu — w takim pliku nie ma żadnego oznaczenia wariantu — więc prosi o potwierdzenie, że mimo to chcesz go zapisać. Twoja własna kopia z tego samego radia to najbardziej oczywisty powód, żeby się zgodzić.

Ręcznie jest to write_flash pod 0x0 z plikiem kopii, i to polecenie dokumentacja projektu firmware również podaje.

Jak wygląda nieudany zapis

Wygląda jak pasek postępu, który się zatrzymuje, i błąd. Nie wygląda jak eksplozja, a radio nic ci nie powie — nic w radiu nie wie, że zapis został przerwany w połowie. Trzy przypadki, które instalator rozdziela, warto od siebie odróżniać, bo wymagają przeciwnych reakcji:

Zapis się nie zakończył
Radio może się nie uruchomić, dopóki coś nie zostanie zapisane do końca, ale nadal jest podłączone i nadal słucha. Zapisz ponownie albo zapisz swoją kopię zapasową. To typowa awaria, z której da się wyjść.
Zapisane, ale restart się nie powiódł
Firmware już tam jest. Nie powiódł się wyłącznie automatyczny restart. Wyłącz i włącz radio ręcznie. Nie wgrywaj go drugi raz.
Nie powiódł się odczyt kopii
Nic nie zostało zapisane. Radio jest dokładnie takie, jak przed rozpoczęciem, więc nie ma czego odzyskiwać — po prostu zacznij od nowa.

Kiedy to nie firmware

Kilka awarii wygląda jak martwe radio, choć nim nie jest. Zanim założysz najgorsze:

Kiedy radio znów działa, poradnik Wgrywanie firmware opisuje warianty, adresy i wybór między zapisem trzech plików a scalonym, a instalator zrobi rozpoznanie za ciebie.

Najczęściej zadawane pytania

Moje ATS Mini nie uruchamia się po wgraniu firmware — czy to koniec?
Prawie na pewno nie. Ta część układu, która rozmawia z programatorem, siedzi we własnym ROM-ie ESP32-S3, a nie w firmware, który właśnie został zapisany, więc do radia, które nie potrafi uruchomić firmware, nadal da się pisać. Spróbuj zapisać ponownie i zapisz kompletny obraz — plik scalony albo swoją kopię zapasową — zamiast trzech osobnych plików.
Jak wprowadzić ATS Mini w tryb odzyskiwania?
Jeśli płytka ma oba przyciski: włącz radio, podłącz je przez USB, naciśnij i przytrzymaj BOOT, naciśnij RESET, po czym puść BOOT. Jeśli ma tylko BOOT: podłącz radio przez USB, naciśnij i przytrzymaj BOOT, włącz radio, po czym puść BOOT. W trybie odzyskiwania ekran zostaje ciemny i tak ma być — radio nie uruchamia wtedy własnego firmware.
Co zrobić, jeśli moja płytka ATS Mini nie ma przycisku BOOT?
Udokumentowana przez projekt firmware odpowiedź brzmi: zewrzeć nóżkę 27 układu ESP32-S3, czyli GPIO0, do masy i tym udać naciśnięcie przycisku. Wymaga to otwarcia obudowy. To też powód, dla którego płytka bez tych przycisków jest bardziej ryzykowna przy wgrywaniu: tracisz pewny sposób na zmuszenie układu, żeby słuchał programatora.
Ile zajmuje kopia zapasowa firmware ATS Mini?
8 MB, bo jest to wierna kopia całej kości pamięci flash, a nie samego firmware. Odczyt przez USB trwa kilka minut.
Czy mogę przywrócić kopię zapasową instalatorem na tej stronie?
Tak. Kopia zapasowa jest kompletnym obrazem, więc wczytuje się ją przez opcję surowego pliku .bin w kroku 4 i zapisuje pod 0x0. Aplikacja ustala to z nagłówka samego obrazu. Nie potrafi zweryfikować luźnego .bin względem twojego sprzętu, bo taki plik nie ma żadnego oznaczenia wariantu, więc prosi o potwierdzenie przed zapisem.