Fxkr (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Fxkr (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
[[Datei:STM8SVLDISCOVERY JTAG.jpg|thumb|right|480px|STM8SVLDISCOVERY: JTAG ist über CN5 herausgeführt. Der | [[Datei:STM8SVLDISCOVERY JTAG.jpg|thumb|right|480px|STM8SVLDISCOVERY: JTAG ist über CN5 herausgeführt. Der Pinheader muss selbst bestückt werden. | ||
<pre> | <pre> | ||
Zeile 8: | Zeile 8: | ||
</pre>]] | </pre>]] | ||
Wir haben einen Satz [http://www.blacksphere.co.nz/main/blackmagic | Wir haben einen Satz Black Magic Probes ([http://www.blacksphere.co.nz/main/blackmagic Homepage], [https://github.com/gsmcmullin/blackmagic Quellcode]) auf Basis von STM8Discovery Eval Boards ([http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00040810.pdf Data Sheet], [http://www.digikey.de/product-search/de?x=-1146&y=-73&lang=de&site=de&KeyWords=STM8SVLDISCOVERY Digikey]: 5,70€) gebaut (die Platform im Quellcode heißt swlink). | ||
Von den Eval Boards wird nur die obere Hälfte (mit dem USB Connector) verwendet; diese enthält den ST-Link. Die untere Hälfte wird nicht benötigt und kann abgetrennt und fachgerecht entsorgt werden. | Von den Eval Boards wird nur die obere Hälfte (mit dem USB Connector) verwendet; diese enthält den ST-Link. Die untere Hälfte wird nicht benötigt und kann abgetrennt und fachgerecht entsorgt werden. | ||
== Flashen == | |||
OpenOCD starten, zum Beispiel (entsprechend des verwendeten Programmers anpassen): | |||
sudo openocd -f interface/olimex-arm-usb-tiny-h.cfg -f target/stm32f1x.cfg | |||
Dann per <code>telnet 4444</code> verbinden. Zuerst müssen Speicherbank und einzelne Sektoren unlockt werden (nachprüfen über <code>flash info 0</code>; nur die gesperrten Sektoren entsperren und nicht "alle", sonst schlägt dies warum auch immer fehl). Dann Chip resetten und Bootloader und Firmware flashen (absolute Pfade verwenden!): | |||
'''> stm32f1x unlock 0''' | |||
stm32x unlocked. | |||
INFO: a reset or power cycle is required for the new settings to take effect. | |||
'''> flash protect 0 0 7 off''' | |||
cleared protection for sectors 0 through 7 on flash bank 0 | |||
'''> reset''' | |||
'''> flash write_image erase unlock /.../blackmagic/src/blackmagic_dfu.bin 0x08000000''' | |||
auto erase enabled | |||
auto unlock enabled | |||
aligned end protect sector to a 4 sector boundary | |||
wrote 7168 bytes from file /.../blackmagic/src/blackmagic_dfu.bin in 0.877855s (7.974 KiB/s) | |||
'''> flash write_image erase unlock /.../blackmagic/src/blackmagic.bin 0x08002000''' | |||
auto erase enabled | |||
auto unlock enabled | |||
aligned end protect sector to a 4 sector boundary | |||
wrote 50176 bytes from file /.../blackmagic/src/blackmagic.bin in 3.347591s (14.637 KiB/s) | |||
'''> reset halt''' | |||
JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) | |||
JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) | |||
target state: halted | |||
target halted due to debug-request, current mode: Thread | |||
xPSR: 0x01000000 pc: 0x080016b8 msp: 0x20005000 | |||
Nach dem Bootloader flashen hätte die Firmware auch über <code>dfu-util</code> geflasht werden können. | |||
Sobald die BMP-Firmware läuft kann die BMP selbst nicht mehr über JTAG beflasht werden - dann kann nur noch über <code>dfu-util</code> neue Firmware geflasht werden (es kann natürlich immer noch nRESET während des Poweron auf GND gezogen werden, um das Starten der Firmware zu verhindern und wieder per JTAG an den Chip ranzukommen). | |||
Nun sollte sich die BMP per USB melden (<code>idVendor=0x1d50</code>, <code>idProduct=0x6018</code>) und <code>/dev/ttyACM{0,1}</code> bereitstellen. | |||
Herzlichen Glückwunsch! |
Version vom 3. Oktober 2013, 22:35 Uhr
Wir haben einen Satz Black Magic Probes (Homepage, Quellcode) auf Basis von STM8Discovery Eval Boards (Data Sheet, Digikey: 5,70€) gebaut (die Platform im Quellcode heißt swlink).
Von den Eval Boards wird nur die obere Hälfte (mit dem USB Connector) verwendet; diese enthält den ST-Link. Die untere Hälfte wird nicht benötigt und kann abgetrennt und fachgerecht entsorgt werden.
Flashen
OpenOCD starten, zum Beispiel (entsprechend des verwendeten Programmers anpassen):
sudo openocd -f interface/olimex-arm-usb-tiny-h.cfg -f target/stm32f1x.cfg
Dann per telnet 4444
verbinden. Zuerst müssen Speicherbank und einzelne Sektoren unlockt werden (nachprüfen über flash info 0
; nur die gesperrten Sektoren entsperren und nicht "alle", sonst schlägt dies warum auch immer fehl). Dann Chip resetten und Bootloader und Firmware flashen (absolute Pfade verwenden!):
> stm32f1x unlock 0 stm32x unlocked. INFO: a reset or power cycle is required for the new settings to take effect. > flash protect 0 0 7 off cleared protection for sectors 0 through 7 on flash bank 0 > reset > flash write_image erase unlock /.../blackmagic/src/blackmagic_dfu.bin 0x08000000 auto erase enabled auto unlock enabled aligned end protect sector to a 4 sector boundary wrote 7168 bytes from file /.../blackmagic/src/blackmagic_dfu.bin in 0.877855s (7.974 KiB/s) > flash write_image erase unlock /.../blackmagic/src/blackmagic.bin 0x08002000 auto erase enabled auto unlock enabled aligned end protect sector to a 4 sector boundary wrote 50176 bytes from file /.../blackmagic/src/blackmagic.bin in 3.347591s (14.637 KiB/s) > reset halt JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) JTAG tap: stm32f1x.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080016b8 msp: 0x20005000
Nach dem Bootloader flashen hätte die Firmware auch über dfu-util
geflasht werden können.
Sobald die BMP-Firmware läuft kann die BMP selbst nicht mehr über JTAG beflasht werden - dann kann nur noch über dfu-util
neue Firmware geflasht werden (es kann natürlich immer noch nRESET während des Poweron auf GND gezogen werden, um das Starten der Firmware zu verhindern und wieder per JTAG an den Chip ranzukommen).
Nun sollte sich die BMP per USB melden (idVendor=0x1d50
, idProduct=0x6018
) und /dev/ttyACM{0,1}
bereitstellen.
Herzlichen Glückwunsch!