STM32: Flash OFF? Codeausführung von RAM?

Gast #6018162
Lesenswert?
• ▲
▼
Hallo,
ich beschäftige mich gerade mit der Minimierung der Stromaufnahme eines 
STM32L0 Prozessors. Die Sromaufnahme zwischen Codeausführung von RAM und 
Flash unterscheidet sich doch noch einmal merklich.

Frage 1: Wie bringt man den Porozessor zur Code-Ausführung per RAM. Wird 
der Prgrammspeicher beim Start zuerst in den RAM kopiert und dann von 
dort ausgeführt? Code für RAM und Flash sind ja nicht kompatibel und 
müssen für jeden Speicherbereich individuell kopiert werden.

Frage2: Im Datenblatt ist eine Option Flash OFF angegeben. Geht dies 
automatisch mit der Ausführung vom RAM einher oder kann man auch den 
Flash, zB für eine Sleep-Phase aussschalten?

Danke :)
Gast #6018270
Lesenswert?
• ▲
▼
> Wird der Prgrammspeicher beim Start zuerst in den RAM kopiert

Richtig.

> Geht dies automatisch mit der Ausführung vom RAM einher

Automatisch geht gar nichts.

Solange du solche Fragen nicht selber beantworten kannst,
nimm einen kleinen 8 Bitter.
Persönliche Seite #6019095
Lesenswert?
• ▲
▼
Jens schrieb:
>
> Frage 1: Wie bringt man den Prozessor zur Code-Ausführung per RAM. Wird
> der Prgrammspeicher beim Start zuerst in den RAM kopiert und dann von
> dort ausgeführt?

Normalerweise nicht (bei kleinen Mikrocontrollern mit internem Flash).

> Frage2: Im Datenblatt ist eine Option Flash OFF angegeben. Geht dies
> automatisch mit der Ausführung vom RAM einher oder kann man auch den
> Flash, zB für eine Sleep-Phase aussschalten?

Bevor du den Flash-Speicher abschaltest, musst du dafür sorgen, dass er 
nicht gebraucht wird.  D.h. der ausgeführte Code und ggf. die 
Vektortabelle müssen vorher ins RAM verlegt werden.

Automatisch geht das nicht.
#6023691
Lesenswert?
• ▲
▼
Jens schrieb:
> ich beschäftige mich gerade mit der Minimierung der Stromaufnahme eines
> STM32L0 Prozessors. Die Sromaufnahme zwischen Codeausführung von RAM und
> Flash unterscheidet sich doch noch einmal merklich.

Falsche Baustelle.

Diese Sorte Prozessoren schickt man mit __WFI() in den Schlafmodus. Es 
is ziemlich egal wo die Codeausführung statt findet wenn der Prozessor 
>90% der Zeit schläft.
Gast #6023836
Lesenswert?
• ▲
▼
Jim M. schrieb:
> Falsche Baustelle.
>
> Diese Sorte Prozessoren schickt man mit __WFI() in den Schlafmodus. Es
> is ziemlich egal wo die Codeausführung statt findet wenn der Prozessor
>>90% der Zeit schläft.

Das musst du ja wissen. Es gibt durchaus Anwendungen, in denen der 
Prozessor nicht die ganze Zeit schlafen darf. Z.B. weil die 
Interruptlatenz eine Rolle spielt. Der normale Sleep bringt übrigens 
fast gar nichts. Da kann man auch die Taktfrequenz reduzieren.

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.