Guten Morgen
Ich arbeite derzeit an einem Projekt für einen STM32F4VET, welches aus
einem Bootloader und dem eigentlichen Programm besteht. Als IDE benutze
ich CLion, dort wird zum flashen und debuggen OpenOCD verwendet.
Der Programmcode funktioniert ohne Probleme, wenn ich die .hex des
Bootloaders (mit Flash Erase) und anschließend die des eigentlichen
Programms (ohne Flash Erase) per ST-Link-Utility flashe. Ein Problem mit
dem eigentlichen Programm besteht also nicht. Im ST-Link-Utility ist
klar zu erkennen, dass die richtigen Flash Bereiche beschrieben werden.
Eine kontrolle der .map Dateien bestätigt dies.
Versuche ich jedoch aus CLion heraus das eigentliche Programm per
OpenOCD zu flashen, werden Veränderungen am ersten Sektor vorgenommen,
in welchem mein Bootloader liegt, sodass dieser nicht mehr ausführbar
ist. An den Parametern mit denen OpenOCD aufgerufen wird ist zu
erkennen, dass die .elf Datei benutzt wird, nicht die .hex.
Ich verwende die Konfigurationsdatei "stm32f412g-disco.cfg". Diese und
die ihr angehängten Konfigurationsdateien habe ich bereits erfolglos
nach einer festen Flashadresse durchsucht.
Ich habe versucht mit dem elf-Viewer "ELF Parser" zu schauen, ob in der
.elf Datei die richtige Flash-Adresse enthalten ist, dort bin ich im Tab
PHeaders auf die Adresse von Sector 0 gestoßen. Ich bin mir jedoch nicht
sicher ob dies das Problem ist, da in der .hex, welche aus der .elf
erzeugt wird die richtige Adresse enthalten ist.
Geplante Flash Nutzung:
Sector 0 (0x08000000-0x08003FFF): Bootloader,
Sector 1 (0x08004000-0x08007FFF): EEPROM-Emulation,
Sector 2 (0x08008000-...) und folgende: Programm
Auszug aus *_FLASH.ld des Bootloaders:
Kannst du vielleicht das ELF-File einfach mal hier anhängen?
Du hast übrigens 2x "tcl_port disabled" – sollte eines der beiden
vielleicht "telnet_port disabled" hätte werden sollen?
Jörg W. schrieb:> Du hast übrigens 2x "tcl_port disabled" – sollte eines der beiden> vielleicht "telnet_port disabled" hätte werden sollen?
Die Befehlszeile wird vom CLion Plugin automatisch generiert, da kann
ich bis auf die Auswahl der .cfg leider keinen Einfluss drauf nehmen.
Jörg W. schrieb:> Kannst du vielleicht das ELF-File einfach mal hier anhängen?
Ist im Anhang.
Die Startadresse (Section .isr_vector) ist 0x8008000, das passt also.
Habe keinen STM32 zur Hand um zu gucken, was da bei mir passiert. Sieht
zumindest auf den ersten Blick nicht falsch aus so.
Christian T. schrieb:> Das Thema kann geschlossen werden, der Fehler lag an einem> Tippfehler...
Es ist durchaus höflich, auch die Auflösung mitzuteilen, damit andere
auch was davon haben können. Etwa über die Forensuche. Also was für ein
Tippfehler?