xdata mit Keil compiler und 8051

Gast #2212355
Lesenswert?

Halli Hallo,

vorneweg schon mal - ich bin noch relativ neu in der uC Programmierung, 
also habt etwas Nachsicht wenn ich ein wenig unbeholfen frag. ^^

Ich habe hier also einen 8051F340 den ich in C programmiere ( benutze 
die IDE von SiLabs und den Compiler von Keil )

Mein Problem ist nun folgendes - ich schicke dem uC Daten vom PC ( was 
ohne Probleme funktioniert ) welche ich dann im externen Speicher 
ablegen will um später darauf zuzugreifen.

Nun ist es mir leider Schleierhaft wie ich dass in C umsetze
z.B.
1
unsigned char xdata xdata_buffer [64] _at_ 0x0200;
2
memcpy (xdata_buffer, ReadBuffer, sizeof (xdata_buffer));

Soweit komme ich ja noch mit, dass er mir dann den Inhalt von ReadBuffer 
an die Adresse 0x0200 schreibt.
Aber ich würde gerne wissen ob es auch eine Möglichkeit den 
Adressbereich der Variable xdata_buffer zu ändern.
Ich will z.B. in einer Schleife einige Adressbereiche durchgehen und es 
wär ja Schwachsinn für jeden eine eigene xdata Variable anzulegen.

Hoffe ich konnte mein Problem einigermaßen erklären ^^
Viele Grüße

Tobi
Gast #2212590
Lesenswert?

Hey,

danke für deine Antwort.
Aber wie müsste ich den Pointer initialisieren dass er auf den externen 
Speicher zeigt? Ganz normal? Oder muss cih da net auch irgendwo das 
"xdata" utnerbringen?
Viele Grüße
(Firma: electronica@tdnet) Persönliche Seite #2213081
Lesenswert?

Flipp schrieb:
> Ich habe hier also einen 8051F340 den ich in C programmiere ( benutze
> die IDE von SiLabs und den Compiler von Keil )

OK, den habe ich auch, aber wenn Du schon den F340 verwendest,
warum schauste dann nicht in die AppNote zum USB-Memory-Stick?

Da steht alles drin inclusive des vollständigen Programmcodes.

Grüße
Michelle
#2213117
Lesenswert?

>>unsigned char xdata xdata_buffer [64] at 0x0200;

In C sollte man den Compiler/Linker die gesamte Speicherverwaltung 
übernehmen lassen, also auf das at .. verzichten. Die absolute Adresse 
von xdata_buffer ist uninteressant. Du greifst über einen Zeiger oder 
einfach über eine Index-Variable darauf zu.

Bei Keil gibst Du in den Projekteinstellungen dann den XDATA Bereich an.

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