Realizer:
Keine Angst, ich will dem Arduino nicht untreu werden.
Aber es ist ein wenig OT, nachdem einige Herrschaften in dem Thread "Erklärung zum Forum" Deutsch - Arduino Forum verpetzt haben, daß hier auch einige "uralte" Exoten mitmischen.

Dein Link soll wohl hierhin zeigen: Erklärung zum Forum - Deutsch - Arduino Forum
Ich muss mich leider fragen, ob das einem "Jungen" auch passiert wäre 8)
Realizer:
Ich weiß nicht ob man einen moderneren 8051 im Flashrom starten kann um dann den externen Ram über UART zu befüllen und dann komplett auf Extern umzuschalten. Programm und Daten befinden sich dann im SRAM.
Also, ich habe an meinem Arduino Mega2560 64kB externen SRAM angeschlossen. Mit der Arduino-IDE gelingt mir der Zugriff nur durch
int8_t *adr;
.
.
.
adr = (int8_t *) 0x2200U;
adr[0x1000] = 12; // auf Adr. 0x1000 schreiben bzw.
Serial.println(adr[0x1000]); // bzw. Adr. 0x1000 auslesen
Aktiviert habe ich den externen SRAM mit
void setup() {
XMCRA = 0x80;
XMCRB = 0x80;
}
Die Erklärung zu XMCR A und B (also External Memory Configuration Register A und B) findest Du im Datenblatt des ATMega2560. Kurz: Externes SRAM wird eingeschaltet, keine Waitstates, kompletter 64kB-Adressraum wird benutzt.
Um nun den RAM auch für Daten und Variablen benutzen zu können, muss man dem Linker mitteilen, das externes RAM vorhanden ist. Nach vielem Rumprobieren habe ich keinen Weg gefunden um über die Arduino-Oberfläche dem Linker Optionen übergeben zu können. Deswegen habe ich hier Linker Optionen beim Mega2560 setzen, zwecks ext. SRAM - Deutsch - Arduino Forum nach Hilfe gejammert, hat sich aber leider bis jetzt niemand zu Wort gemeldet.
Ich benutze jetzt zum Testen mal Code-Blocks, hier kann man zumindest Linker-Optionen einstellen. Leider habe ich aber mit
-Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
noch nicht das gewünschte Ergebnis erzielt.
Für mich wäre es eigentlich auch wünschenswert, ein Programm in den SRAM zu laden und dann auf irgendeine Weise den Program Counter in den externen RAM zu setzen, damit dort das Programm abgearbeitet wird, aber wie das gehen könnte oder ob es überhaupt möglich ist, weiß ich noch nicht. Falls Du dazu etwas rausbekommst, lasse es mich bitte unbedingt wissen! Falls Du noch was zum Lesen brauchst, hätte ich hier noch einen Link über die Speicheraufteilung der AVRs: avr-libc: Memory Areas and Using malloc().
Soweit also mein momentaner Kenntnisstand. Vielleicht hilfts ja ein wenig...
Gruß,
Ralf