> das kann schon irgendwie, lass dir da nichts einreden.
[...]
> ich bin nicht so sehr in die architektur der avrs vertraut
Eben. Also mach ihm auch keine Hoffnung.
> möglicherweise kannst du den code aus dem eeprom in den ram kopieren und
> direkt aus dem ram ausführen.
Nein, das geht nicht, da beim AVR Datenspeicher und Programmspeicher
(Flash) über getrennte Busse angesteuert werden und damit auch getrennte
Adressbereiche haben. Es ist schlicht nicht möglich, in das SRAM zu
springen und dort Code auszuführen.
Siehe auch:
http://de.wikipedia.org/wiki/Harvard-Architektur
> oder per sd karte - es gibt genug bootloader im netz. diese können auch
> den internen flash beschreiben und danach ausführen.
> was du also machen kannst ist einen dieser bootloader zu modifizieren,
> je nach state können also andere .bin dateien in den internen flash
> geladen und ausgeführt werden.
Das ist theoretisch möglich, auch wenn nicht alle AVRs den
Schreibzugriff auf das Flash vom Programm aus erlauben. Aber was
"nomatrix" machen möchte und was ein Bootloader tut, sind zwei völlig
verschiedene Paar Schuhe.
Den Flash zu löschen und neu zu schreiben dauert vergleichsweise sehr
lange. Die Schreibzyklen sind begrenzt, das heißt das Flash verschleißt
beim Schreiben und erzeugt irgendwann Bitfehler. Die Prozedur ist zudem
recht kompliziert, bitte lies den entsprechenden Abschnitt im
Datenblatt.
Bei Firmware-Updates, die sehr selten mal vorkommen, sind diese
Nachteile akzeptabel. Zur Laufzeit des Programms allerdings ständig
benötigte Code-Teile zwischen Flash und einem externen Speicher hin- und
herzukopieren, ist Schwachsinn und führt zu einer langsamen
Programmausführung und dem baldigen Ableben des Flashs.
Wenn dein Flash zu klein ist, schreib effizienteren Code, oder wechsele
zum nächsthöheren Modell mit mehr Flash.
Das EEPROM als dritte Art von Speicher ist übrigens nicht ohne Grund in
die meisten AVRs eingebaut: Atmel hat durchaus die Notwendigkeit
erkannt, einige wenige Variablen nicht-flüchtig zu speichern, zum
Beispiel die Konfiguration eines Gerätes, und hält den Flash-Speicher
dafür anscheinend selbst nicht geeignet.
Für dein Problem (was ist das genau?) gibt es mit Sicherheit eine
bessere Lösung.