Flashowanie układu CC2652P z wykorzystaniem CH9102X

Opublikowano: 21 marca 2024

Flashowania Układu CC2652P z Wykorzystaniem CH9102X

Flashowanie układu CC2652P jest procesem, który pozwala na zainstalowanie oprogramowania koordynatora na chipie, co jest kluczowe dla działania z Zigbee2Mqtt. W tym poście omówimy krok po kroku, jak przeprowadzić flashowanie układu CC2652P z modułem USB-Serial CH9102X.

Przygotowanie do Flashowania

Przed rozpoczęciem procesu flashowania, upewnij się, że masz wszystkie niezbędne narzędzia i pliki. Będziesz potrzebować:

  • Dongle Zigbee2mqtt z układem CH9102X
  • System Linux lub MacOs
  • Python 3 w wersji minimum 3.7

Wejście w Tryb Bootloadera

Aby rozpocząć flashowanie, musisz wprowadzić dongle w tryb bootloadera. Oto jak to zrobić:

  1. Zdejmij obudowę dongle.
  2. Podłącz go do portu USB
  3. Przytrzymaj przycisk K1 (środkowy).
  4. Naciśnij i zwolnij przycisk RST (położony przy antenie).
  5. Zwolnij przycisk K1.

Teraz dongle powinien być w trybie bootloadera i gotowy do flashowania. Jeżeli tak się nie stanie, to sprawdź połączenie, ja musiałem ustawić moduł na małej podpórce.

Proces Flashowania na Linux/macOS

Poniżej znajdziesz instrukcje krok po kroku, jak przeprowadzić flashowanie

  1. Sklonuj repozytorium z narzędziem do flashowania:
git clone https://github.com/JelmerT/cc2538-bsl.git

Przejdź do sklonowanego katalogu:

cd cc2538-bsl

Pobierz najnowsze oprogramowanie firmware. W momencie pisania posta ten link jest aktualny, jeżeli się zmieni, sprawdź w repozytorium nazwę aktualnego pliku.

wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_coordinator_20230507.zip

Rozpakuj pobrane archiwum:

unzip CC1352P2_CC2652P_launchpad_coordinator_20230507.zip

Zainstaluj wymagane pakiety Pythona:

pip3 install wheel pyserial intelhex python-magic

Zainstaluj bibliotekę zigpy-znp:

pip3 install zigpy-znp

Wykonaj kopię zapasową obecnych danych NVRAM. Upewnij się, że dongle jest odczytany jako /dev/ttyACM0, być może u Ciebie będzie pod inną nazwą. Nazwę tę znajdziesz obserwując, co pokaże się po wpisaniu komendy ls /dev/tty* po podłączeniu modułu.

python3 -m zigpy_znp.tools.nvram_read /dev/ttyACM0 -o nvram_backup.json

Przeprowadź flashowanie nowym firmware

python3 cc2538-bsl.py -e -v -w CC1352P2_CC2652P_launchpad_coordinator_20230507.hex

Po zakończeniu procesu flashowania, dongle powinien być gotowy do użycia z nowym oprogramowaniem.

Podsumowanie

Gotowe! Teraz wystarczy odpowiednio skonfigurować zigbee2mqtt aby działał z układem. Jeżeli używałeś wcześniej cc2531, prawdopodobnie wystarczy odłączyć stary moduł i podłączyć nowy.

Komentarze (2)

  1. Jlynx54

    Zastanawiam się, jak to jest możliwe, by dokonać fleshowania dongla plikiem hex o rozmiarze 508 kB, podczas gdy pamięć flash w donglu to zaledwie 352 kB. Próbowałem to wykonać na koordynatorze z układem cc2652 z modułem USB-Serial CH9102X i nie udało się. Użyłem dokładnie takiego samego firmware CC1352P2_CC2652P_launchpad_coordinator_20230507.zip pod Windowsem 11 przy pomocy SmartRF Flash Programmer 2 w wersji 1.8.2. Nie udało się. Zrezygnowalem, gdy zorientowałem się że ten wsad jest za duży na pojemność pamięci flash dongla, akupionego na Aliexpress. Oczywiście mogłem zapisywać wsadami do około 380 kB, nie więcej.

    1. Pablo
      Odpowiedź do: Jlynx54

      Dzięki za tak szczegółowy opis — na początek dobra wiadomość: rozmiar pliku .hex to nie rozmiar wsadu. Intel HEX to format tekstowy (każdy bajt zapisany jako dwa znaki plus narzut linii), więc 508 kB pliku to realnie ok. 190 kB obrazu — mieści się w 352 kB bez problemu. A 352 kB to zresztą normalna pojemność dla CC2652P (większy flash ma dopiero wariant P7), więc sam rozmiar nie powinien blokować flashowania. Skoro inne wsady przechodziły, a ten nie, podejrzewam jedną z trzech rzeczy: (1) SFFP2 wyrzuca konkretny błąd — jaki dokładnie komunikat? To od razu zawęzi diagnozę; (2) build launchpad bywa kapryśny na klonach — różnice w CCFG i mapowaniu pinów między płytkami robią swoje; (3) samo wejście w tryb bootloadera przy tej próbie. Najprościej wrócić do metody z artykułu: python3 cc2538-bsl.py -e -v -w -p COMx CC1352P2_CC2652P_launchpad_coordinator_20230507.hex (zamiast SmartRF). cc2538-bsl wypisze w logu, jaki układ faktycznie widzi i czy przyjął cały obraz — drobna ciekawostka: potrafi zgłosić CC2652P jako CC1352P, to normalne. Jeśli i to rzuci błąd, wklej tutaj dokładny komunikat — łatwiej będzie trafić w przyczynę.

Dodaj komentarz

Komentarze są publikowane po moderacji. Adres e-mail nie będzie widoczny publicznie.