Forum: Mikrocontroller und Digitale Elektronik Atmega328 Flash beschreiben


von Carsten S. (Gast)


Lesenswert?

Ist es möglich während der Laufzeit den internen Flash zu beschreiben? 
Ich habe eine Lookup table, die von Zeit zu Zeit mal geändert wird und 
berechnet werden muss. Das dauert aufgrund von Floating Point 
Operationen alleridngs zu lange um es während des eigentliches 
Messvorgangs zu machen.

von Oliver S. (oliverso)


Lesenswert?

Carsten S. schrieb:
> Ist es möglich während der Laufzeit den internen Flash zu beschreiben?

Ist es.

Oliver

von Stefan F. (Gast)


Lesenswert?

Alternativ kannst du das EEPROM verwenden, das verträgt mehr Änderungen.

von Carsten S. (Gast)


Lesenswert?

Oliver S. schrieb:
> Ist es.

Ich finde da in der AVR-libc nichts zu. Ich meine nicht das beschreiben 
aus dem bootloader sondern aus dem "normalen" Programm heraus.

von c-hater (Gast)


Lesenswert?

Carsten S. schrieb:

> Ist es möglich während der Laufzeit den internen Flash zu beschreiben?

Teils, teils.

Es gibt Bereiche im Flash, die tatsächlich "zur Laufzeit" beschrieben 
werden können. Damit ist konkret gemeint: währenddessen kann anderer 
Code tatsächlich u.U. noch laufen.

Es gibt aber auch Bereiche im Flash, wo das nicht möglich ist.

Du findest den Unterschied im Datenblatt unter den Stichworten "NRWW" 
respektive "RWW".

von MaWin (Gast)


Lesenswert?

Carsten S. schrieb:
> Ich meine nicht das beschreiben
> aus dem bootloader sondern aus dem "normalen" Programm heraus.

Du musst dafür in den Bootloaderbereich springen.
Also deine Schreibefunktion per Linkerscript in den Bootloaderbereich 
lokatieren.
Bootbereichfuse aktivieren.
Wenn du keinen wirklichen Bootloader hast, dann aus dem Boot-Resetvector 
in den normalen Resetvector springen.

von c-hater (Gast)


Lesenswert?

Carsten S. schrieb:

> Ich finde da in der AVR-libc nichts zu. Ich meine nicht das beschreiben
> aus dem bootloader sondern aus dem "normalen" Programm heraus.

Ein "normales" Programm (außerhalb des Bootloader-Bereichs) kann 
generell nicht in den Flash schreiben. Es muß mindestens ein kleines 
Stück Code im Bootloader-Bereich aufrufen.

Sprich: theoretisch muß mindestens der Kern der Sache, nämlich die 
"spm"-Instruktion im Bootloader-Bereich liegen. Praktisch muß noch etwas 
mehr dort liegen, insbesondere dann, wenn es sich beim Aufrufer um ein 
C-Programm handelt...

von Stefan F. (Gast)


Lesenswert?

Carsten S. schrieb:
> Ich finde da in der AVR-libc nichts zu.

Das ist richtig, diese Bibliothek hat dafür keine Funktion. Das musst du 
dir "zu Fuß" programmieren.

Für das EEprom gibt es aber C Funktionen.

von uff basse (Gast)


Lesenswert?

Carsten S. schrieb:
> Ich finde da in der AVR-libc nichts zu.

Da spickt man in einem Sourcecode für einen Bootloader, der
muss das ja können .....

von H. Eggert (Gast)


Lesenswert?

SPI/TWI FRAM wäre vielleicht eine interessante Alternative und verträgt 
praktisch unbegrenzte Lese- und Schreibzugriffe. Ausserdem sind keine 
komplizierte FLASH Programmierungsmethoden notwendig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.