Forum: Mikrocontroller und Digitale Elektronik STM32 Powerdown während Flash Beschreiben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

Mein STM32F405VGT6 hatte während dem Beschreiben des Flashs einen 
Stromausfall und nun gibt mir
1
status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);

immer einen HAL_ERROR zurück und zwar den FLASH_FLAG_PGPERR und den 
FLASH_FLAG_PGSERR. Ich habe mal den uC mit dem STUtility komplett 
gelöscht, jedoch hat das leider auch nichts mehr gebracht. Jemand eine 
Idee, wie ich da wieder an den Flash ran komme?

: Bearbeitet durch User
von Steffen R. (steffen_rose)


Bewertung
0 lesenswert
nicht lesenswert
Du hast aktuell ein Programm laufen, welches in den Flash schreibt?
Läuft dieses im RAM oder im Flash?

Um einen Fehler in deinem Programm auszuschließen, läßt sich ein 
Programm per STUtility flashen?

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Steffen R. schrieb:
> Du hast aktuell ein Programm laufen, welches in den Flash schreibt?
> Läuft dieses im RAM oder im Flash?
>
> Um einen Fehler in deinem Programm auszuschließen, läßt sich ein
> Programm per STUtility flashen?

Ich konnte es nun beheben, habe einfach mal eine ältere Version des 
Programmes hochgeladen. Das Programm schreibt eigentlich nur bei 
Änderungen in den Flash und läuft im RAM. Auch per STUtility konnte ich 
es flashen. Ich versuche nun aber noch rauszufinden, warum das vorhin 
passiert ist.

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
Ich denke ich habe den Fehler gefunden, oder zumindest mit was er 
korreliert. Ich hatte in der Main Loop die ganze Zeit 
HAL_WWDG_Refresh(&hwwdg); getriggert, obwohl der Watchdog nicht aktiv 
(nicht initialisiert) war. Dies hat irgendwie schwere Probleme mit dem 
Flash verursacht. Warum das so ist kann ich nicht sagen, jemand eine 
Idee?

: Bearbeitet durch User
von TrollJäger (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Lern gescheit programmieren....

Dem ist sonst nichts hinzuzufügen.

von Bert S. (kautschuck)


Bewertung
0 lesenswert
nicht lesenswert
TrollJäger schrieb:
> Lern gescheit programmieren....

Genau, einfach keine Fehler programmieren und alles ist gut...

von TrollJäger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bert S. schrieb:
> TrollJäger schrieb:
>> Lern gescheit programmieren....
>
> Genau, einfach keine Fehler programmieren und alles ist gut...

Nein, so war es nicht gemeint.

ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst, 
dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein 
Zeugnis für jemanden, der sein Handwerk versteht.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
TrollJäger schrieb:
> ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst,
> dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein
> Zeugnis für jemanden, der sein Handwerk versteht.

Woher weißt du denn wie seine mail loop aussieht? Ich sehe in dem ganzen 
Thread nicht den Quelltext!

: Bearbeitet durch User
von TrollJäger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefanus F. schrieb:
> Woher weißt du denn wie seine mail loop aussieht? Ich sehe in dem ganzen
> Thread nicht den Quelltext!

Bert S. schrieb:
> Ich hatte in der Main Loop die ganze Zeit
> HAL_WWDG_Refresh(&hwwdg); getriggert, obwohl der Watchdog nicht aktiv
> (nicht initialisiert) war.

Auch so ein Profiprogger wie der TO, wa?

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Sorry, aber deine Methode, auf Basis dieser einzigen Zeile Code diesen 
prolligen Kommentar abzulassen finde ich ziemlich armselig. Das kannst 
du besser.

Wie ist denn dein Plan, hier zu konstruktiver Mitarbeit zu kommen?

: Bearbeitet durch User
von Bert S. (kautschuck)


Bewertung
1 lesenswert
nicht lesenswert
TrollJäger schrieb:
> ABER wenn du in der main loop (!) ohne zeitlichen Bezug hirnlos pollst,
> dazu noch eine Funktion die nicht mal benötigt wird: nun, DAS ist kein
> Zeugnis für jemanden, der sein Handwerk versteht.

Nun ja, ein Watchdog hat eine Reset-Funktion, wenn ich diese nicht 
polle, dann resetet er. Da ich Debuggen wollte, habe ich natürlich den 
Watchdog deaktiviert, aber leider vergessen die Reset-Funktion 
auszukommentieren.

Wenn du aber nur auf Grund dieses Fehlers auf meine Programmierkentnisse 
schließen kannst, dann ist das schon eine herausragende Leistung.

von TrollJäger (Gast)


Bewertung
0 lesenswert
nicht lesenswert
lol, ihr versüßt mir echt den Tag :-)

Also der Reihenfolge nach:

Stefanus F. schrieb:
> Sorry, aber deine Methode, auf Basis dieser einzigen Zeile Code diesen
> prolligen Kommentar abzulassen finde ich ziemlich armselig. Das kannst
> du besser.

Klar kann ich es besser :-) Genauso, wie ich auch ohne Quellcode Texte 
durchlesen und interpretieren kann...

Stefanus F. schrieb:
> Wie ist denn dein Plan, hier zu konstruktiver Mitarbeit zu kommen?

Zum Verstehen sowie Lösen der Probleme anregen durch schonungslose 
Darstellung der gemachten Fehler sowie durch FMEA des Programmierstiels. 
Und deiner?

Bert S. schrieb:
> Nun ja, ein Watchdog hat eine Reset-Funktion, wenn ich diese nicht
> polle, dann resetet er.

Das ist richtig, dafür ist er schließlich da. Aber man sollte sinnvoller 
Weise zumindest eine zeitliche Abhängigkeit sowie einen 
Plausibilitätstest einbauen.

Bert S. schrieb:
> Da ich Debuggen wollte, habe ich natürlich den
> Watchdog deaktiviert, aber leider vergessen die Reset-Funktion
> auszukommentieren.

Gewöhne es dir direkt an, den Watchdog erst beim Release dazuzupacken. 
Vorher sind andere Sachen wichtiger.

Bert S. schrieb:
> Wenn du aber nur auf Grund dieses Fehlers auf meine Programmierkentnisse
> schließen kannst, dann ist das schon eine herausragende Leistung.

Wenn du damit Methodik meinst, dann ja.

Gegenfrage, jetzt wo wir uns so gut kennengelernt haben:

durch welche Vorgehensweise hätte man

a.) den Fehler von Anfang an verhindern können?

b.) den Fehler in kürzester Zeit einkreisen können?

@Stefanus F.: kannst gerne mitmachen :-)

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
TrollJäger schrieb:
> @Stefanus F.: kannst gerne mitmachen :-)

Ich finde, diesen Vorschlag gut:

> Gewöhne es dir direkt an, den Watchdog erst beim Release dazuzupacken.
> Vorher sind andere Sachen wichtiger.

Es kommt mir komisch vor, dass HAL_WWDG_Refresh() bei deaktiviertem 
Watchdog Probleme macht. Da würde ich mal intensiver nachforschen.

Kann es sein, das deine Variable hwwdg jetzt nicht initialisiert ist? 
Falls nicht, kannst du mal den Quelltext dieser Funktion zeigen?

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.