Difference between revisions of "STLink"
Line 108: | Line 108: | ||
(gdb) detach | (gdb) detach | ||
The option bytes do not cover the Readout Protection (RDP), but | The option bytes do not cover the Readout Protection (RDP), but the RDP is disabled anyhow... | ||
[[Category:Firmware Flashing]] [[Category:Developer_Documentation]] | [[Category:Firmware Flashing]] [[Category:Developer_Documentation]] |
Revision as of 15:36, 24 April 2015
Every STM discovery / eval board comes with a ST-Link V2 on board, with one exception; the STM32VL version comes with a ST-Link V1.
SWD Header
Install Software
The st-flash and st-util tools are needed, provied by texane
Download and compile
$ cd /opt $ git clone git://github.com/texane/stlink.git stlink $ cd stlink $ ./autogen.sh $ ./configure $ make
Set enviroment variable
$ exportline="PATH=$PATH:/opt/stlink" $ if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi $ source ~/.profile
Add udev rules
$ sudo cp /opt/stlink/49-stlinkv*.rules /etc/udev/rules.d $ sudo udevadm control --reload-rules
ST-LinkV1 requires a bit different treatment, read the Readme.txt
Airframe.xml setup
Connect the ST-Link to the MCU. If a complete STM32Fx-Discovery board is used, CN3 jumpers need to be set. To program a external MCU, remove CN3 jumpers and connect the external MCU with the SWD header.
To use SWD via STLink as default:
Set FLASH_MODE=STLINK
Update the ST-Link to blackmagic probe
The STM32F103 (STLink MCU) can be flashed with the blackmagic's firware.
Two STLinkV2 Method
Use one STLink to flash another
Hardware Setup:
One STLinkV2 (connected via USB) is programming the other one. Change the 4 Solder jumpers on the bottom of the target STLinkV2 from "DEFAULT" to "REVERSED".
Connections between the two STLinks
Use | From Programmer | To Target |
---|---|---|
5V | P2-5V | P2-5V |
SWDIO | CN2-4 | CN3-2 |
SWDCLK | CN2-2 | CN3-3 |
GND | CN2-3 | CN3-4 |
Download and build the Firmware
git clone https://github.com/blacksphere/blackmagic cd blackmagic git submodule init git submodule update make cd src make clean make PROBE_HOST=stlink
Remove the readout protection, erase and flash
openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg -c "init" -c "halt" -c "stm32f1x unlock 0" -c "shutdown" st-flash erase st-flash --reset write blackmagic.bin 0x8002000 st-flash write blackmagic_dfu.bin 0x8000000
Documentation
Black Magic Discovery from Esden <-- This also describes how to remove the read out protection.
embdev.net page
BMP Method
Use a BMP to flash a STLink
Transfer the solder jumpers from "Default" to "Reversed" and build the firmware as descibed above.
Connect the BMP to the CN2 header (see Pinout above).
Start gdb, erase the option bytes and flash BMP
(gdb) target extended-remote /dev/ttyACM0 (gdb) mon swdp_scan (gdb) att 1 (gdb) mon option erase (gdb) load /dir/to/blackmagic (gdb) load /dir/to/blackmagic_dfu (gdb) detach
The option bytes do not cover the Readout Protection (RDP), but the RDP is disabled anyhow...