STM32 Linux
Debugger OpenOCD
- [http://openocd.org/doc/html/index.html Help page.]
- Use either ST-LINK or OpenOCD, can work with ST-LINK2
- For example OpenOCD, run command as follow to install
install openocs: sudo apt-get install openocd
setup up for usbdevice: sudo vi /etc/udev/rules.d/99-stlink.rules
add conent: ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666"
reload setup: sudo udevadm control –reload-rules
open board: openocd -f /usr/share/openocd/scripts/board/stm32f3discovery.cfg
or use: /usr/share/openocd/scripts# openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg
- If well connected, result will show:
Open On-Chip Debugger 0.7.0 (2013-05-15-17:44) 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 : Target voltage: 2.915198 Info : stm32f3x.cpu: hardware has 6 breakpoints, 4 watchpoint
- Run another terminal and telnet to the board: telnet localhost 4444
- halt it into debug mode: reset halt or: reset init
- Reflash bin into board: flash write_image erase maple_mini_boot.bin 0x08000000 flash write_image erase /media/sf_VM_XP_share/LED.hex
- Finall reset it to start up again: reset run
Toolchain
- Install: sudo apt-get install gcc-arm-none-eabi
Firmware libopencm3 and test code
- git clone the firmware and try stm32f103 demo blink code, the firmware works like arduino git clone https://github.com/libopencm3/libopencm3-examples.git cd libopencm3-examples git submodule init // git submodule update make
- enter into board folder like: cd libopencm3-examples/examples/stm32/f3/stm32f3-discovery/miniblink
- for STM32F1x board, enter into /libopencm3-examples/examples/stm32/f1/stm32-h103//miniblink/
- firmware support openocd, can run make flash directory
- Or manually telnet to openocd: telnet localhost 4444 reset halt flash write_image erase miniblink.elf reset