Ich benötige für 'nen Stm32F4 einen Bootloader mit ein paar besonderen Eigenschaften. Um nicht absolut bei 0 anfangen zu müssen, würde ich dazu gerne auf einen bestehenden Bootloader aufsetzen. Im Beitrag "Custom Bootloader für den STM32??" habe ich u.a. gelesen: > Wenn richtig erinnert, ist auch im Code ("ZIP") zur Application Note > "STM32 Flash Programming" ein serieller Bootloader drin ... Auf www.st.com konnte ich diese Application Note leider nicht finden (vielleicht hab' ich ja auch falsch gesucht?). Immerhin habe ich das Programming Manual gefunden: http://www.st.com/web/en/resource/technical/document/programming_manual/CD00233952.pdf Der im o.g. Beitrag enthaltene Link (I²C Bootloader?): http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/APPLICATION_NOTE/CD00251611.pdf ist tot, aber ich denke ich habe das betreffende Pdf hier gefunden: http://www.icbase.com/Promotion/download/AN3078.pdf Leider enthält dies aber auch kein Beispielcode. Ich bin also auf der Suche nach Bootloader Beispielcode (z.B. via Uart), möglichst kompilierbar (am besten mit gcc) inkl. Makefile, Startup Code und Linkerskript. Hat jemand eine Idee ob/wo ich fündig werden könnte?
Hallo Joe, ein unter GPL lizensierter Bootloader (auch) für die STM32 ist der OpenBLT von Feaser: http://feaser.com/openblt/doku.php?id=homepage Viele Grüße bernardo
Kuck dir das mal an. http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743/PF257844 Vielleicht hilfts ja.
Danke für eure Antworten. Mit dem entscheidenden Suchbegiff »in-application programming« fand ich nun diese Übersicht: http://www.st.com/stonline/stappl/resourceSelector/app?page=fullResourceSelector&doctype=application_note&SeriesID=1743 und letztlich auch die Application Note AN3965 http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743/PF257903 »STM32F4 in-application programming (IAP) using the USART (AN3965)« inkl. Sourcen (hab noch nicht kompiliert, hmm, es gibt offenbar kein vorgefertigtes Setup für gcc, schade eigentlich).
Hallo, ich versuche grade den OpenBLT von Feaser zum laufen zu bekommen. Hardware STM32F103C8T6 UART1 TX PA9 / RX PA10, 12Mhz Quarz Leider nutzt das Beispiel Olimex STM32P103 GCC die UART2. Kann mir da evtl jemand weiter helfen? Ich habe zwar bereits versucht die Init zu ändern, aber ich bekomme keinen Kontakt von der IDE zum STM32. Gruß Tobias
Hallo Tobias, für UART1 muss vor dem Kompilieren in blt_conf.h der Kanal-Index auf Null (=UART1) gesetzt werden: ... #define BOOT_COM_UART_CHANNEL_INDEX (0) ... Hier der Link zur Datei für das Olimexboard und gcc, in der der Eintrag zu ändern ist: http://sourceforge.net/p/openblt/code/HEAD/tree/trunk/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC/Boot/blt_conf.h#l89 Viele Grüße bernardo
Bernardo F. schrieb: > Hallo Tobias, > > für UART1 muss vor dem Kompilieren in blt_conf.h der Kanal-Index auf > Null (=UART1) gesetzt werden: > > ... > #define BOOT_COM_UART_CHANNEL_INDEX (0) > ... > > Hier der Link zur Datei für das Olimexboard und gcc, in der der Eintrag > zu ändern ist: > http://sourceforge.net/p/openblt/code/HEAD/tree/trunk/Target/Demo/ARMCM3_STM32_Olimex_STM32P103_GCC/Boot/blt_conf.h#l89 > > Viele Grüße > bernardo Hallo. vielen Dank. Das hatte ich bereits getan. Nachdem ich den ganzen Code durchforstet habe, läuft jetzt der Bootloader und das Demoprogramm. Im Bootloader Main müssen noch die Pinne für UART 1 definiert werden (ich dachte das ist nur zum loggen gedacht) Und im Demoprogramm sind mehrere Stellen an der statt UART2 die Uart1 deklariert und eingestellt werden muss. Nun läuft der Bootloader zumindest läuft der Bootloader unter der Codelite IDE. Mein eigenes User Programm habe ich in CooCox geschrieben. Da bekomme ich es noch nicht hin dass das Programm läuft wenn ich es über den Bootloader lade. Ich habe diese 32Bit am ende der Vectortabelle eingefügt. Ich habe die Progammstartadresse geändert. Nur habe ich Probleme den Stackpointer richtig zu setzen. Gruß Tobias
Hallo, ich hänge mich hier einfach mal mit ran. Und zwar habe ich folgendes Problem: Ich möchte die Anwendung, die später mal vom Bootloader geflasht und angesprungen wird debuggen. Die Startadresse im Flash habe ich im Linker-File geändert, auch den Offset für die Vektortabelle gesetzt. Nun ist mein Problem, dass der Debugger ST-Link V2 über openocd in eclipse immernoch die alte Startadresse des Reset_Handlers anspringt, obwohl dieser laut .map file an der neuen Adresse steht. Irgendwo hab ich gelesen, dass der Debugger anhand des .elf files weiß, wo er starten muss. Ist das so? Wie kann ich die Anwendung debuggen, ohne den Bootloader installiert zu haben? Geht das überhaupt, oder braucht der Controller Code an seiner Startadresse z.B. 0x0800000 wenn die eigentliche Anwendung bei 0x08004000 beginnt? Wie debuggt man sowas?
Ich habe es so gemacht, das der Bootloader vom Hauptprogramm aufgerufen wird. Ich hatte den interresanten Effekt, das der Debugger in meinem Fall für den Bootloader automatisch in dem Moment begonnen hat, wenn ich vom Hauptprogramm in den Bootloader gesprungen ist. Habe nicht gedacht das es dann doch so einfach ist.
Der Debugger wartet darauf, das der MC mit seiner Codeausführung an der Einsprungadresse deines Codes vorbeikommt. Wenn du den auf 0x800000 hast dann passiert das sofort. Ist der weister hinten dann brauchst du irgend ein Programm an 0x800000 das den Sprung an deine neue Einsprungadresse ausführt.
Hallo Tobias, Habe jetzt das selbe Problem mit dem openblt und mit meinem eigenen User Programm. Hast du hierfür eine Lösung gefunden? sg mathias
Debugger, die entsprechendes können, setzen den PC und SP, anstatt nach dem Reset loszulaufen. Ich arbeite nicht mit OpenOCD. Aber kurz die Problematik. Beim Reset liest der Prozessor SP und PC aus der Vektortabelle. Ist diese gelöscht, hängt sich hier der Prozessor auf. (Lesen von 0xFFFFFFFF, Hard Fault Trap ist nicht definiert ....) Insofern muß OpenOCD so eingestellt werden, dass dieser keinen Reset durchführt und nur die Register setzt. Leichter ist es meist, den Bootloader so zu flashen, dass dieser immer die Applikation anspringt.
Also ich habe das Bootloader Problem gelöst es ist auch ein neues Demo im SVN für das Nucleo Board sg mathias
Hallo Zusammen, der Thread ist leider schon etwas älter aber vielleicht gibts dazu ja noch eine kleine Hilfe, ich wäre jedenfalls dankbar! Mein Problem: Ich nutze einen STM32F334 und möchte via den OpenBlt mit CAN die SW flashen. Das Ganze fuznktioniert auch so lange bis ich den Bereich für die Checksumme integrieren will, dann stürzt das Programm nach 400 Byte (ich vermute die ersten 512 Byte)ab weil es einen programmingerror vom Flash gibt. Programmieren tu ich über MicroBoot das vom BLT mitgeliefert wird. Mein CAN-Dongle ist ein PCAN-Adapter. Hat jemand schon mal via CAN mit OpenBlt programmiert? Wäre dankbar für Anregungen! Gruß Carsten
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.