Forum: Mikrocontroller und Digitale Elektronik STM32 Keil CubeMX linken an alternative Adresse (Bootloader)


von Jörg S. (joerg_s)


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

von Jörg S. (joerg_s)


Lesenswert?

wirklich gar keine Idee?

Gruß Jörg

von Matz K. (xt-matz)


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.

von Jörg S. (joerg_s)


Lesenswert?

Hallo Matz,

Danke für die Links.
Ich werde es da mal versuchen.

Gruß,
Jörg

von Steffen R. (steffen_rose)


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.

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.