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

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