Daten in den Programspeicher zur laufzeit.

#3336218
Lesenswert?

Programspeicher schrieb:
> Im Datenblatt steht nur ASM code, würde es gerne in C machen.

Da wirst du aber Probleme kriegen.
Die Spezial-Register zu beschreiben ist noch nicht das große Problem. 
Aber den Compiler dazu zu zwingen, den Z-Pointer bzw. eine SPM 
Instruktion einzusetzen, das wird schon schwieriger.

-> Solche Dinge kann man nur in Assembler vernünftig machen. Klar kann 
man sich dann um die Assembler-Abschnitte C-Funktionen bauen. Aber im 
Kern kriegst du das nur in Assembler hin.
#3336247
Lesenswert?

Georg G. schrieb:
> Sollte es nicht mit den Routinen funktionieren, die in boot.h definiert
> sind (boot_page_write() als Beispiel)?

Keine so schlechte Idee.
Im Prinzip müsste das gehen.

Bleibt aber immer noch das Problem, dass diese Flash-Zugriffe aus dem 
Bootloader-Bereich des Mega heraus erfolgen müssen. D.h. man muss den 
Linker dazu überreden, die Funktionen da rauf zu verschieben. Allerdings 
kenne ich mich da nicht besonders aus.

Ich würde auch ein extenes EEPROM nehmen, wenn der Platz nicht reicht.
4KB EEprom sind schon eine Menge Holz. Was ist da alles an 
Konfigurationsdaten drinn enthalten? Kann man da etwas abspecken?
#3336267
Lesenswert?

Karl Heinz Buchegger schrieb:
> man muss den
> Linker dazu überreden, die Funktionen da rauf zu verschieben.

Bei AVR-Studio in den Configuration Options unter Memory eine neue 
section an passender Stelle definieren und den Code per attribute dort 
ablegen lassen.

(Ein serielles EEPROM mit etwas Heißkleber kopfüber auf der Platine geht 
vermutlich einfacher, aber das will der TO ja nicht.)
#3336278
Lesenswert?

Hi.

Die SPM-Instruktion kann nicht von jeder Stelle im Flash erfolgreich 
ausgefuehrt werden. Also einfach den hinteren Speicher beschreiben wird 
fehlschlagen. (Bzw. einfach nicht durchgefuehrt.)

Um eine Updatefunktion fuer das tinyUSBboard zu realisieren ( 
http://matrixstorm.com/avr/tinyusbboard/ ) habe ich vor einiger Zeit 
eine API implementiert mit der man beliebig Flash schreiben kann.

Im Beitrag Beitrag "Re: [ATMega] Programm aus externem EEprom laden" habe 
zudem ein Beispiel vorgestellt, wie man es benutzt.

Ich hoffe es hilft dir, und wuerde mich um Feedback freuen.

MfG Stephan

Nachtrag: Anfangs falscher Link jetzt korrigiert.

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