Hallo, eine bestimmt Struktur soll auf eine Adresse gesetzt werden Wie wird sowas in C realisiert?
C kennt keinen Mechanismus dafür. Je nachdem welche Toolchain du benutzt, gibt es aber oft Möglichkeiten, das zu spezifizieren. zB für ARM GCC: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0474f/BABDJCAA.html
:
Bearbeitet durch User
1 | struct dein_struct *ps = (struct dein_struct*)adr; |
oder stehe ich auf dem Schlauch? Auf den Speicher musst Du natürlich zugreifen dürfen...
CC schrieb: > oder stehe ich auf dem Schlauch? > Auf den Speicher musst Du natürlich zugreifen dürfen... Ich denke es geht um Read-Only Programm/Flashspeicher
CC schrieb: > Auf den Speicher musst Du natürlich zugreifen dürfen... Und der Compiler/Linker darf die Adresse nicht für etwas anderes verwenden. Mir fallen da spontan zwei Anwendungsfälle ein: 1) Struct abstrahiert eine Registerstruktur. => Vorschlag von CC 2) Struct soll in einem Shared-Memory für ein anderes Modul sein. => Über den Linker das Objekt an eine bestimmte Adresse legen lassen.
CC schrieb: >
1 | > struct dein_struct *ps = (struct dein_struct*)adr; |
2 | >
|
> > oder stehe ich auf dem Schlauch? > Auf den Speicher musst Du natürlich zugreifen dürfen... struct dein_struct *ps = (struct dein_struct*)(void *) 0x1234;
Das habe ich vergessen zu sagen wofür ich dies benötige. Mit dieser Struktur sollen Zählerstände ausgelesen werden ==> Read Memory
Zählerstände?? Ist nicht alles ein Zähler: Register, Speicher, IO-Ports... Bei mir kommen sie übrigens immer einmal im Jahr vorbei, um die Zähler zu lesen. Meist bin ich nicht da, dann schicke ich eine Postkarte hin. Wie wäre es, wenn du den Zähler einfach ausdruckst, dann kann man den auch lesen.
1 | struct dein_struct *ps = (struct dein_struct*0x10000000; |
PS ist somit ein Pointer vom Typ dein_struct ab der Adresse 0x1000000. Wie kann ich nun auf diese Strukturelemente im Quellcode zugreifen?
Hab den Fehler gesehen. Es funktioniert.
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.