Ich beschäftige mich gerade mit dem "embedded bootloader" im STM32. Für meinen STM32F427 können folgende Schnittstellen für den Bootlaoder verwendet werden: - USART1 (PA9/PA10) - USART3 (PB10/11 and PC10/11) - CAN2 (PB5/13) - USB OTG FS (PA11/12) in Device mode (DFU: device firmware upgrade). Was ich noch nicht verstanden habe ist: Werden bei ausführen des Bootloaders alle Schnittstellen konfiguriert? Das heißt alle TX PINs werden als Ausgänge gesetzt? Wenn ich also ein Firmware update über UART1 machen möchte, in der Applikation aber die PINs von UART3 jeweils als Eingänge verwende gibt es einen Kurzschluss? Oder gibt es eine Möglichkeit dies zu konfigurieren? Danke!
Schau mal ST Application note AN2606 an. Das Bild auf Seite 120 kann man so interpretieren, daß der BL den UART erst dann vollständig initialisiert (d.h. auch den Transmit-Teil), wenn auf der Receive-Leitung 0x7F empfangen wird. Gruß, Stefan
Danke! hab ich schon gesehen. Aber auf "kann man so interpretieren" möchte ich halt kein Design aufbauen :-) Ich fände es auch logisch wenn der entsprechende TX Pin erst als Ausgang gesett wird wenn an dem dazugehörigen RX Pin die 0x7F empfangen wurden. Aber lesen konnte ich dies noch nirgends.
Anfänger schrieb: > Oder gibt es eine Möglichkeit dies zu konfigurieren? Natürlich. Du hast es beim Festlegen deiner Schaltung doch selbst in der Hand. Bedenke, daß BOOT0 und BOOT1 nur beim Reset den gewünschten Pegel benötigen, danach sind sie frei für jede Verwendung. Ich würde sie als Ausgänge verwenden und mittels Widerstand einigermaßen hochohmig auf Sollpegel ziehen. Diese Chips haben so viele Pins, da ist es eigentlich immer möglich, deren Verwendung im eigenen Projekt so zu gestalten, daß man UART0 (oder 1?) und Reset und die Mode-Pins so verwendet, daß es da keine Kollisionen gibt. Es sind ja nur insgesamt 4 Pins (BOOT0+1,TxD,RxD) und Reset. W.S.
Naja 4 Pins stimmt nicht ganz. - USART1 (PA9/PA10) - USART3 (PB10/11 and PC10/11) - CAN2 (PB5/13) - USB OTG FS (PA11/12) in Device mode (DFU: device firmware upgrade). für diese Schnittstellen komme ich schon auf 10 Pins
Les Dir AN2606 genau durch. Dort ist die Reihenfolge genau angegeben, in der die Schnittstellen abgefragt werden. Ebenso sind dort die Bedingung angegeben, wann die Schnitstellen dann weiter behandelt oder wann sie uebersprungen werden.
Anfänger schrieb: > für diese Schnittstellen komme ich schon auf 10 Pins Und die brauchst du ALLE GEMEINSAM für einen Bootloader? Was W.S. gemeint hat, sind die Pins, die man für den Betrieb EINES Bootloaders braucht.
ja schon klar, dass eine Schnittstelle ausreichend ist. Wenn jedoch direkt alle Schnittstellen durch den Bootloader konfiguriert werden muss beim Design aufgepasst werden. So können in der Applikation die TX Pins aller! Schnittstellen nicht als Eingänge verwendet werden. Da es sonst zu Kurzschlüssen kommt.
Anfänger schrieb: > Wenn jedoch direkt alle Schnittstellen durch den Bootloader konfiguriert > werden muss beim Design aufgepasst werden. Glaubst du wirklich, daß sich ein Bootloader alle Schnittstellen an Land zieht, die der Controller besitzt?
Glauben reicht mir halt nicht. Und aus den Datenblättern und App-Notes ist es (für mich) nicht aussreichend beschrieben.
Du beziehst dich sicher auf AN2606 Seite 133. Da du die SPI-Schnittstellen nicht erwähnst, vermute ich einen v7.x Bootloader. Ja, das ist in der Tat schlecht beschrieben (oder eigentlich gar nicht). Gerade mit dem v9.x-Bootloader, wo noch 3 SPI Outputs dazu kommen, fehlt jeder Hinweis darauf. Hast du ein Demoboard? Ich würde es Ausmessen. Multimeter an den Pin gehängt und zärtlich (d.h. mit 10kOhm) abwechselnd nach GND und Vdd gepullt. Das Ergebnis sollte Rückschlüsse geben, ob der Pin aktiv getrieben wird oder eine interne Pull-Funktion aktiv ist.
Was fehlt Dir an der Beschreibung der V7 Bootloaders fuer STM32F42xx in AN2606 Rev. 24?
Hab dein Problem verstanden und kann tatsächlich auch nichts dazu in AN2606 finden, außer dass er wohl die Tx Ports aller Schnittstellen auf Output konfiguriert. Kanns mir aber eigentlich kaum vorstellen. Eher glaube ich, dass erst nach Empfang des Start-Bytes 0x7F der entsprechende Tx Pin konfiguriert wird. Wenn ich was finde, melde ich mich. Oder hat jemand anders noch eine Idee?
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.