Jak opracować program do wykrywania STM32 w systemie Linux? [Zamknięte]


26

Mam płytę odkrywczą STM32 i chciałbym móc ją programować w systemie Linux.

Jak najłatwiej to zrobić?


Zainstalowałem Codesourcery na LinuxhUbuntu i trochę na sobie: PATH jest w porządku, ale program nie pojawia się na desce rozdzielczej ani w centrum oprogramowania. Być może to Ubuntu zmieniłbym jakoś, ale nie wiem jak. Jeśli masz pomysł, napisz. Dziękuję Ci. Tom
— Tom Rert

1
@TomRitzmann PeterJ ma rację, nie używaj odpowiedzi do zadawania pytań. Co więcej, problemy z oprogramowaniem są tutaj nie na temat, SuperUser jest właściwym miejscem.
— clabacchio

Odpowiedzi:


12

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.


Oto lista obsługiwanych płyt STM32x Discovery firmy OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (wyszukaj „odkrycie” za pomocą przeglądarki)
— rbaleksandar

8

Jeśli bardziej interesują Cię edytory tekstu i pliki Makefile zamiast korzystania z GUI, możesz:

  • Zainstaluj zestaw narzędzi zapewniający arm-none-eabi-gcc. Na Archlinuxie potrzebujesz społeczności / arm-none-eabi-binutils, arm-none-eabi-gcc i arm-none-eabi-newlib (i arm-none-eabi-gdb, jeśli chcesz debugować) - wszystko od społeczności repo lub https://launchpad.net/gcc-arm-embedded (który można znaleźć w AUR Archlinux jako gcc-arm-none-eabi-bin).
  • Zdecyduj, czy i jakiej biblioteki chcesz użyć, aby uzyskać dostęp do sprzętu. Z góry mojej głowy są trzy typowe opcje:
    1. Żaden. Piszesz wszystko od zera. Niezalecane dla początkujących.
    2. STM32Cube : AC lib dostarczone przez sam ST.
    3. Libopencm3 : biblioteka typu open source obsługująca dość wiele rdzeni kory różnych producentów.
    4. STM32PLUS : A C ++ lib. Nie mogę jednak powiedzieć więcej na ten temat, ponieważ go nie testowałem.
  • Utwórz lub skopiuj swój pierwszy projekt.
    1. Bez biblioteki lib napisz własny plik makefile, skrypt linkera, kod startowy i uruchom prosty plik makefile. Powodzenia ;)
    2. Z STM32Cube: Pobierz i zainstaluj STM32CubeMX . Po rozpakowaniu plik * .exe jest w rzeczywistości tylko plikiem java i można go uruchomić za pomocą „java -jar filename.exe”. Instalacja wymaga sudo. Po zakończeniu utwórz projekt i wygeneruj kod dla „Truestudio”. To powinno dać ci punkt wyjścia ze skryptem linkera, kodem startowym, trywialną funkcją główną (i makefile, jeśli dobrze pamiętam). W rzeczywistości, nawet jeśli nie korzystasz z biblioteki STM32Cube, STM32CubeMX doskonale nadaje się do obliczania wartości drzewa zegara i sprawdzania poprawności, czy możesz skonfigurować układ tak, jak myślisz.
    3. Z libopencm3: Pobierz przykłady libopencm3 , znajdź przykład pasujący do twojej planszy i użyj go jako punktu wyjścia. Przykłady powinny być gotowe do uruchomienia. Po prostu wpisz „make”. Następnie wykorzystaj ten przykład jako punkt wyjścia do własnego rozwoju.
    4. Z STM32Plus: Nie wiem. Przepraszam.
  • Doprowadź swój projekt do tablicy. Albo użyj

    1. Seryjny bootloader: stm32flash działa świetnie.
    2. Port debugowania: Możesz użyć openocd, aby porozmawiać z adapterem debugującym znajdującym się na płycie. Openocd jest świetny, ale dokumentacja nie zawsze jest najlepsza. W razie wątpliwości dołącz do kanału irc openocd. Ludzie tam są naprawdę mili.
  • Kod w edytorze tekstu i użyj narzędzi wiersza polecenia. Ten samouczek zawiera wiele wskazówek.

Cieszyć się


5

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-

1
Dzięki! Nie widziałem wcześniej tych linków. Dziwi mnie, że gdzieś nie ma bardziej definitywnego przewodnika, ponieważ różne tablice odkryć mają subtelnie różne flagi kompilacji.
— Gordon Williams

Tak, ST stworzył bardzo tanią płytę i rozdał je, tysiące z nich, a sam STM32 jest niesamowitym układem, aż do F4, ale programowanie ich jest ogromnym bólem w tyłek. Ich sterowniki są niezwykle słabo udokumentowane i nie są dobrze nazwane, a znalezienie IDE i łańcucha narzędzi, które grają dobrze razem za darmo, nie jest zbyt łatwe.
— hak8or

1

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.


Nie polecam już nieobsługiwanego bareCortexM; sprawdź stm32plus na andybrown.me.uk/wk
— joeforker

Problem z takimi sterownikami urządzeń polega na tym, że są one nieefektywne. Dla odpowiednich szybkich sterowników urządzeń, które nie marnują cykli procesora, potrzebujesz pod nimi rtos, abyś mógł właściwie zaplanować.
— Martin,

0

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.


0

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.


0

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.