Mam płytę odkrywczą STM32 i chciałbym móc ją programować w systemie Linux.
Jak najłatwiej to zrobić?
Mam płytę odkrywczą STM32 i chciałbym móc ją programować w systemie Linux.
Jak najłatwiej to zrobić?
Odpowiedzi:
Prostym sposobem na zaprogramowanie i debugowanie płyty STM32 Discovery (lub dowolnego STM32 używającego programatora ST-Link) jest skorzystanie z projektu „stlink” https://github.com/texane/stlink (jednak OpenOCD wydaje się również popularny)
Płyty ST Nucleo pojawiają się również jako urządzenia flash USB, więc nawet nie potrzebujesz stlink - po prostu skopiuj do nich plik.
Istnieje kilka dobrych stron na temat programowania dla wykrywania STM32 w systemie Linux, takich jak http://gpio.kaltpost.de/?page_id=131 i http://torrentula.to.funpic.de/2012/03/22/ setup-up-the-stm32f4-arm-development-toolchain / i http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Jednak najbardziej użyteczny był ostatni link. Pokazuje, jak budować projekty STM32 w obecnej postaci - Jedyną zmianą jest dodanie jego Makefile, co wydaje się idealnym rozwiązaniem.
W najnowszych wersjach Ubuntu istnieje pakiet, który można zainstalować, który zawiera kompilator ARM:
sudo apt-get install gcc-arm-none-eabi
Zauważ, że wszystkie procesory są nieco inne. STM32F0..4 będzie potrzebował różnych flag kompilatora, a skrypt linkera będzie nieco inny dla każdego (choć tylko ze względu na zmienione rozmiary pamięci RAM i Flash).
Edycja: jeśli chcesz naprawdę szybko zacząć, możesz także zajrzeć na stronę http://www.espruino.com . Jest to interpreter JavaScript, który działa na samym STM32, więc po zainstalowaniu „stlink”, aby można było flashować na płycie, możesz po prostu pobrać obraz z tej strony, flashować go, a następnie połączyć się z aplikacją terminalową i rozpocząć programowanie.
Jeśli bardziej interesują Cię edytory tekstu i pliki Makefile zamiast korzystania z GUI, możesz:
Doprowadź swój projekt do tablicy. Albo użyj
Kod w edytorze tekstu i użyj narzędzi wiersza polecenia. Ten samouczek zawiera wiele wskazówek.
Cieszyć się
Eclipse , GCC i OpenOCD to jeden zestaw narzędzi. Zalecane przez EMCU-IT i nie ma dodatkowych informacji tutaj . Strony te również zalecają korzystanie z RTOS, takiego jak FreeRTOS.org , ale to zależy od ciebie.
Aby uzyskać pomoc w kompilowaniu przykładów STM32 w systemie Linux, przejdź tutaj . Ten link wskazuje plik makefile dla przykładów, które można wywołać
git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip
Udokumentowano również kilka drobnych poprawek kodu, ale większość projektu powinna działać
make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
Odniosłem sukces w https://github.com/JorgeAparicio/bareCortexM (patrz także powiązane posty na blogu). Uwielbiam to, że mogę po prostu przejść krok po kroku przez kod lub przeglądać pamięć urządzenia zamiast wstawiać w kodzie instrukcje debugowania lub zgadywać, co dzieje się w układzie.
Projekt bareCortexM jest szablonem Eclipse do programowania z serią Cortex M, zwłaszcza STM32, w C ++ bez systemu operacyjnego. Jest skonfigurowany do korzystania z openocd, gcc i ma skrypty do flashowania i debugowania na kilku celach, w tym na niektórych płytach odkrywania. Postępując zgodnie z instrukcjami i instalując zalecane wtyczki Eclipse, mogłem używać mojego STM32VLDISCOVERY na Ubuntu.
Zgodnie z zaleceniami połączyłem szablon Eclipse z biblioteką szablonów libstm32pp C ++ tego samego autora dla sprzętu STM32. libstm32pp zapewnia zaskakująco kompletne zastąpienie CMSIS i często krytykowanych sterowników STM32 modelem programowania, który pozwala wypowiadać się jak PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)i / PINB::setLow()lub w PINB::setHigh()większości skompilowany inline ze względu na szablony C ++. Konfiguracja jest bardzo ładna.
Może przydałby się komuś: mój krótki artykuł (po rosyjsku) i prosty projekt . Wszystko w systemie Linux i bez zbędnych rzeczy, takich jak zaćmienie.
Biblioteki zostały pobrane ze strony internetowej ST, makefile - z jednego z wielu przykładów GPL w Internecie.
Oto niewielki, ale innowacyjny projekt szablonu umożliwiający szybkie rozpoczęcie korzystania z płyty STM32F0 Discovery w systemie Linux lub dowolnym innym systemie operacyjnym:
https://github.com/dobromyslov/stm32f0-chibios-template
Pamiętaj, że projekt wykorzystuje ChibiOS - darmowy system operacyjny czasu rzeczywistego typu open source, więc nie jest to od samego początku implementacja gołej kości.
Używam vim i arm-none-eabi-gcc wraz ze wszystkimi zwykłymi narzędziami programistycznymi dla Linuksa. Linux jest moim zdaniem zdecydowanie lepszym środowiskiem programistycznym do pracy osadzonej. Do debugowania używam stlink i arm-none-eabi-gdb.
Rozważ platformio . Jeśli w ogóle nie podoba ci się wiersz poleceń, przekonasz się, że platformio znacznie ułatwia proces programowania. pio initmożna użyć do skonfigurowania projektu. pio runwykorzystuje zestaw narzędzi do kompilacji. pio run --target uploadwysyła kod do urządzenia. Platformio dba o pobieranie komponentów łańcucha narzędzi, bibliotek itp. W razie potrzeby.