Hallo,
nach viel Recherchen und einigen netten Helfern habe ich mein Board, den
Debugger (OpenOCD-USB aus dem Shop) und Eclipse mit GNU ARM Plugin zum
laufen bekommen.
Leier schaffe ich es noch nicht mein .elf File auf den Controller zu
laden:
1 | C:\Users\Kjartan\Desktop>openocd -d0 -f interface/openocd-usb.cfg -f target/stm32.cfg -c init -c targets -c "halt" -c "flash write_image erase test.elf" -c "verify_image test.elf" -c "reset run" -c shutdown
|
2 |
|
3 | Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
|
4 | Licensed under GNU GPL v2
|
5 | For bug reports, read
|
6 | http://openocd.berlios.de/doc/doxygen/bugs.html
|
7 | debug_level: 0
|
8 | 1000 kHz
|
9 | jtag_nsrst_delay: 100
|
10 | jtag_ntrst_delay: 100
|
11 | TargetName Type Endian TapName State
|
12 | -- ------------------ ---------- ------ ------------------ ------------
|
13 | 0* stm32.cpu cortex_m3 little stm32.cpu running
|
14 | target state: halted
|
15 | target halted due to debug-request, current mode: Thread
|
16 | xPSR: 0x61000000 pc: 0x0800116c msp: 0x20000a28
|
17 | auto erase enabled
|
18 | Error: No flash at address 0x00008000
|
19 |
|
20 | Error: No flash at address 0x00010968
|
21 |
|
22 | wrote 0 bytes from file test.elf in 0.031200s (0.000 kb/s)
|
23 | verified 2464 bytes in 0.452401s (5.319 kb/s)
|
24 | shutdown command invoked
|
der Fehler (mitten drin):
1 | Error: No flash at address 0x00008000
|
2 | Error: No flash at address 0x00010968
|
Offensichtlich weiß der OpenOCD-USB nicht wo er das hin flashen soll,
daher mein Versuch: den Anfang des Flashspeichers dazu schreiben (bei
flash write_image, 0x08000000):
1 | C:\Users\Kjartan\Desktop>openocd -d0 -f interface/openocd-usb.cfg -f target/stm32.cfg -c init -c targets -c "halt" -c "flash write_image erase test.elf 0x08000000" -c "verify_image test.elf" -c "reset run" -c shutdown
|
2 | Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
|
3 | Licensed under GNU GPL v2
|
4 | For bug reports, read
|
5 | http://openocd.berlios.de/doc/doxygen/bugs.html
|
6 | debug_level: 0
|
7 | 1000 kHz
|
8 | jtag_nsrst_delay: 100
|
9 | jtag_ntrst_delay: 100
|
10 | TargetName Type Endian TapName State
|
11 | -- ------------------ ---------- ------ ------------------ ------------
|
12 | 0* stm32.cpu cortex_m3 little stm32.cpu running
|
13 | target state: halted
|
14 | target halted due to debug-request, current mode: Thread
|
15 | xPSR: 0x61000000 pc: 0x08000a54 msp: 0x20000a10
|
16 | auto erase enabled
|
17 | wrote 35840 bytes from file test.elf in 3.572406s (9.797 kb/s)
|
18 | verified 2464 bytes in 0.468000s (5.142 kb/s)
|
19 | shutdown command invoked
|
Sieht ganz so aus, als stünde das Programm jetzt zumindest irgendwo im
Flash. Laufen tut noch immer das alte Programm (das schon drauf war) :(
Weiß jemand wie der Befehl richtig lauten sollte oder sollten die Flash
Adressen gar schon aus dem .elf kommen (in Eclipse + GNU ARM Plugin was
einstellen)?
Memorymap ist als Anhang dabei, Das ganze Datenblatt gibts hier:
http://www.st.com/stonline/products/literature/ds/13587.pdf
Wäre euch sehr dankbar wenn ihr mir bei der letzten Hürde etwas helfen
könntet ;)
Controller: STM32F103RB (ein ARM Cortex-M3)