STM32 RAM Speicher nach Reset

OP #4588261
Lesenswert?
• ▲
▼
Ist der RAM Speicher nach einem Watchdog oder Software Reset gelöscht?

Habe hier immer 0 Werte im Speicher.

Evtl. ist das die Initialisierung von Mikropascal

http://www.mikroe.com/mikropascal/arm

Habe aber gelesen, dass normalerweise der Speicherwert bei einem 
Watchdogreset erhalten bleibt. Ich brauche momentan nur ein Byte welches 
hochgezählt wird zum Testen der Baudrate.
#4588275
Lesenswert?
• ▲
▼
Der mc manipuliert das RAM bei einem Reset i.d.R. nicht (Beispiel: 
ATmega, STM32).
Die Startup-Routine, die Dein Compiler vor dem Start Deines Programms 
ausführt, initialisiert allerdings einige RAM-Bereiche mit Nullen.

Wie das bei Mikropascal aussieht, weiss ich nicht. Für den gcc kann ich 
Dir Beispiele geben, wie Du eine Variable reset-resistent und an einer 
festen Adresse im RAM ablegen kannst (Stichwort: Linkerfile).

Gruß, Stefan
Gast #4588365
Lesenswert?
• ▲
▼
Ohne Compiler- oder Linker-Tricks geht es, wenn du Hardware-Register 
benutzt. Die meisten STM32 haben im RTC-Block ein paar "Backup-Register" 
BKP0BR bis BKPxBR. Die werden von keinem normalen Reset gelöscht, 
sondern haben einen extra Hardware-Reset. Das ist eine Alternate 
Function, z.B. RTC_TAMP1 auf PC13, du musst den Eingang also nicht 
verdrahten. Als Bonus könnte man sie per Batterie versorgen.
OP #4588801
Lesenswert?
• ▲
▼
Danke für den Tipp! Hab es irgendwie hinbekommen mit den Backup 
Registern. Allerdings geht das nur, wenn vorher ein paar Bits in den 
entsprechenden Registern gesetzt werden. Enable und so weiter. Lieber 
wäre mir, wenn das genauso wie bei den AVR's funktionieren würde. Die 
behalten den Speicher auch beim Reset.
Gast #4589117
Lesenswert?
• ▲
▼
Rainer S. schrieb:
> Lieber wäre mir, wenn das genauso wie bei den AVR's funktionieren würde. Die
> behalten den Speicher auch beim Reset.

Die Hardware verhält sich genau gleich, das normale RAM behält seine 
Daten. Die Laufzeitumgebung von C löscht globale Variablen, Pascal macht 
das anscheinend nicht.

Cortex M ist doch angeblich "genormt", also müsste dein Pascal-Compiler 
doch auch Programme für STM32 erzeugen können. Unterschiede sollte es 
nur in Bereichen geben, die mit Pascal sowieso nicht erreichbar sind. 
Versuch macht kluch!

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.