STM32 Boot0 / 1

#2543343
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.
#2633176
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.
Moderator Persönliche Seite #2633453
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.
(Firma: EleLa - www.elela.de) #2633471
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.
#2633524
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
Gast #2857706
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren