NanoVNA - (pod Linux'em) wgranie nowego firmware'u

Co z tym firmware?

NanoVNA - zmień firmware na nowszy, bo warto....Wielokrotnie wspominałem o tym jak istotną rolę w pracy tego urządzenia odgrywa jego oprogramowanie, potocznie nazywane "firmware".

Nawet oglądając filmiki instruktażowe można zauważyć, że po włączeniu niektóre egzemplarze "chwalą" się wersją firmware. Inne w tej kwestii dyskretnie milczą. Mój egzemplarz - niestety - milczał :/

W tym przypadku nawet trudno ustalić z jakiej wersji korzystamy, bo brak takiej opcji w menu.

Wybiegając nieco naprzód powiem, że wykaz komend "terminalowych" wskazywał, że ta wersja firmware NanoVNA nie zawiera komendy "version".

Nie ma wyjścia ... to trzeba zmienić! Wbrew pozorom nie jest to takie trudne, ale (często, choć nie zawsze) trzeba chwycić za... lutownicę.

Tryb DFU - ale o co chodzi?

Tryby pracy urządzeń z STM32...Ciekawą własnością urządzeń zbudowanych w oparciu o uC STM32 (nie wdając się w szczegóły) jest fakt, iż mogą pracować w trybach: aplikacji (standardowego wykorzystania programu) lub programowania uC poprzez port np. USB.

Ten drugi tryb określa się mianem trybu DFU (Device Firmware Update, Aktualizacja Oprogramowania Urządzenia). Niniejszy opis dotyczy wgrania nowego oprogramowania pod Linuxem. Po pierwsze używam tego systemu. Po drugie: w sieci jest wiele opisów jak zrealizować ten proces w systemie MS Windows.

W celu wgrania nowego firmware musimy:Programowe włączenie trybu DFU

  • (jeśli masz odpowiednią wersję firmware) wejść w opcję "Config", wybrać "zakładkę" DFU, po czym wybrać "RESET AND ENTER DFU". Jeśli nie masz takiej opcji to musisz przystosować (po odpowiednie pola lutownicze już są!) płytkę PCB tak by w prosty sposób można było ją uruchomić w trybie DFU,
  • zainstalować w systemie (Linux) odpowiednie "sterowniki" (oprogramowanie) umożliwiające przeprowadzenie aktualizacji oprogramowania,
  • przeprowadzić instalację nowego firmware NanoVNA.

Po podłączeniu NanoVNA do portu USB komputera (pod systemem Linux) w oknie terminala i wydaniu komendy lsusb (tekst wytłuszczony) winieneś otrzymać komunikat:

~ $ lsusb
...
Bus 005 Device 004: ID 0483:5740 STMicroelectronics Virtual COM Port
...
~ $

Tzn. wśród kilku wierszy identyfikujących różne urządzenia winieneś zobaczyć ten z STMicroelectronics Virtual COM Port. Ten wirtualny port wykorzystywany jest do komunikacji pomiędzy oprogramowaniem NanoVNA a komputerem. I to jest "standardowy" tryb pracy urządzenia.Niestety on nie pozwala bezpośrednio programować nasze urządzenie. By móc wgrać nowy firmware, trzeba odpowiednio przygotować płytkę. I do tego potrzebujemy lutownicy.

Z lutownicą w ręku do trybu DFU!

Przygotowanie płytki do zmiany firmware...

Z lewej strony miejsca przyłączenia akumulatora widoczne są dwa pola lutownicze opisane odpowiednio jako: VDD oraz BOOT0. Zwierając je (tryb DFU) lub rozwierając (tryb "standardowej pracy) będziemy sterować naszym urządzeniem. Odłącz zasilanie, kabel USB od NanoVNA.

Wlutowałem tu goldpiny, choć widziałem też wlutowane przełączniki. Jeśli te pola zostaną zwarte (zworka, ew. przełącznik w pozycji "WŁ") to po włączeniu NanoVNA będzie w trybie DFU.

Pierwszym widocznym efektem będzie to, że cały ekran urządzenia będzie rozświetlony na biało (bez treści).

Jeśli NanoVNA jest podłączony do komputera (z Linuxem) to po wydaniu w oknie terminala komendy lsusb (tekst wytłuszczony) NanoVNA zostanie zidentyfikowane jako:

~ $ lsusb
...
Bus 005 Device 002: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
...
~ $

STMicroelectronics STM Device in DFU Mode, czyli uzyskaliśmy tryb, o który nam chodziło. Ten sam komunikat uzyskamy, jeśli zrealizowaliśmy opisaną wcześniej procedurę wywołania trybu DFU z menu (Config>DFU>RESET AND ENTER DFU).

Urządzenie czeka na nowe oprogramowanie systemowe. Zatem część sprzętową (hardware) mamy już za sobą.

Tryb DFU - czego potrzebuje nasz system operacyjny (Linux)

By móc przeprowadzić programowanie urządzenia w trybie DFU potrzebne jest również odpowiednie oprogramowanie. W systemie Linux jest to pakiet "dfu-util". Jeśli podane powyżej identyfikacje podłączenia do portu USB przebiegły jak opisano nie powinno być już żadnych kłopotów.

Zainstaluj pakiet dfu-util w systemie (Linux) poprzez wydanie poniższej komendy w oknie terminala:

~ $ sudo apt install dfu-util
~ $

Jeśli uzyskasz informację, że pakiet już jest zainstalowany to warto sprawdzić jego wersję. W tym celu w oknie terminala należy wydać następującą komendę:

~ $ dfu-util -V
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
~ $

Wszystko co potrzebne już mamy, więc "cała napród" ...

Wgrywamy nowe oprogramowanie, czyli firmware

Zakładam, że w katalogu, w którym się znajdujesz jest plik binarny z oprogramowaniem (tu: NanoVNA-H__900_ch_20191003.bin):

Podłączamy do NanoVNA kabelek USB (oczywiście na drugim końcu PC), zwieramy zworkę DFU,(ew. ustawiamy przełącznik trybu DFU w pozycję "WŁ"), włączamy NanoVNA (ekran świeci na biało!), a my w oknie terminala wydajemy komendę.

~ $ dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D NanoVNA-H__900_ch_20191003.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Downloading to address = 0x08000000, size = 97364
Download [=========================] 100%   97364 bytes
Download done.
File downloaded successfully
~ $

gdzie:
-d 0483:df11 - systemowy identyfikator urządzenia DFU
-a 0 - określa ustawienie interfejsu DFU według nazwy lub numeru,
-s 0x08000000:leave - wskazuje adres docelowy pobierania/wysyłania zbioru binarnego (RAW) z/na urządzenie DfuSe,
specjalny parametr "leave" nakazuje opuszczenie trybu DFU, nie należy używać parametru "-s" do pobierania plików *.dfu.
-D build/NanoVNA-H__900_ch_20191003.bin - określa ścieżkę i nazwę pliku binarnego (tu: NanoVNA-H__900_ch_20191003.bin), który zostanie wykorzystany w procesie programowania.

Jeśli komunikaty są zgodne z listingiem powyżej, to najprawdopodobniej proces wgrania nowego firmware zakończył się sukcesem.

Jeśli plikiem firmware jest plik *.dfu należy wywołać w oknie terminala następującą komendę:

~$ dfu-util -a 0 -D NanoVNA-Q-0.4.3-20f33ba.dfu
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Match vendor ID from file: 0483
Match product ID from file: 0000
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
file contains 1 DFU images
parsing DFU image 1
image for alternate setting 0, (1 elements, total size = 89299)
parsing element 1, address = 0x08000000, size = 89291
Download [=========================] 100% 89291 bytes
Download done.
done parsing DfuSe file
~$

Tu zaszła zmiana....By to sprawdzić: wyłącz NanoVNA, zdejmij zworkę trybu DFU (jeśli ryb DFU uzyskiwano poprzez założenie zwory. Jeśli tryb DFU wywowyłałeś poprzez menu n wystarczy wyłączyć NanoVNA). Włącz NanoVNA, odszukaj w menu pozycję "Config>Version".

Obrazek z lewej pokazuje co się zmieniło. :) Nie zapomnij na nowo skalibrować urządzenie.

Prezentowane wersje firmware stanowią jedynie przykład i proszę nie wyciągać wniosków "którą na którą" warto wymienić.

Na zakończenie: nic mnie nie łączy z żadnym z dostawców NanoNVA.

Skok do wykazu artykułów poświęconych NanoVNA, ewentualnie do Warsztatu krótkofalowca