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!