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
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.
Hallo Matz, Danke für die Links. Ich werde es da mal versuchen. Gruß, Jörg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.