Forum: Compiler & IDEs Warmstart STM32F0 unter IAR


von Uwe W. (Firma: LCD-Solution SAS) (upwettin)


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

von Michael F. (Firma: IAR Systems) (michael_iar)


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

von Andreas B. (abm)


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.

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
Noch kein Account? Hier anmelden.