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
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; |
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.