STM32F429: Flash-Löschen/Programmieren bringt seltsame Fehler

Gast #5887780
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe eine STM32-Firmware für einem STM32L4R5ZI geschrieben, die auf 
Flash-Bank1 läuft, und Flash-Bank2 löschen/programmieren kann. 
Funktioniert auf dem STM32L4R5ZI einwandfrei.
Jetzt wollte ich diese Firmware auf einen STM32F429ZI portieren, krieg 
es aber nicht zum Laufen. Ich bekomme sowohl beim Löschen als auch beim 
Programmieren von Bank2 immer die Fehlerflags "PGSERR" (Programming 
Sequence error) und/oder "PGPERR" (Programming Parallelism error) 
gesetzt, und kann mir nicht erklären, warum.

Beispielcode:
1
FLASH_EraseInitTypeDef EraseInit;
2
EraseInit.TypeErase   = FLASH_TYPEERASE_MASSERASE;
3
EraseInit.Banks   = FLASH_BANK_2;
4
EraseInit.Sector  = 0;
5
EraseInit.NbSectors  = 0;
6
EraseInit.VoltageRange   = FLASH_VOLTAGE_RANGE_3;
7
uint32_t SectorError = 0;
8
HAL_StatusTypeDef status0 = HAL_FLASH_Unlock();
9
uint32_t error0 = HAL_FLASH_GetError();
10
HAL_StatusTypeDef status1 = HAL_FLASHEx_Erase(&EraseInit, &SectorError);
11
uint32_t error1 = HAL_FLASH_GetError();
12
HAL_StatusTypeDef status2 = HAL_FLASH_Lock();
- HAL_FLASH_Unlock() gibt HAL_OK zurück, FlashError = 0
- HAL_FLASHEx_Erase() gibt HAL_ERROR zurück, FlashError = 2 (PGSERR)
- HAL_FLASH_Lock() gibt wieder HAL_OK zurück

Habe FLASH_VOLTAGE_RANGE 1, 2 und 3 probiert, kein Unterschied.

In den OptionBytes ist keine Read- oder WriteProtection gesetzt.
Der STM32F429ZI ist nach meinem Verständnis immer im DualBank 
konfiguriert, jedenfalls kann ich in OptionBytes nichts einstellen 
(anders als beim STM32L4R5ZI).

Weiß jemand weiter?
Gast #5889500
Lesenswert?
• ▲
▼
Falls es jemanden interessiert:
Ich habe festgestellt, dass diese Fehlerflags (PGPERR und PGSERR) 
anscheinend unberechtigerweise gesetzt werden.
Wenn ich diese Flags einfach ignoriere und lösche, funktioniert alles 
einwandfrei, d.h. das Flash wird korrekt gelöscht und auch programmiert. 
Der neue Flash-Inhalt ist danach korrekt.
Gast #5889622
Lesenswert?
• ▲
▼
Frank Roggel schrieb:
> Ich habe festgestellt, dass diese Fehlerflags (PGPERR und PGSERR)
> anscheinend unberechtigerweise gesetzt werden.
> Wenn ich diese Flags einfach ignoriere und lösche, funktioniert alles
> einwandfrei

Dann schau doch mal, ob du dazu etwas im Errata findest.

Ich bin auf ein ähnliches Problem bei einer I²C Schnittstelle gestoßen, 
das war im Errata beschrieben.

Normalerweise denkt man ja, dass diese Bugs nur in ganz speziellen 
Konstellationen auftreten, von denen man selbst nur selten betroffen 
ist. Aber ich gehöre scheinbar zu der Sorte Mensch, deren Weg mit 
Fettnäpfchen regelrecht gepflastert ist. Was schief gehen kann, geht 
auch schief. Glück haben immer nur die anderen. Kennt Ihr das Gefühl?
Gast #5889727
Lesenswert?
• ▲
▼
Stefanus F. schrieb:
> Dann schau doch mal, ob du dazu etwas im Errata findest.

Ins Errata Sheet hatte ich als erstes geschaut und nichts dazu gefunden. 
Deswegen war ich auch sehr skeptisch, ob es wirklich sein kann, das 
diese Fehlerflags unberechtigterweise gesetzt werden sollten (das müßte 
doch irgendjemandem aufgefallen sein?!). Aber nach einer Woche 
Trial-and-Error scheint dies die einzige plausible Erklärung...

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.