nRF52 DK na wirtualnej maszynie – pierwszy projekt
W tym wpisie chciałbym zaprezentować uruchomienie pierwszego projektu na płytce firmy Nordic Semiconductor. Zależy mi na utworzeniu maszyny wirtualnej, dzięki czemu możemy odseparować się od domyślnego systemu operacyjnego. Kolejnym celem jest praca na dystrybucji Linuxa oraz uruchomienie najprostszego projektu na płytce nRF52.
Wymagania
Oprogramowanie, z którego korzystałem wraz z wersjami dostępnymi w dniu 17.02.2020 znajduje się poniżej:
- nRF52 DK
- przewód micro USB
- Windows 10 Home
- VirtualBox Wersja 6.1.2 + Extension Pack
- Kali Linux (obraz na VirtualBox)
- nRF5 SDK 16.0.0
- nRF Command Line Tools 10.6.0
Uruchomienie maszyny wirtualnej
Zaczynamy od pobrania i instalacji programu do wirtualizacji VirtualBox. Bardzo ważnym elementem jest Extension Pack, który wspiera urządzenia podłączone przez USB. Następnie należy pobrać Kali Linuxa w wersji 64-bit. Można skorzystać z dodanych linków, które znajdziesz w wymaganiach.
Oczywiście możesz skorzystać z dowolnej dystrybucji Linuxa, mi do gustu przypadł słynny Kali. Z tego też powodu na niego się zdecydowałem. Jeśli wybierzesz jakiegokolwiek innego Linuxa, przebieg instalacji maszyny wirtualnej może wyglądać inaczej. W pomocniczych linkach umieściłem odnośnik do filmu, który przedstawia instalację Ubuntu 18.04 LTS. Pozostałe kroki, zaczynając od podłączenia płytki będą takie same.
Gdy pobrałeś wszystkie komponenty możemy przejść dalej. Musisz dodać wspomnianą paczkę rozszerzeń, co możesz zrobić w sposób następujący: W lewym górnym rogu znajduje się Plik -> Globalne Ustawienia -> Rozszerzenia i w prawym panelu trzeba dodać paczkę. Jeśli instalacja przebiegła pomyślnie możemy przejść do importowania obrazu Linuxa.

Żeby dodać maszynę wirtualną musisz ponownie wejść w Plik -> Importuj urządzenie wirtualne. W zakładce Plik wybierasz pobraną dystrybucję Linuxa i zatwierdzasz.

Pojawi się w lewym panelu zakładka Kali Linux. Obecnie mamy gotowe środowisko wirtualne, jednak musimy mieć pewność, że połączenie płytki również przebiegnie bezbłędnie. W tym celu trzeba zaznaczyć nowo utworzoną maszynę i uruchomić ustawienia. Tam w zakładce USB zaznaczyć USB 2.0. U mnie domyślnie było ustawione.

Teraz możesz uruchomić maszynę wirtualną i sprawdzić, czy wszystko co wykonaliśmy przebiegło pomyślnie. Jeśli tak się stało, wyświetli Ci się okno logowania. Domyślnie dane są ustawione kolejno login: kali oraz hasło: kali.
Podłączenie płytki nRF52 do maszyny wirtualnej
Zaczynamy od podłączenia płytki przewodem micro USB do komputera. Pamiętaj również, że na urządzeniu jest przełącznik, który musi być „ON” jeśli chcesz włączyć płytkę. Windows powinien wykryć komponent o nazwie JLINK. Dioda po lewej stronie powinna zaświecić się. W przypadku, gdy to Twoje pierwsze uruchomienie płytki, powinna zaświecić się jeszcze dioda LED1, a kliknięcie danego Buttona powoduje włączenie danej diody (np. jeśli klikniesz Button3 zaświeci się LED3). Może zostać również wczytany inny wcześniej załadowany program, jednak to nie ma wpływu na to co chcę dziś pokazać.

Kolejnym krokiem będzie uruchomienie maszyny wirtualnej. Gdy zalogujemy się i ukaże nam się pulpit należy podłączyć płytkę, co możemy zrobić wchodząc w zakładkę Urządzenia -> USB i tam powinno pojawić się SEGGER J-LINK. Klikamy i obok powinien pojawić się ptaszek, a po chwili w systemie Kali również musi pojawić się nowy dysk o nazwie JLINK.

Instalacja SDK i nrfjprog
Żeby przejść dalej ponownie należy przygotować wymagane oprogramowanie. Będą to nRF5 SDK oraz nrfjprog. Z podanych linków trzeba pobrać pliki. Plik dotyczący SDK u mnie był zatytułowany nRF5_SDK_16.0.0_98a08e2.zip, natomiast CommandLine nRF-Command-Line-Tools_10_6_0_Linux-amd64.tar.gz. W dokumentacji możemy przeczytać, że w przypadku pracy na Linux’ie nie musimy wykonywać żadnych operacji z SDK poza oczywiście rozpakowaniem.
Żeby uruchomić terminal klikamy jednocześnie Ctrl + Alt + T. Skrót klawiszowy, który bardzo ułatwia życie użytkownikowi Linuxa. Przechodząc do katalogu Downloads powinniśmy zauważyć nasze 2 pobrane pliki. Utwórzmy katalogi do których rozpakujemy archiwa:
mkdir SDK
mkdir CommandLine
unzip nRF5_SDK_16.0.0_98a08e2.zip -d ~/Downloads/SDK
tar -C ~/Downloads/CommandLine -xvf nRF-Command-Line-Tools_10_6_0_Linux-amd64.tar.gz

Następnie przejdźmy do katalogu CommandLine i zainstalujmy potrzebne pakiety:
cd CommandLine
sudo dpkg -i JLink_Linux_V660e_x86_64.deb
sudo dpkg -i nRF-Command-Line-Tools_10_6_0_Linux-amd64.deb

Na końcu sprawdźmy, czy wszystko przebiegło pomyślnie (poniżej oczekiwany wynik):
kali@kali:~/Downloads/CommandLine$ nrfjprog --version
nrfjprog version: 10.6.0
JLinkARM.dll version: 6.60e
Uruchomienie projektu blinky na płytce
Przygotowany plik, który za sekundę uruchomisz spowoduje, że diody będą migać wszystkie po kolei. Żeby to zrobić najpierw musimy przejść do katalogu w którym przygotowany plik się znajduje. Następnie należy wyczyścić płytkę, wgrać nowe oprogramowanie oraz ją zrestartować. Po tej operacji powinniśmy zauważyć święcące po kolei diody LED.
Warto wspomnieć dlaczego wybrałem konkretnie blinky_pca10040.hex. Zauważ, że na mojej płytce jest napisane PCA10040, tym się kierowałem przy wyborze.
cd ~/Downloads/SDK/examples/peripheral/blinky/hex
nrfjprog --family nRF52 -e
nrfjprog --family nRF52 --program blinky_pca10040.hex
nrfjprog --family nRF52 -r


Podsumowanie
Mam nadzieję, że udało mi się pokazać uruchomienie jednego z prostszych projektów na płytce nRF52 DK. W przypadku jakichś niejasności bądź problemów zapraszam do kontaktu, postaram się pomóc.
Linki pomocnicze:
Flashing the nRF52 DK fails on Ubuntu VM