Hallo Forum, ich versuche das setzen des Boot Modus beim STM32L431 zu verstehen. Vom STM32F103 sind mir beide Boot Pins (1 und 2) bekannt. Beim L431 gibt es nur einen. Ich habe folgende App Note versucht zu verstehen https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf Ziel ist es, den Bootloader über USART2 zu bedienen. Hat da jemand Erfahrungen sammeln können und kann mir das Verhalten näher bringen ? Danke und Gruß Stephan
Schau lieber in das Referencemanual unter "2.6 Boot configuration", dann verstehst Du es eventuell auch. In der App-Note steht im Prinzip, daß es drei Möglichkeiten gibt den internen Bootloader zu aktivieren: Boot0(pin) = 1, nBoot1(bit) = 1 and nBoot0_SW(bit) = 1 nBoot0(bit) = 0, nBoot1(bit) = 1 and nBoot0_SW(bit) = 0 Boot0(pin) = 0, nBoot0_SW(bit) = 1 and main flash empty Und was Du dann tun mußt, damit er über UART2 arbeitet (0x7F darüber senden). Es hängt also von nSWBOOT0 (FLASH_OPTR[26]) ab, ob der Pin überhaupt eine Rolle spielt oder statt dessen nBOOT0 (FLASH_OPTR[27]) benutzt wird. nBOOT1 (FLASH_OPTR[23]) gibt dann im Prinzip an, ob er im Bootloader (System memory) oder im SRAM landet.
Soweit verstanden, danke. Ich habe nur eine Denkblokade wann ich die Registerwerte schreibe. Z.B. durch einen Jumper und löse danit einen Interrupt aus, schreibe die Registerwerte und führe dann per Software einen Reset aus? Wenn ja, wie führe ich einen Reset aus, so dass die Registerwerte ihren Wert erhalten.
> Boot0(pin) = 0, nBoot0_SW(bit) = 1 and main flash empty
DAs ist im ueberigen ziemlich doof. Es bedeutet naemlich das ein neu
gebautes Board auf dem man noch keine Firmware hat voll laeuft und
entsprechend viel Strom zieht. Damit sollte dann die Hardware klar
kommen....
Olaf
Ich fasse mal zusammen was ich mir aus den Datenblättern zusammengelesen habe: Im FLASH_OPTR (Flash Option Register) müssen folgende Bits geschrieben werden - nBOOT1 (FLASH_OPTR[23]) = 1 - nBOOT0 (FLASH_OPTR[27]) = 0 - nSWBOOT0 (FLASH_OPTR[26]) = 0 Dann landet der Controller nach einem Reset im System Memory, d.h. Bootloader Das Ganze scheint im Flash zu liegen. Jetzt muss ich mir überlegen wie ich durch setzen eines Jumpers die Bits setzen und auch wieder zurücksetze. Gibt es da einen praktikablen Weg? Wenn der Controller vom System Memory bootet und über den boot loader geflasht habe, möchte ich ihn ja irgendwie wieder davon überzeugen das Anwenderprogramm zu booten. Oder kann man das FLASH_OPTR Register temporär beschreiben und danach eine Art Softwarereset auslösen bei dem der Status bestehen bleibt bzw. bei einem "richtigen" Reset der alte Status wiederhergestellt ist???
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.