Warmstart STM32F0 unter IAR

OP (Firma: LCD-Solution SAS) #7532199
Lesenswert?

Hallo Experten,

wenn der WatchDog anschlägt wird ein Reset ausgeführt. Dann ist das Display (per Initialisierung) schwarz. Ich möchte feststellen, ob ein POR (Kaltstart) oder ein WDR (Warmstart) ausgeführt wird und entsprechend den Display Inhalt nicht initialisieren.

Problem: Der IAR Compiler manipuliert das RAM bevor mein Programm einsetzt. Dann ist der aktuelle Displayinhalt weg. Wie kann ich in der IAR-IDE dieses Aufrufen der IAR-Assemblerroutine ausschalten?

freundlichst,

Uwe

Gast #7532343
Lesenswert?

Moin,

meinst Du mit "manipuliert das RAM" die Initialisierung der Variablen durch den Startup-Code?

Du kannst beispielsweise den Speicherbereich, in dem der Framebuffer liegt im *.icf als "do not initialize" spezifizieren und dann ist es komplett Dir überlassen, wie da sinnvolle Daten rein kommen...

Mehr Details liefert der C/C++ Development Guide, wenn Du nach "do not initialize directive" suchst.

Gruß, Michael

#7532846
Lesenswert?

Uwe W. schrieb:

Display (per Initialisierung) schwarz. Ich möchte feststellen, ob ein POR (Kaltstart) oder ein WDR (Warmstart) ausgeführt wird und

Problem: Der IAR Compiler manipuliert das RAM bevor mein Programm einsetzt. Dann ist der aktuelle Displayinhalt weg. Wie kann ich in der

Der Compiler "manipuliert" da nichts, sondern der Startup-Code, der i. d. R. automatisch dazu gelinkt wird, löscht halt Teile des RAM. Soll ja so passieren.

Wenn man das nicht will, wertet man im selbst geschriebenen bzw. zumindest modifiziertem Startup-Code die Flags im RCC_CSR (dazu sind die auch da) aus und überspringt halt ggf. das Löschen.

Oder man legt den Display-Buffer in den nicht-initialisieren RAM-Teil und löscht den nur bei Bedarf selbst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren