externes ram verwenden in c

Gast #148757
Lesenswert?

Da gibts eine ganze Menge Wege.
Als erstes musst Du das externe SRAM-Interface aktivieren.
Je nachdem wie früh/spät Du das in Deiner Applikation machst, kannst Du
entweder per Pointer direkt auf das externe SRAM zugreifen, malloc() ins
externe SRAM packen oder sogar die ganzen Variablen in das externe SRAM
verlagern. Den Stack würde ich aus Performancegründen auf jeden Fall
im internen SRAM belassen, die Variablen aus dem gleichen Grund
Vorzugsweise auch. Damit bliebe noch malloc() und der "direkte"
Zugriff per Pointer übrig.

Das ganze geht in etwa so (aus dem Kopf):

unsigned char *pExtSRAM = 0x1100;

    MCUC(S)R = (1 << SRE); /* no wait-states */
    pExtSRAM[0] = 0x55;
    pExtSRAM[1] = 0xAA;
    /* ... */
Gast #148758
Lesenswert?

erstmal danke für deine schnelle antwort!
also bei mir funktioniert dein code nicht. er meldet, dass die
zuweisung  der pointeradresse nicht funktioniert. er schreibt, dass die
operanten dieser funktion illegale typen aufweisen (ICCAVR).
und warum verwendest du pExtSRAM[0] [1] ... wenn du vorher kein array
definierst?

danke

mfg andi
Gast #148759
Lesenswert?

Hups, sorry:

unsigned char *pExtSRAM = (unsigned char *) 0x1100;

Warum ich pExtSRAM[x] benutze? Weil es einfacher zu lesen ist als

    *(pExtSRAM + x) = 0x??;

Dazu liest Du aber besser mal ein Kapitel über Zeiger/Arrays in einem
guten C-Buch, falls Du noch Fragen hast ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren