Variable in einen bestimmten RAM bereich

#4093651
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;
#4093893
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.
Gast #4094009
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

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.