Olli wrote:
> HAllo!
>
> ich bin noch Neuling auf dem Gebiet der AVRs.
> Ich habe gerade mein LCD zum laufen gebracht und dabei stellt sich mir
> die Frage ob mein verwendeter compiler (winAVR), automatisch meine
> STring-Konstanten in den SRAM legt, bzw von dort holt.
Dein Compiler ist nicht WinAVR, sondern GCC.
> z.B.
> lcd_string("test");
Diese wird im RAM gehalten. Ins FLASH kriegt man Strings mit dem
'PROGMEM'-Attribut. Mehr dazu in der Anleitung zur AVR-LIBC.
> Was für Vorteile bzw. Nachteile bringt es, seine Konstanten in den Flash
> zu legen bzw. sie von dort zur Lauzeit zu lesen?
Eine Konstante im 'RAM' braucht doppelt so viel Speicher: Zuerst wird
sie ins FLASH genagelt, um dann beim Starten des Programms (des AVRs)
von dort ins RAM kopiert zu werden.
Geschwindigkeitsvorteil bringts eigentlich keinen, RAM lesen ist etwa
genauso teuer wie FLAHS lesen.
Konstanten im FLASH sind prinzipbedingt konstant, lassen sich also
überhaupt nicht ändern. 'Normale' Konstanten im RAM sind eigentlich auch
konstant, aber man kann sie trotzdem ändern (was aber nicht Sinn der
Sache ist, klar).