STM32 Keil CubeMX linken an alternative Adresse (Bootloader)

OP #4151990
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche grade einen Bootloader für den STM32F4 mit Keil uVision4 zu 
erstellen.
Mein Problem dabei ist gar nicht der Bootloader selber, sondern das 
Erzeugen des Hexfiles meiner Applikation, die ich später mit dem 
Bootloader laden will.

Normalerweise ist die Startardesse des IROM1 bei 0x8000000. Dort liegt 
ja jetzt mein Bootloader. Die Firmware soll nun ab Addresse 0x8002C00 
beginnen.

Bei einem einfachen Keil-Projekt stelle ich in den Projekt-Settings die 
IROM1 Addresse auf den gewünschten Wert und gebe unter Linker die 
R/O-Base ebenfalls an dieser Adresse an. Compilieren und alles ist gut. 
Das Projekt startet im Debugger und ich kann es auch im Bootloader 
programmieren und dieser startet dann das in Keil erstellte und via 
Bootloader geladene Testprogramm (LED Blinken).

Soweit , so gut.

Erstelle ich aber ein Projekt in CubeMX und verfahre gleich, dann läuft 
noch nichtmal der Debugger. Nicht einmal der ResetHandler wird erreicht. 
Stoppe ich den Debugger, steht der PC auf Adresse 0xFFFFFFFF.

Gibt es etwas, an das ich nicht gedacht habe, z.B. Adressen der 
Interrupt-Vector-Tabelle etc. und wenn ja wo kann ich das einstellen?

Weiss jemand, warum das nur im Zusammenhang mit CubeMX-Projekten 
auftritt?

Wäre für Hilfe dankbar.

Gruß, Jörg
#4157382
Lesenswert?
• ▲
▼
Hallo Jörg,

ich kann leider auch nicht konkret helfen.

Aber vielleicht kommst Du weiter, wenn Du die Frage im ARM KEIL Support 
Forum stellst: https://silver.arm.com/ und dann weiter unter "KEIL 
Support".
Du musst Dich zwar registrieren. Mir hat das aber schon oft gut 
weitergeholfen bei ziemlich kniffligen Fragen rund um uVision...

Alternativ sei zumindest noch erwähnt das offene Forum von KEIL selbst:
http://www.keil.com/forum/threads.asp

Viel ERfolg.
M.K.
#4157633
Lesenswert?
• ▲
▼
Deine gewählte Adresse finde ich etwas krumm, aber egal.

Der Prozessor fängt normalerweise immer an der Stelle an, wo aktuell 
dein Bootloader fehlt. Du must dort zumindest einen Dummy-Programm 
hinlegen, welches in deine Applikation verzweigt.

Ansonsten liest er als Stackpointer AnfangsAdresse und Adresse für den 
ResetHandler jeweils die 0xFFFFFFFF.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.