Freddie Chopin ARM toolchain tutorial

ChibiOS

Przykłady STM32: makefile

Opensource STM32 development

Opensource toolchain arm

 

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

GNU ARM ECLIPSE

 

Inne strony, setup środowiska:

Programowanie STM32 pod Linuxem

Programowanie STM32F2,F4 ARM pod Linuxem

Instalacja toolchain'a pdo GNU/Linux

STM32Discovery pod GNU/Linux

What should I use to develop on STM32 under Linux?

GCC/Eclipse for STM32Nucleo

STM32 Primer

STM32CubeMX Makefile Linux GCC

STM32F0 Hertaville

 

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:

STM32 kurs

STM32 pod Linuxem

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

Programowanie STM32F4

Narzędzia dla Windows

 

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.

JTAG-SWD

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:

Makefile

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://libopencm3.org
 

 

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/

 
-f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg-f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg-f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg-f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg