Wprowadzenie do mbed-cli

Strona internetowa projektu: ARM Mbed-CLI

Programowanie platformy rozwojowej NUCLEO-F401RE, poprzedzające połączenie z chmurą obliczeniową Cayene można wykonać zdalnie w konsoli kompilatora os.mbed.com lub na komputerze lokalnym. Skorzystamy z obu możliwości przy wykonywaniu Ćwiczenia 1 (testu platformy). W tym celu należy przygotować sobie środowisko programistyczne, które pozwoli na zapisanie skompilowanego programu w pamięci układu wbudowanego NUCLEO-F401RE doposażonego w moduły rozszerzeń X-NUCLEO -IDW01M1 (podręcznik użytkownika UM1975), -IKS01A2 i -NFC01A1.

Instalacja interfejsu linii poleceń

Instalacja interfejsu linii poleceń (ang. command-line interface) dla ARM Mbed-CLI przebiega w sposób opisany poniżej.

Przy założeniu, że w systemie Windows jest już zainstalowany menadżer pakietów pip [1], wpisujemy w linii poleceń systemu (jako administrator):

C:\Users\PC> pip install mbed-cli

W dalszej części pominiemy ścieżkę do bieżącego katalogu, pozostawiając tylko znak '>', sygnalizujący polecenie wpisywane w linii poleceń. Zainstalowany pakiet aktualizujemy poleceniem:

> pip install -U mbed-cli

Sprawdzamy wersję (tutaj 1.9.1):

> mbed --version

W przypadku instalacji Pythona w środowisku Anaconda zamiast linii poleceń systemu używamy linię poleceń Anaconda (Anaconda Command Prompt). Inny sposób instalacji przedstawiono tutaj [2].

W katalogu "C:\Program Files (x86)\GNU Tools Arm Embedded\8 2018-q4-major" (tutaj w wersji 8 2018-q4-major) instalujemy oprogramowanie GNU Tools ARM Embedded (tzw. toolchain GCC ARM) [3]. Więcej informacji na temat instalacji można znajduje się w pliku readme.txt w katalogu C:\Program Files (x86)\GNU Tools ARM Embedded\8 2018-q4-major\share\doc\gcc-arm-none-eabi. Dodajemy ścieżkę użytkownika i/lub systemową do zmiennych środowiskowych systemu Windows:

GCC_ARM_PATH=”C:\Program Files (x86)\GNU Tools Arm Embedded\7 2018-q2-update\bin”

Ścieżka wskazuje na miejsce instalacji binariów - plików wykonywalnych kompilatora. Można też dodać ją za pośrednictwem programu mbed-cli (mbed):

> mbed config -G GCC_ARM_PATH ="C:\Program Files (x86)\GNU Tools Arm Embedded\7 2018-q2-update\bin"

Ścieżkę do wybranego kompilatora ustawia się też w miarę potrzeb w pliku mbed_settings.py.

Do utworzonego katalogu "ARMmbed-Projects" importujemy mbed-os, wpisując w konsoli (więcej tutaj [4]):

> mbed import mbed-os

Ilustracja 1: Linia poleceń Anaconda Prompt w trakcie pobierania mbed-os do katalogu PC

Po zakończeniu importu następuje próba instalacji innych bibliotek Python'a. Przy instalacji biblioteki manifest_tool może pojawić się błąd, dlatego można to powtórzyć z jej pominięciem:

pip install prettytable junit_xml future mbed_cloud_sdk intelhex intervaltree mbed_ls mbed_host_tests mbed_greentea fuzzywuzzy pyelftools manifest_tool icetea pycryptodome pyusb

Brakującą bibliotekę instalujemy z repozytorium git:

> pip install git+https://github.com/ARMmbed/manifest-tool.git

Katalog "mbed-os" pobrany wraz z biblioteką "mbed-os.lib" do katalogu w którym wywołujemy polecenie import kopiuje się często do katalogu nowego programu, by pominąć pobieranie tej biblioteki przy następnym tworzeniu programu.

Konfigurując zmienną MBED_OS_DIR wskazującą na katalog "mbed-os" sprawimy, że jedna biblioteka mbed-os będzie wspólna dla wszystkich programów tworzonych w podkatalogach katalogu projektów "./ARMmbed-Projects", np.:

> mbed config -G MBED_OS_DIR "C:\Users\PC\Backup\GrantyDydaktycznePL-2018\ROBOCZY\ARMmbed-Projects\mbed-os"

Usunięcie powyższego przypisania:

> mbed config -G MBED_OS_DIR --unset

Inne przydatne polecenia:

./ARMmbed-Projects> cd mbed-os
./ARMmbed-Projects/mbed-os> mbed update
./ARMmbed-Projects/mbed-os> mbed config root


Globalne ustawienie programowalnej jednostki MCU (Microprocessor Computing Unit) jest przydatne wtedy, gdy korzystamy tylko z jednej platformy rozwojowej (więcej tutaj [5]):

mbed config -m NUCLEO_F401RE

Importowanie kodów źródłowych z repozytorium github

Będąc w katalogu projektów, importujemy przykładowy projekt z repozytorium oprogramowania (więcej tutaj [5,6]):

> cd..
> mbed import https://github.com/ARMmbed/mbed-os-example-blinky
lub
> mbed import -vv mbed-os-example-blinky

Więcej przykładowych projektów znajdziemy na stronie [7], natomiast bardziej rozbudowaną wersję programu testowego typu Blinking LED udostępniono na tym blogu [Ćwiczenie 1].

Kompilacja kodu źródłowego

Kompilację zaimportowanego projektu poprzedza się przejściem do katalogu projektu roboczego. Przełącznik/argument/opcja -t wskazuje na Toolchain, przełącznik -m na jednostkę MCU:

> cd mbed-os-example-blinky
> mbed compile -t GCC_ARM -m NUCLEO_F401RE


Z dołączeniem informacji o profilu:

> mbed compile -t GCC_ARM -m NUCLEO_F401RE --profile .\mbed-os/tools/profiles/debug.json -f --sterm

Zaprogramowanie MCU (tzw. flashing) z przełącznikiem: -f
Ponowna kompilacja (czysta) wszystkich źródeł z przełącznikiem: -c
Port COM otwieramy i nasłuchujemy z przełącznikiem: --sterm
Parametry transmisji ustawiamy poleceniami: --baudrate 115200 --port COM4
Testowanie kodu: [8]
O podłączone urządzenie, port i dysk podłączenia MCU zapytamy wywołując:

> mbed detect

O konfigurację zapytamy tak:

> mbed config --list

Przy pierwszej kompilacji należy chwilę odczekać, zanim nie uzyskamy skompilowanych wersji wszystkich bibliotek. Kolejne kompilacje w trakcie rozwoju aplikacji trwają krócej, ze względu na przyrostowe budowanie pliku wynikowego.
Programowanie jednostki MCU z poziomu katalogu projektu podłączonego jako dysk D:

> copy .\BUILD\NUCLEO_F401RE\GCC_ARM\mbed-os-example-blinky.bin D:

lub kompilując z przełącznikiem -f (patrz powyżej).

Uwaga: Jeśli chcemy zachować skompilowany plik binarny w innym miejscu, by np. później szybko zaprogramować platformę jednym z posiadanych programów, to zmieniamy ścieżkę z D: na inną.
Nieco lepszą automatyzację tego procesu uzyskamy tworząc w katalogu roboczym plik wykonywalny, np. o nazwie "run_F401RE.bat", w którym umieszczamy komendy compile i copy. Kompilacja i programowanie MCU odbywa się wtedy przez uruchomienie tego pliku. Poniżej jego zawartość:

mbed compile -t GCC_ARM -m NUCLEO_F401RE
copy .\BUILD\NUCLEO_F401RE\GCC_ARM\mbed-os-example-blinky.bin D:
TIMEOUT /T 2
0


Eksportowanie projektu do Eclipse:

> mbed export -i eclipse_gcc_arm -m NUCLEO_F401RE

lub dodatkowo z przełącznikiem: --profile mbed-os/tools/profiles/debug.json

Edycja kodu

Konfigurację środowiska programistycznego Eclipse opisano na stronie mbed OS [9].

Plik "main.cpp", zwierający kod źródłowy programu edytujemy w dowolnym notatniku lub edytorze (tzw. IDE - Integrated Development Environment), np. Dev C++. To IDE umożliwia dodanie komendy (np. o nazwie run_F401RE), uruchamiającej wcześniej przygotowany plik "run_F401RE.bat" (Menu/Tools/Configure Tools/Add). Po wskazaniu pliku do uruchomienia i zatwierdzeniu nowego narzędzia można kompilować i zapisywać modyfikacje programu na MCU, klikając Menu/Tools/run_F401RE. Instalację tego środowiska programistycznego poprzedza się zwykle instalacją kompilatorów MinGW lub TDM GCC dostępnych do ściągnięcia na stronach sourceforge.net.

Inną opcją dostępną przy pełnej rejestracji w chmurze ARM Pelion jest instalacja IDE mbed-cloud-sdk-python. ARM Pelion jest dostępne na stronie portal.mbedcloud.com lub z własnego profilu na mbed.com.

Więcej informacji podano w opisie do projektu z przedmiotu "Mechatronika" przygotowanego dla studentów Mechatroniki Wydziału Mechanicznego PŁ dostępnym w jednym z postów tego bloga.

Komentarze