Forum: PC-Programmierung Adresszuweisung in Header Dateien


von Munk (Gast)


Lesenswert?

Ich komme mit folgendem Inhalt einer meiner Headerdateien nicht klar. Es 
wird zunächst der Alias-Datentyp Volatile deklariert. Dieser wird dann 
über
den define befehl mit einer neu definierten Variable SRC einem 
Adressbereich zugeordnet. Bei letzterem komm ich mit der Syntax nicht so 
ganz klar, ich dachte eine Speicherreservierung müsste zumindest mit 
einem = erfolgen (hier aber lediglich über die dargestellte Synax in der 
#define SRC ... Zeile.

#define SRC     ((SRCModule * )0xF0038000)

typedef volatile struct
{
      COMM_SRCReg CPU0_SRC;                   /* 0x000 */

...


      COMM_SRCReg GPT121_T5_SRC;              /* 0x488 */
      COMM_SRCReg GPT121_T6_SRC;              /* 0x48C */
}SRCModule;

von Karl H. (kbuchegg)


Lesenswert?

Munk schrieb:
> Ich komme mit folgendem Inhalt einer meiner Headerdateien nicht klar. Es
> wird zunächst der Alias-Datentyp Volatile deklariert.

Äh, nein

> Dieser wird dann
> über
> den define befehl mit einer neu definierten Variable SRC einem
> Adressbereich zugeordnet.

Auch nicht. #define erzeugt keine Variablen.

> Bei letzterem komm ich mit der Syntax nicht so
> ganz klar, ich dachte eine Speicherreservierung müsste zumindest mit
> einem = erfolgen

??


Ich denke, es ist Zeit für meinen Standardspruch:
Du brauchst ein C-Buch! Und du musst es auch durcharbeiten.

Nichts von dem was du geschrieben hast, ist irgendwie auch nur in der 
Nähe davon, richtig zu sein. Das ist eine Kombination mehrerer 
Basistechniken, deren zentrales Element der Cast ist, der zur 
gefälligeren Benutzung in einem Makro versteckt wurde. Variablen, in dem 
Sinne in dem Variablen in einer Programmiersprache benutzt werden, sind 
da überhaupt nicht im Spiel. Dem Compiler wir ein bestimmter 
Speicherbereich, der im eigentlichen Sinne ja nur ein unstrukturierter 
Bytehaufen ist, als strukturiertes Objekt untergejubelt.
Ich tippe mal darauf, dass an dieser Adresse im Speicher irgendein 
Memory Mapped Device eingeblendet ist, dessen Zugriffsregister etwas 
komfortabler ansprechbar gemacht werden.

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.