mikrocontroller.net

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


Autor: Kjartan Ferstl (kjartan)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
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

Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
debug_level: 0
1000 kHz
jtag_nsrst_delay: 100
jtag_ntrst_delay: 100
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32.cpu          cortex_m3  little stm32.cpu          running
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x0800116c msp: 0x20000a28
auto erase enabled
Error: No flash at address 0x00008000

Error: No flash at address 0x00010968

wrote 0 bytes from file test.elf in 0.031200s (0.000 kb/s)
verified 2464 bytes in 0.452401s (5.319 kb/s)
shutdown command invoked

der Fehler (mitten drin):
Error: No flash at address 0x00008000
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):
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
Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.berlios.de/doc/doxygen/bugs.html
debug_level: 0
1000 kHz
jtag_nsrst_delay: 100
jtag_ntrst_delay: 100
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32.cpu          cortex_m3  little stm32.cpu          running
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x08000a54 msp: 0x20000a10
auto erase enabled
wrote 35840 bytes from file test.elf in 3.572406s (9.797 kb/s)
verified 2464 bytes in 0.468000s (5.142 kb/s)
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)

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.