STM32F4 Read Protection

Gast #3686042
Lesenswert?
• ▲
▼
Hallo!

Ich habe einen STM32F407 Controller und möchte gern den Ausleseschutz 
aktivieren (Level 1). Das funktioniert auch wunderbar wie im Reference 
Manual beschrieben. Mein Problem ist nun, dass mein Bootloader den Flash 
nicht löschen und neu beschreiben kann. Ich bekomme das Bit WRPRTERR 
gesetzt, also Write Protection.
Laut Reference Manual sollte das Schreiben in den Flash möglich sein, 
wenn JTAG / SWD nicht aktiv sind (habe den JLINK abgesteckt) und das 
Programm vom Flash startet und nicht vom RAM. Beides ist der Fall.
Hat jemand eine Idee was ich tun kann?
(Firma: EleLa - www.elela.de) #3686121
Lesenswert?
• ▲
▼
Ein mal hatte ich den Chip mit Level 2 geschützt, dann durfte ich den 
runter löten und ersetzen.
Hingegen mit Level 1 kann ich mittels eigenem Bootloader den Chip 
beschreiben. Mit dem Bootloader aus der Firmware geht das, glaube ich, 
nicht mehr, da man mit dem den Flash auslesen könnte.
(Firma: EleLa - www.elela.de) #3687217
Lesenswert?
• ▲
▼
Ich habe keine "LockBlock" Bits genutzt.

Um ein Block zu beschreiben muss der erst mal gelöscht werden. Immer 
schön das Busy-Bit Abfragen dann schreibe ich immer 16-Bit weise rein. 
Wenn auf den nächsten Block geschrieben werden soll, dann lösche ich den 
erst.
Anhand dem PC Register erkenne ich den Überschreibschutz vom Bootloader 
(in welchem Block sich das aktuelle Programm momentan befindet).

Im Flash Programing Manual ist alles beschrieben, auch die genauen 
Abläufe wie das geht. Wenn das nicht tut, dann man in Errata von dem 
einen Chip schauen, nicht dass da doch noch was in dem Chip ist.

Ich habe schon Bootloader für einen F103 und F407 geschrieben.
Gast #3687890
Lesenswert?
• ▲
▼
Naja ohne Ausleseschutz funktioniert der Bootloader ganz wunderbar. Nur 
wenn der aktiv ist, dann ist seltsamerweise auch die write protection 
aktiv, und ich kann nicht nachvollziehen warum. Im Errata habe ich 
nichts passendes gefunden. Und das Flash programming manual kenne ich, 
allerdings nur für den F1. Für den F4 habe ich sowas nicht gefunden.
Gast #3692231
Lesenswert?
• ▲
▼
Vielen Dank!

Hatte eigentlich alles korrekt umgesetzt. Habe nun rausgefunden woran es 
lag. Habe beim löschen der Readprotectionbits
FLASH->OPTCR &= !(FLASH_OPTCR_RDP);
statt
FLASH->OPTCR &= ~(FLASH_OPTCR_RDP);
verwendet.. damit war das ganze Register genullt und damit auch die 
Write Protection Bits

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.