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 init
można użyć do skonfigurowania projektu. pio run
wykorzystuje zestaw narzędzi do kompilacji. pio run --target upload
wysyła kod do urządzenia. Platformio dba o pobieranie komponentów łańcucha narzędzi, bibliotek itp. W razie potrzeby.