C51 - In xdata schreiben (XC888)

Gast #3063920
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
Gast #3063947
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.
Gast #3064037
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!!!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.