Hallo! Eine Frage: Wie kann ich einem Array in C eine feste Adresse in meinem Flash Speicher vergeben? unsigned char array[10]; // soll z.b. an Adresse 0x046E Danke
Hallo Christian, unsigned char* test = (unsigned char*)0x046E; int main(void) { test[2] = 7; // Die 7 sollte bei Adresse 0x0470 stehen } Aber aufpassen, ob der Controller überhaupt mit einem Datenpointer auf den Flash zugreifen kann. Weiterere Nachteile: sizeof hat nicht die Längeninformation. Bei solchen Ansätzen sollte man genau wissen, was man macht. Die Speicherverwaltung geht am Compiler vorbei. Die Speicherstellen sind nicht initialisiert. Wenn es geht, sind solche Ansätze zu vermeiden. Viel Spass Oryx
Hi, sowas muss ich staendiog machen, wenn ich auf mein externes ram zugreifen will. Denn wenn ich z.b. ein großes array direkt in c deklariere unsigned char buffer[240*8]; dann setzt mir der AVR-GCC das direkt hinter die anderen variablen im ram. Das bedeutet bei solch großen feldern natuerlich, dass er mir damit auch den internen stack ueberschreibt, den ich ja wegen der geschwindigkeit moeglichst im internen ram haben mochete. Tobias
Dann lies Dir mal die Doku durch, wie man es schafft, daß nur die Variablen und/oder nur der Heap im externen Speicher landet, während der Stack natürlich nach Möglichkeit intern bleiben sollte (schon aus Geschwindigkeitsgründen).
Danke erstaml für die Antworten! Glaub so gehts nicht! Mein Array wird in einer Headerdatei angelegt, aber komischerweise beginnt es immer an einer ungeraden Adresse(Wortmitte)! Es soll aber am Wortanfang und darum an einer geraden Adresse beginnen! Verständlich? Hoffe ja!
Hallo Christian, ich hoffe mal, das ich das falsch verstanden habe. Wie wird ein Array in einer Headerdatei angelegt? Welcher Controller? Welcher Compiler? Noch eine Kleinigkeit für das allgemeine Verständnis. Was soll das ganze eigentlich. Ist dein Ansatz evtl. so richtig daneben? Oryx
Texas MSP430F149 und der IAR C Compiler! Hab den Quellcode und muss den jetzt ändern! Ja doch das Array wird in der Headerdatei angelegt. Denke schon dass das richtig ist! Aber immer an einer ungeraden Adresse! Soll aber gerade sein!
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.