Skocz do zawartości

Kurs STM32 - #3 - Płytka Nucleo, konfiguracja środowiska


Pomocna odpowiedź

Czy można używać tą płytkę z innymi systemami niż Windows? Konkretnie chodzi mi o Debiana. Skąd wziąć sterowniki?

Można, ale wymagałoby to opisania jak się tak naprawdę programuje ARM-y, a nie tylko pokazania gdzie ściągnąć program, który wszystko robi za nas. Ja miałem już kilka podejść do tego z OpenOCD, gdb, gcc i programatorem jtag, ale niestety jest na tyle ruchomych elementów, że bardzo ciężko trafić w działającą konfigurację, a wyczytać jej z datasheetów nie umiem.

Testowałem na Ubuntu 14.04 oraz NUCLEO-F103RB i działa bardzo ładnie. Tylko trzeba odinstalować wszystko co było z dystrybucją - jest stare i tylko przeszkadza.

OpenOCD: http://sourceforge.net/projects/openocd/files/openocd/0.9.0/

Kompilator: https://launchpad.net/gcc-arm-embedded/+download

Java: najlepiej oryginalna http://java.com/en/

Eclipse: najnowsza wersja, z CDT http://www.eclipse.org/downloads/

STM32 plugin: http://gnuarmeclipse.sourceforge.net/updates

Plugin sam pobiera bibliotekę StdPeriph.

Nie trzeba nic więcej niż pod Windę wiedzieć o programowaniu ARM-ów, datasheet-y też nie będą niezbędne.

Spotkał się może komuś z taki błędem po kliknięciu "Debug" gdy Launching HelloSTM32 Debug (91%) pojawia się następujący komunikat :

Co należy zrobić aby pozbyć się tego błędu ?

Nie trzeba nic więcej niż pod Windę wiedzieć o programowaniu ARM-ów, datasheet-y też nie będą niezbędne.

Tak, zastępujesz jeden program który wszystko za ciebie robi innym. A bym jednak wolał wiedzieć jak to zrobić bez magicznych pluginów tak, żebym wiedział co tak naprawdę się tam dzieje i móc na przykład zaprogramować nowy mikrokontoler, do którego nikt jeszcze pluginu nie zrobił. Bo programować to sobie równie dobrze mogę przez stm32duino 🙂

Oczywiście zdaję sobie sprawę, że to jest zupełnie poza zakresem tego tutoriala i wcale nie oczekuję, że ktoś będzie to tu opisywał. Po prostu muszę sam kiedyś przysiąść i poszukać jak to się robi.

Nie wiem jak dużo chcesz "ręcznie" zrobić. Ale ogólnie to wcale nie jest takie skomplikowane.

Po pierwsze plugin pobiera odpowiednie biblioteki i dołącza do projektu - to chyba łatwo zrobić ręcznie, chociaż czasem bywa męczące.

Kolejny etap to kompilacja. Jeśli znasz make-a to nie ma problemu - po prostu tworzysz Makefile, zupełnie jak przy gcc, tylko używasz arm-none-eabi-gcc. Trzeba podać jeszcze kilka flag, np. typ procesora - to najłatwiej podpatrzeć śledząc konsolę Eclipse i działanie plugina.

Kompilator przygotuje gotowy plik wykonywalny, można sprawdzić co w nim jest za pomocą arm-none-eabi-readelf.

Ostatni etap to zaprogramowanie mikrokontrolera. Możesz oczywiście pisać własne narzędzia, ale radziłbym wykorzystać coś gotowego. Najłatwiej OpenOCD - uruchamiasz go jako oddzielny proces, który oczekuje na połączenie od debuggera (gdb).

Teraz wystarczy połączyć się, tylko trzeba używać odpowiedniej wersji - zamiast gdb, arm-none-eabi-gdb. Po połączeniu wszystko działa jak w normalnym gdb... Oczywiście o ile znasz i lubisz pracę z tym narzędziem.

Ogólnie polecałbym najpierw poznać działanie plugina, a dopiero później "ręcznie" wykonywać kolejne etapy. Chociażby gdb można uruchomić ręcznie dla programu przygotowanego w eclipse. Nauka komend tego debuggera to niezła zabawa, ale później można sprzedać myszkę i jak prawdziwy geek pracować tylko w trybie tekstowym 😉

  • Lubię! 1
Nie wiem jak dużo chcesz "ręcznie" zrobić. Ale ogólnie to wcale nie jest takie skomplikowane.

Tak, przeszedłem przez to dokładnie tak jak napisałeś. Są jeszcze drobne dodatkowe kroki, jak skonfigurowanie linkera i samego OpenOCD pod konkretny mikrokontroler i programator -- do tego właśnie wymagane są datasheety. No i chyba niepotrzebnie się upierałem na używanie narzędzi systemowych, zamiast pokompilować wszystko samemu -- miałem potem straszne problemy z niezgodnością wersji. Muszę zrobić kiedyś po prostu kolejne podejście.

Tak jak piszesz, myszki do programowania raczej nie używam i za Eclipse nie przepadam. W zupełności wystarcza mi mój ukochany Vim.

Oczywiście, że jest jeszcze dużo "drobnych" kroków, dlatego łatwiej jest wykorzystać gotowe narzędzie niż ręcznie wszystko konfigurować. Ale to dobrze że chcesz wnikać w szczegóły - zawsze można się czegoś wtedy dowiedzieć.

Radziłbym tylko zacząć jakby "od końca" - wygenerować i skompilować program w Eclipse, a później przenieść go do swojego projektu. Wtedy będziesz mógł sprawdzić co dokładnie musiał zrobić plugin, które pliki były potrzebne itd. Dzięki temu będziesz miał gotowca, który działa, a później będzie dużo łatwiej wszystko samemu przygotować.

Czy można używać tą płytkę z innymi systemami niż Windows? Konkretnie chodzi mi o Debiana. Skąd wziąć sterowniki?

Na stronie z programem w dziale download mozna poprosic o zapisanie do beta testow wersji dla linuksa ewentualnie sciagnac stad wersje 1.3 - dziala bez problemu - jestem po pierwszej lekcji, nawet instaluje skrypty do udev, wiec zero konsoli jak ktos nie lubi 😉

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...