Forum: Mikrocontroller und Digitale Elektronik STM32(F427) Bootloader


von Anfänger (Gast)


Lesenswert?

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!

von Stefan K. (stefan64)


Lesenswert?

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

von Anfänger (Gast)


Lesenswert?

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.

von W.S. (Gast)


Lesenswert?

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.

von Anfänger (Gast)


Lesenswert?

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

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

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.

von ?!? (Gast)


Lesenswert?

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.

von Anfänger (Gast)


Lesenswert?

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.

von ?!? (Gast)


Lesenswert?

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?

von Anfänger (Gast)


Lesenswert?

Glauben reicht mir halt nicht.
Und aus den Datenblättern und App-Notes ist es (für mich) nicht 
aussreichend beschrieben.

von Little B. (lil-b)


Lesenswert?

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.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Was fehlt Dir an der Beschreibung der V7 Bootloaders fuer STM32F42xx in 
AN2606 Rev. 24?

von Nikolas K. (vanrasta)


Lesenswert?

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
Noch kein Account? Hier anmelden.