Forum: Mikrocontroller und Digitale Elektronik C51 - In xdata schreiben (XC888)


von Flipp (Gast)


Lesenswert?

Hey,

Habe hier ein kleines Programm, welches unter anderem einen Buffer in 
den externen Speicher schreiben und lesen soll. Das ganze sieht 
vereinfacht so aus (hab das unwesentliche mal weggeleassen):

Header.h:
1
extern ubyte xdata rec_buffer[32];

Function.c:
1
ubyte xdata rec_buffer[32] = {0};
2
3
void foo()
4
{
5
    //Option 1
6
    rec_buffer[0] = 0xFF;    // Geht nicht
7
8
    //Option 2
9
    ubyte xdata *ptr_buf = rec_buffer;
10
    ptr_buf[0] = 0xFF        // Geht nicht
11
}

Mein Problem ist, dass ich in beiden Fällen zwar keine Compilerfehler 
bekomme, wenn ich es teste wird nichts in den Speicher geschrieben. Beim 
Debuggen sehe ich zwar dass die Pointer korrekterweise auf den externen 
Speicher zeigen (X:0x0000000), aber es wird nie was dorthin geschrieben 
und die Werte bleiben immer 0.
Was veregsse ich da bzw. mache ich falsch?

Viele Grüße

Flipp

von FPGASchubser (Gast)


Lesenswert?

Entscheidend ist das Speichermodell mit dem du den Compiler sagst, dass 
er externen Speicher hat, und wo der liegt.

Da solltest Du dein Problem suchen....

Allerdings fehlen uns solche Angaben wie Address-Space , Compiler und so 
weiter....
Gruß T.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Es geht um Keil C51 sicherlich.

Ist schon lange her, aber man mußte früher dem Linker noch sagen, auf 
welcher Adresse XDATA liegt.

von Flipp (Gast)


Lesenswert?

Abdul K. schrieb:
> Es geht um Keil C51 sicherlich.
>
> Ist schon lange her, aber man mußte früher dem Linker noch sagen, auf
> welcher Adresse XDATA liegt.


Danke, genau das war das Problem gewesen! Musste in den 
Projekteinstellungen für den Linker einstellen, wo der Adressraum für 
den externen Speicher beginnt (beim XC888 ist das ab 0x0F000).

Vielen Dank, jetzt funktioniert es!!!

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.