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

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.