Forum: Mikrocontroller und Digitale Elektronik OpenOCD Cortex-M3 flashen, Speicheradressen? (STM32)


von Kjartan F. (kjartan)


Angehängte Dateien:

Lesenswert?

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)

von Andreas B. (Gast)


Lesenswert?

Kjartan Ferstl schrieb:
> der Fehler (mitten drin):Error: No flash at address 0x00008000
> Error: No flash at address 0x00010968

Da ist ja laut der memorymap.png auch kein Flash (bzw. nur gespiegelt). 
OpenOCD schreibt schreibt auch an die Adressen, die die Sektionen im ELF 
Objekt haben, also müssen die dann schon stimmen. Zeig mal ein "objdump 
-h" von dem test.elf.

Ansonsten kenn ich vom AT91SAM7, dass in Standardkonfiguration OpenOCD 
die Flash-Bänke nicht automatisch erkennt. Da wird dann vielleicht noch 
ein "flash probe 0" nötig um hier die erste Flash-Bank (0, die einzige 
in meinem Fall) zu erkennen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.