Forum: Mikrocontroller und Digitale Elektronik STM32 Boot0 / 1


von Moritz M. (avrprogger)


Lesenswert?

Hallo,

ich entwerfe gerade mein erstes Board mit einem STM32. Doch wie müssen 
die Pins BOOT0 und BOOT1 beschaltet werden (Low oder High), damit der µC 
nicht Bootet sondern ganz normal -das über SWD programmierte- Programm 
aus dem Flash ausführt?

Moritz

PS: Indem dem Kapitel von ST über den Bootloader steige ich nicht ganz 
durch.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Boot0 muss low sein, Boot1 egal.

Grüsse

von Dennis X. (Gast)


Lesenswert?

naja, booten tut der so oder so. über die pins stellst du lediglich ein, 
aus welchem Speicher.

dennis

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Was willst Du haben?
Booten aus dem RAM oder aus dem internen oder externen Flash?

Im RM0008, Kapitel 3.4 ist eine übersichtliche Tabelle über Funktionen 
und genau beschrieben.

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

vielen Dank!

Moritz

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

sorry, das ich jetzt noch eine Frage habe.
kann man Boot 1 einfach offen lassen, also nicht high und nicht low oder 
muss der beschaltet werden?

Moritz

von Simon H. (simi)


Lesenswert?

Ich würde den schon irgendwo anhängen. Schaden kann's nicht, und offene 
Eingänge können (müssen nicht) Probleme bereiten.

Vielleicht macht's in diesem Fall wirklich nichts, aber eben - schaden 
tut's ja auch nicht.

von (prx) A. K. (prx)


Lesenswert?

Ein offener Eingang kann zu geringfügig höherem Stromverbrauch führen, 
was in Stromsparmodi eine Rolle spielen kann.

von Mike R. (thesealion)


Lesenswert?

Wenn du das Board selber entwirfst, kannst du doch einfach zwei 0-Ohm 
Widerstände nach GND vorsehen. Per default muss nur der bei Boot0 
bestückt sein.
Und wenn du dann was anderes (wie den internen Bootloader) testen 
willst, kommst du einfach an die Pins und kannst den Pegel ändern.

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

vielen Dank für die schnelle Antwort. Ich denke ich werde ihn einfach 
offen lassen da der Stromverbrauch keine so große rolle spielt und auf 
der Platine leider kein platz mehr für einen Widerstand ist. Oder knnte 
man diesen auch vielleicht sogar weglassen?

Moritz

von Mike R. (thesealion)


Lesenswert?

Man kann ihn auch weglassen, aber meistens kommt dann irgendwann der 
Punkt, das man ihn doch hätte gebrauchen können, und so ein 0603 braucht 
doch kaum Platz ;-)

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

wiso braucht man ihn den dann plötlich doch? entweder man braucht ihn 
immer oder gar nicht, (Oder)? Ich hab noch nie SMD Widerstande und 
Kondensatoren gelötet und möchte daher erst mit 1206 anfagen.

Moritz

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Würde beide BOOT-Eingänge auf definierten Pegel bringen. Habe vor 
einiger Zeit viele Stunden mit der Fehlersuche in einer 
Bootloaderanwendung für STM32F103xyz verbracht, die prima auf einem 
Evaluationboard funktioniert hat aber auf einem beigestellten Prototypen 
nicht zuverlässig funktionierte (neuen Inhalt von Flash-Seiten nicht 
korrekt geschrieben). Habe (sehr) viel gemessen und ausprobiert. 
Schlussendlich hat es geholfen, beide BOOT-Pins auf definierten Pegel zu 
legen. ST Support hat auf die Bitte, die Dokumentation dahingehend zu 
erweitern, das Boot-Pins nicht "floaten" sollten nicht reagiert - evtl. 
weil es schon irgendwo stand und ich es nur überlesen hatte.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Sobald man den eingebauten Bootloader nutzen möchte, muss BOOT1 einen 
definierten Low Pegel haben. Denn sonst bootet der aus dem RAM.

Wenn noch ein anderer Pin frei ist, dann das Signal von PB2 wo anders 
hin legen und PB2 mit GND verbinden, ansonsten Pulldown.
Den BOOT Pin per Pull-Down auf Low ziehen und einen Jumper rein um den 
auf Hi zu setzen, dann kann mit dem internen Bootloader immer geflasht 
werden.
So würde ich das machen.

Wenn BOOT0 auf GND liegt sollte BOOT1 (PB2) keine Auswirkung haben.

von Moritz M. (avrprogger)


Lesenswert?

Hallo,

Erst einmal vielen Dank für die Antworten!


zurzeit designe ich zwei Boards. Eins mit einem STM32F102CB. Bei diesem 
habe ich Boot0 über 10k Ohm auf GND gezogen und Boot1 ohne Widerstand 
direkt auf GND.
Bei dem zweiten Board (STM32F405RG) habe ich Boot0 auch über 10k Ohm auf 
GND gezogen und Boot1 ohne Widerstand direkt auf Vcc (3.3V) (auf Low 
geht leider nicht da die Platine nur einseitig ist und der weg nach GND 
durch andere Leiterbahnen versperrt ist).

Würde das so funktionieren????? Sind die Widerstände Okay?

Für Widerstande an Boot1 ist leider kein Platz mehr.

Ich möchte eig. den Controller nur über SWD programmieren und keinen 
Bootloader verwenden, deshalb ohne irgentwelche brücken oder jumper.

Moritz

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Dann kann auch BOOT0 ohne Widerstand direkt an GND gelegt werden.

Ansonsten ist das IO.

von Moritz M. (avrprogger)


Lesenswert?

Danke,

bei board zwei dient der widerstand allerdings als brücke.

Moritz

von Jedi82 (Gast)


Lesenswert?

Hi zusammen,

vielen Dank für die Erläuterung der Thematik! Wie o.g. geschildert hilft 
es Boot1 auf Masse zu legen, wenn man parallel den onboard-Bootloader 
sowie Program from Flash verwerden möchte.

Wenn man Boot1 nicht auf Masse legt verhält sich der Aufstart recht 
zufällig. Bei mir war es z.B. so, dass ich manchmal in den Bootloader 
kam, und manchmal nicht.

Meine aktuelle Lösung sieht in Hardware wiefolgt aus:

Boot1, also Pin B2 auf Masse.
Ein 10k/10k Spannungsteiler macht aus 5V_USB 2.5V, welche über ein 
Spannung von 2.5V, welche dann auf Boot0 geht. Die 5V_USB müssen auch 
den Controllerversorgen. Die Versorgung muss aber über eine Diode 
stattfinden, sodass bei "normaler" Spannungsversorung aus einer anderen 
Stromquelle die 5V nicht am Spannungsteiler für Boot0 anliegen, sonst 
landet man ständig im Bootloader.

Die Schaltung ist sehr simple, hat aber als Nachteil, dass man so keine 
Geräte, welche an der USB-Buchse hängen mit Strom aus dem 
Spannungsregler versorgen kann (wegen der Diode)...

Also Danke nochmal und schönen Gruß,
Jedi

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.