Freddie Chopin ARM toolchain tutorial
STM32F4 i STM32F1 środowisko:
http://eliaselectronics.com/stm32f4-tutorials/setting-up-the-stm32f4-arm-development-toolchain/
https://github.com/devthrash/STM32F4-workarea
GNU Toolchain form ARM Embedded Processors https://launchpad.net/gcc-arm-embedded
Inne strony, setup środowiska:
Programowanie STM32 pod Linuxem
Programowanie STM32F2,F4 ARM pod Linuxem
Instalacja toolchain'a pdo GNU/Linux
What should I use to develop on STM32 under Linux?
STM32CubeMX Makefile Linux GCC
http://snowcap.fi/blog/2011/11/27/compiling-stm32-examples-in-linux/
http://www.hackvandedam.nl/blog/?p=707
http://electronics.stackexchange.com/questions/32991/how-do-i-develop-for-stm32-discovery-on-linux
po Polsku:
http://www.elektroda.pl/rtvforum/topic2024489.html
stm32.eu http://www.stm32.eu/pierwsze_kroki_z_STM32NUCLEO
Konfiguracja Eclipse, Gnu tools arm...
http://forum.atnel.pl/topic5070.html
ARM, STM32, CooCox IDE, Code::Blocks (EPS) | Embedded Plugin Suite, Em::Blocks, OpenSTM32
JTAG: J-Link, CoLink-ed, Amontec JTAG,...
STM32 OpenOCD JTAG SWD:
W przypadku korzystania z USB JTAG (np. USB-MiniJTAG HAOYU Electronics www.powermcu.com, który
jest klonem Segger JTAG), gdy zamiast JTAG-a chcemy skorzystać z programowania/debugowania przez SWD
np. przy mikrokontrolerach STM32, należy połączyć Piny 20-pinowego złącza JTAG: 7 - SWDIO, 9 - SWCLK, 4 - GND
do swojego układu.
Widok na złącze JTAG - męskie (male connector). Do połączenia SWD wystarczą 3 piny: 7,9,4. Przydatny może się także okazać pin 15 - RESET.
Wywołanie OpenOCD np.:
../src/openocd -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg
Połączenie telnet z OpenOCD:
telnet localhost 4444
Zaprogramowanie pamięci flash (openocd + telnet):
reset halt
flash write_image /path/to/image.elf
verify_image /path/to/image.elf
reset run
Uniwersalny plik Makefile, który przygotowałem do użytku z wygenerowanym kodem za pomocą CubeMX dla środowiska SW4STM32:
Sposób postępowania:
1. Wygenerować projekt w CubeMX
2. Skopiować Makefile (kompilacja przez make - wcześniej do PATH musi być dodany katalog bin kompilatora arm - gdzie znajdują
się arm-none-eabi-gcc..., zaprogramowanie przez make program - wcześniej należy mieć zainstalowany OpenOCD i ustawiony w Makefile)
Wykorzystanie Eclipse + GNU ARM Eclipse:
1. Utworzyć nowy projekt jako istniejący projekt makefile.
2. Zaznaczyczy cross arm - jako kompilator
3. Ustawić we właściwościach projektu (prawym klawiszem na projekcie i Properties) -> w C/C++ General -> Paths and Symbols, w Symbols symbol
określający mikrokontroler, np. STM32F103xE
4. Ustawić ścieżki do plików nagłówkowych, potrzebne, aby wewnętrzny analizator kodu w Eclipse nie wskazywał błędów (aby stworzył
poprawnie index): we właściwościach projektu -> w C/C++ General -> Paths and Symbols, w Includes dodać (Add...). Zaznaczyć pole Add to all languages
, wybrać (Workspace...) i wskazywać kolejne katalogi zawierające pliki *.h. Po tym i po przebudowaniu indeksu powinny zniknąć wszystkie błędy.
5. Budowanie powinno normalnie działać poprzez Ctrl+B - Build (powinien wykonać się plik Makefile)
6. W menu u góry Run - > External Tools -> External Tools Configuration należy skonfigurować uruchomienie OpenOCD: kliknąć prawym klawiszem myszy na Program i utworzyć nowy,
nazwać OpenOCD JLINK SWD STM32F103. W polu Location podać, gdzie znajduje się plik wykonywalny openocd np. /home/darek/STM32Toolchain/openocd/src/openocd, w polu
Workin Directory podać miejsce, gdzie znajdują się skrypty openocd, np. /home/darek/STM32Toolchain/openocd/tcl
W polu Arguments wpisać: -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg W zakładce Refresh, powinno być wybrane: The entire workspace oraz zaznaczone Recursively include subfolders. W zakładce Build powinno być zaznaczone Build before launch, The entire workspace oraz Include referenced projects. W zakładce common powinno być Save as local file. Należy kliknąć Apply - ewentualnie dodać do ulubionych. Można też uruchomić openocd - klikając Run.
7. W menu u góry Run -> Debug Configurations utworzyć GDB OpenOCD Debugging. W C/C++ Application powinna być nazwa skompilowanej aplikacji z rozszerzeniem elf. Build configuration powinno być Use workspace settings. W zakładce Debugger nie powinno być zaznaczone Start OpenOCD locally - bo już go uruchomiliśmy ręcznie. Powinno być zaznaczone Allocate console for OpenOCD. W zakładce Startup, Init Reset Type powinno być init. W Additional commands dodać: set remotetimeout 20. W zakładce common - Save as local file. Kliknąć Apply i Debug - aby uruchomić.
8. Nastąpi zaprogramowanie układu programem oraz uruchomienie i zatrzymanie na funkcji main. Aby uruchomić dalej program można (będąc już w perspektywie Debug) kliknąć przycisk zielonej strzałki (Resume - F8).
Biblioteka libopencm3:
http://www.kaltpost.de/?page_id=485
https://balau82.wordpress.com/2013/08/14/flashing-the-stm32-p152-board-with-openocd/
Zewnętrzne biblioteki HAL STM32:
https://stm32f4-discovery.net/2015/07/all-stm32-hal-libraries/