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.
naja, booten tut der so oder so. über die pins stellst du lediglich ein, aus welchem Speicher. dennis
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.
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
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.
Ein offener Eingang kann zu geringfügig höherem Stromverbrauch führen, was in Stromsparmodi eine Rolle spielen kann.
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.
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
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 ;-)
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
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.
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.
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
Dann kann auch BOOT0 ohne Widerstand direkt an GND gelegt werden. Ansonsten ist das IO.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.