Guten Tag, ich habe schon wieder eine Frage wo ich nicht weiter komme. Ich möchte gerade den originalen Bootloader meines STM32F103 probieren. Dazu habe ich an den Pins PA9 und PA10 einen TTL to 232 Converter angeschlossen. (Die Uart in meinem Code funktioniert.) Somit gehe ich davon aus das ich die richtigen pins und rx und tx richtig habe. Denn Boot0 Pin habe ich auf 3.3v und nach einem Reset läuft die Applikation nicht los. Wenn ich mich aber mit dem Flash Loader Demonstrator verbinden will scheitere ich. was mache ich falsch? Danke für Eure Hilfe
foerch schrieb: > Denn Boot0 Pin habe ich auf 3.3v und nach einem Reset läuft die > Applikation nicht los. Der Prozessor wartet auf 0x7F und startet erst danach den Bootloader. Siehe AN2606 §12.2. Jens
Jens schrieb: > Der Prozessor wartet auf 0x7F und startet erst danach den Bootloader. > Siehe AN2606 §12.2. foerch schrieb: > Wenn ich mich aber mit dem Flash Loader Demonstrator verbinden will > scheitere ich. Der Flash Loader demonstrator sendet aber die 0x7F von sich aus. Das vorgehen des TO ist schon richtig. Der Bootloader kann aber nicht nur an PA9&10 funktionieren. Wenn an einer anderen UART/SPI/I2C daten ankommen will der Bootloader die 0x7F an dieser Schnittstelle haben. Und der Boot1 Pin könnte noch auf dem falschen Pegel liegen.
foerch schrieb: > was mache ich falsch? Dieses Programm von ST finde ich blöd, weil es bei Problemen lediglich eine Weile drauf herumkaut und dann nur lapidar "geht nicht!" meldet. Da weiß man nie, woran es tatsächlich liegt. Lade dir hier aus dem Projekte-Bereich mein STM32-Brennprogramm mal herunter. Bei dem kannst du wenigstens deine Verbindungen austesten. W.S.
John P. schrieb: > Und der Boot1 Pin könnte noch auf dem falschen Pegel liegen. Blöde Frage hat der STM32F103 einen Boot1 Pin? W.S. schrieb: > Lade dir hier aus dem Projekte-Bereich mein STM32-Brennprogramm mal > herunter. Bei dem kannst du wenigstens deine Verbindungen austesten. Wo finde ich das besagte Programm? Lg und Danke
W.S. schrieb: > Lade dir hier aus dem Projekte-Bereich mein STM32-Brennprogramm mal > herunter. Bei dem kannst du wenigstens deine Verbindungen austesten. > > W.S. Das hab ich auch mal probiert. Allerdings ging mein Programm nicht bei 0x08000000 sondern bei 0x08001000 los weil davor noch was anderes im Flash ist. Das hat dein Programm aber immer gleich mit Platt gemacht. Ist das nicht vorgesehen oder habe ich da was falsch eingestellt?
"Once initialized, the USART1 configuration is: 8 bits, even parity and 1 Stop bit." Wird öfters übersehen.
ichbins schrieb: > "Once initialized, the USART1 configuration > is: 8 bits, even parity and 1 Stop bit." > > Wird öfters übersehen. Das habe ich mehrmals kontrolliert. Blöde Frage hat der STM32F103 einen Boot1 Pin? Danke
foerch schrieb: > Blöde Frage hat der STM32F103 einen Boot1 Pin? Hat er. Aber warum schaust Du das nicht selber nach? Wenn das ein STM32F103 auf dem "Mini-Delopment Board" (Blue Pill) ist, dann findest Du den Schaltplan hier: https://www.mikrocontroller.net/wikifiles/c/c9/STM32F103C8T6_MiniDevBoard_Schematic.png Die beiden Boot-Pins sind hier an Jumper angeschlossen, die Du leicht von HIGH nach LOW und zurück umstecken kannst.
foerch schrieb: > Blöde Frage hat der STM32F103 einen Boot1 Pin? Ja. PB2 Datenblatt Seite 30 Der Bootloader im F103 benötigt Bootpattern No.1 Pattern No.1: Boot0 = High; Boot1 = Low
Frank M. schrieb: > Hat er. Aber warum schaust Du das nicht selber nach? Sorry habe nur auf den Schaltplan des Nucleo Board geschaut und dort ist der Pin PB2 nicht mit Boot1 angegeben. John P. schrieb: > Der Bootloader im F103 benötigt Bootpattern No.1 > > Pattern No.1: Boot0 = High; Boot1 = Low Auch mit dem Boot1 auf low funktioniert es nicht. Was kann ich noch probieren? Danke für die Hilfe
Der serielle Bootloader wird gestartet, indem man Boot0=1 und Boot1=0 setzt und dann einen Reset-Impuls gibt. Um danach das eigene Programm zu starten, setzt man Boot0=0 und Boot1=egal, gefolgt von einem Reset-Impuls. > Was kann ich noch probieren? Stromversorgung und Pegel am Reset-Pin prüfen. Mehr Infos dazu: http://stefanfrings.de/stm32/index.html
Stefanus F. schrieb: > Mehr Infos dazu: http://stefanfrings.de/stm32/index.html HAbe mir das Program STM32CubeProg geholt und damit geht das Programmieren über den Bootloader anstandslos! Danke für die Hilfe. Noch eine Frage hätte ich wie wird das umschalten der Boot0 und Boot1 Pins in der Praxis in Applikationen gemacht? Schalter?
foerch schrieb: > Noch eine Frage hätte ich wie wird das umschalten der Boot0 und Boot1 > Pins in der Praxis in Applikationen gemacht? Ich verwende Jumper. Aber nur selten, denn normalerweise verwendet ich die SWJ Schnittstelle.
Stefanus F. schrieb: > Ich verwende Jumper. Aber nur selten, denn normalerweise verwendet ich > die SWJ Schnittstelle. Ist auch ziemlich umständlich. Kann man den Bootloader ändern das nur ein Reset nötig ist?
foerch schrieb: > Kann man den Bootloader ändern das nur ein Reset nötig ist? Sicher, mit ein bisschen zusätzlicher Hardware drumherum wird das irgendwie gehen. Oder du verwendest einen eigenen Bootloader im Flash Speicher (wie den von Arduino), dann muss allerdings dein Programm auch darauf abgestimmt sein, da es nicht mehr an Adresse 0 beginnt und die IRQ Vektor Tabelle verschieben muss. Ganz ehrlich: Ich würde davon abraten. > Ist auch ziemlich umständlich. Das ist aber besser so. Das man bei PC's inzwischen das BIOS umflashen kann, ohne irgendeinen Jumper oder Schalter umstellen zu müssen, halte ich für eine Frechheit. Ich möchte nicht, dass irgendein Virus meinen PC buchstäblich kaputt machen kann! Eigentlich fragen hier mehr Leute nach genau dem Gegenteil: wie man das automatische Starten des Arduino Bootloaders verhindert. Wenn man selber merkt, dass man gegen den Strom schwimmt, sollte man sich gut überlegen, ob man dabei auf dem richtigen Weg ist. Also Kompromiss bietet sich ein Taster (an Boot0) an, den man beim Einschalten der Stromversorgung gedrückt hält. Warum verwendest du keinen ST-Link Adapter? Damit könntest du sogar debuggen und brauchst keinen Jumper/Schalter.
Stefanus F. schrieb: > Warum verwendest du keinen ST-Link Adapter? Damit könntest du sogar > debuggen und brauchst keinen Jumper/Schalter. Ich denke daran das man vielleicht irgendwann einen Firmware update machen kann ohne Entwicklungsumgebung
foerch schrieb: > Ich denke daran das man vielleicht irgendwann einen Firmware update > machen kann ohne Entwicklungsumgebung Das halte ich für ein sehr schwaches Argument. Jeder Dummkopf ist in der Lage, sich einen ST-Link Adapter zu kaufen und mit einem passenden Flachkabel anzustecken. Das kannst du ja gleich mit verkaufen. Wer das nicht hin bekommt, der sollte besser kein Firmware Upgrade durchführen und sich an einen "Fachmann" wenden. Denn jeder Firmware-Wechsel bringt aus Risiken mit sich, mit denen kommt derjenige Dummkopf dann auch nicht klar. Willst du Leuten per Telefon helfen, die nicht einmal einen Schraubendreher in die Hand nehmen können? Die ST-Link Adapter sind nicht einmal teurer als serielle USB Adapter. Die bekommt man ab ca 2,50€. Und sie sind weniger problematisch, weil man nicht noch herausfinden muss, welcher COM Port zugewiesen wurde und welcher Treiber geeignet ist (ich erinnere nur an die immer noch verkauften Adapter mit Prolific Chip, für die es "offiziell" keine Windows 10 Treiber mehr gibt). Du brauchst für ST-Link auch keine Entwicklungsumgebung. Es gibt für alle Betriebssysteme sowohl kleine kompakte Kommandozeilen-Tools als auch grafische Anwendungen ohne IDE.
Stefanus F. schrieb: > Das halte ich für ein sehr schwaches Argument Kann sein früher war halt so das man ao auch als Kunde ein Gerät updaten konnte. Da hatt e allerdings jeder Pc noch eine Serielle Schnittstelle.
foerch schrieb: > Kann sein früher war halt so das man ao auch als Kunde ein Gerät updaten > konnte. Ja, "früher" musste man dafür einen Jumper umstecken, einen Schalter umstellen oder einen Taster gedrückt halten. Jedenfalls in Geräten, wo man Wert auf Sicherheit legte.
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.