Das Programm, dass du schreibst, wird erstmal kompiliert und als HEX-File abgespeichert. Dieses wird dann per USB zum AVR geschickt und auf dem AVR wiederum ist der Arduino Bootloader, der dann den AVR programmiert mit dem HEX-File das du ihm geschickt hast. Über die Speicherzugriffe musst du dich eigentlich erstmal nicht kümmern.
Dein Programm wird im Flash-Speicher abgelegt, das ist ein nicht-flüchtiger Speicher, sprich nach dem Ausschalten der Betriebsspannung bleibt das Programm gespeichert. Der EEPROM ist ein weiterer nicht-flüchtiger Speicher, der allerdings nicht für das Hauptprogramm verwendet wird, sondern man legt dort eher Daten ab, die sich selten oder gar nicht ändern, z.B. Kalibrierdaten.
Die benötigten Variablen und Daten werden dann beim Programmstart in den SRAM geladen. Daten und Programmspeicher sind bei dem AVR getrennt, da er auf der Harvard-Architektur basiert.
EDIT: Wenn du per ISP programmieren würdest, würde der Programmer sich auch wieder um das Abspeichern an den korrekten Stellen im Flash kümmern.
Lesezeichen