Forum: Mikrocontroller und Digitale Elektronik Variable in einen bestimmten RAM bereich


von Tobi (Gast)


Lesenswert?

Hallo,
ich werde blad mit einen STM32F7 arbeiten, der einen "TCM RAM for 
critical real time data" besitzt. Wie kann ich den compiler sagen, dass 
er bestimmte Variablen in c in diesen Bereich legen soll?

MfG
Tobi

von Eric B. (beric)


Lesenswert?

Das sagst du nicht dem Compiler, sondern dem Linker. Wie das geht ist 
sehr Compiler/Linker abhängig.

Compiler-unabhängig wäre mit Pointern zu arbeiten, also statt
1
int a;
2
a = 42;
würdest du schreiben:
1
int * pa = (irgendeine addresse im TCM RAM bereich);
2
*pa = 42;

von Mark (Gast)


Lesenswert?

Eric B. schrieb:
> int * pa = (irgendeine addresse im TCM RAM bereich);
> *pa = 42;
Und woher weißt du, dass der Compiler in dieser Adresse nicht schon was 
anders speichert?

von Eric B. (beric)


Lesenswert?

Mark schrieb:
> Eric B. schrieb:
>> int * pa = (irgendeine addresse im TCM RAM bereich);
>> *pa = 42;
> Und woher weißt du, dass der Compiler in dieser Adresse nicht schon was
> anders speichert?

Ich nehme an, dass dieses TCM RAM-Bereich separat vom "normalen" 
RAM-Bereich ist und der Compiler und Linker vom "TCM RAM" eigentlich 
nichts wissen.
Sonst habe ich keine andere Wahl als es den beiden über das 
Linker-script mitzuteilen; und dann brauche ich den Umweg über Pointer 
nicht.

von Georg (Gast)


Lesenswert?

Hallo,

es ist zwar richtig, dass der Linker für die Unterbringung sorgt, aber 
im Embedded-Bereich haben viele Compiler Schlüsselworte wie absolute, 
die einer Variablen eine feste Adresse zuordnen. Ist bei Ports ja auch 
so.

Georg

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.