STM32F3DISCOVERY – fejlesztés linux alatt

Egy remek eszközt szeretnék a figyelmetekbe ajánlani. STM32F3Discovery névre hallgat. Néhány éve került piacra, a nagy gyártók fejlesztőeszköz árait tekintve egészen a megfizethető kategóriába tartozik. A kb. 14 euróért egy 72MHz-es, 256K flash, 48K RAM tulajdonságokkal rendelkező, a szó szoros értelmében százlábú mikrokontrollert és hozzá egy ST-LINK/V2 debuggert kapunk. Megspékelve egy iránytűvel, 3 tengelyes gyorsulás szenzorral, továbbá egy 3 tengelyes giroszkópppal. Hab a tortán az iránytű alakzatban elhelyezett 8db LED.


Sajnos a chip gyártója, az ST Microelectronics, csak Micro$oft platformon futó fejlesztőeszközöket ajánl hozzá.
Az opensource világ azonban erre is kínál megoldást azoknak, akik nem engednek vindózt a gépükre és akik a fizetős fejlesztőeszközök árát nem tudnák megtermelni:

A Debian (és az ebből származtatott egyéb) disztribúciók tartalmazzák a fejlesztéshez szükséges programokat.
Lássunk is neki:

sudo apt-get update

sudo apt-get install geany build-essential openocd gcc-arm-none-eabi libnewlib-arm-none-eabi

Az ST-LINK életre keltéséhez hozzunk létre egy fájlt eképpen:

sudo nano /etc/udev/rules.d/99-stlink.rules

Írjuk bele a fájlba az alábbi sort:

ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666"

Juttassuk érvényre az új beállítást:

sudo udevadm control --reload-rules

majd csatlakoztassuk az eszközünket.

Adjuk ki a parancsot:

openocd -f /usr/share/openocd/scripts/board/stm32f3discovery.cfg

Valami ilyesmit kell látnunk, ha mindent jól csináltunk és nem keménykedik velünk a gép:

$ openocd -f /usr/share/openocd/scripts/board/stm32f3discovery.cfg
Open On-Chip Debugger 0.8.0 (2014-10-20-21:48)
Licensed under GNU GPL v2
For bug reports, read
 http://openocd.sourceforge.net/doc/doxygen/bugs.html
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : This adapter doesn't support configurable speed
Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 2.902491
Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoints

Eddig akkor megvolnánk, rántsunk le egy pár példaprogramot:

git clone https://github.com/libopencm3/libopencm3-examples.git
cd libopencm3-examples
git submodule init
git submodule update

Ha a fájlok letöltődtek, jöhet egy manuális próba: adjuk ki a “make” parancsot!

make

Jó esetben minden szépen lefordul és valami ilyesmit látunk (a … sok-sok egyéb üzenetet helyettesít:)

 GENHDR include/libopencm3/stm32/f1/irq.json
 GENHDR include/libopencm3/stm32/l1/irq.json
...
...
...
 BUILD examples/tiva/lm4f/stellaris-ek-lm4f120xl/uart_echo_simple/
 BUILD examples/tiva/lm4f/stellaris-ek-lm4f120xl/usb_bulk_dev/
 BUILD examples/tiva/lm4f/stellaris-ek-lm4f120xl/usb_to_serial_cdcacm/
 BUILD examples/vf6xx/colibri-vf61/uart-gpio/

Ha nem állt le hibával a fordítás, a készült .elf fájlt imígyen tölthetjük le a discovery flash-ba:

Először telnettel csatlakozunk a debug szerverhez:

telnet localhost 4444

erre valami ilyesmit kapunk:

Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>

állítsuk le a discoveryn éppen futó programot:

reset halt

majd töltsük le a flashbe a miniblink.elf-et, azután reset:

flash write_image erase miniblink.elf
reset

Ha mindent jól csináltunk, az LD9 pislákolása rá a bizonyíték.Sok sikert!