Neben den Speichertechnologien ROM
(engl. "read-only memory" = "Nur lesen-Speicher")
und RAM (engl. "random access memory" = "Speicher
für beliebigen Zugriff", d. h. zum Lesen und Schreiben)
gibt es auch noch EEPROM (engl. "electrically erasable
and programmable ROM" = "elektrisch löschbares und
programmierbares ROM") und natürlich
dessen moderne Version, Flash.
Während EEPROMs komplett gelöscht werden müssen,
was einige Sekunden oder sogar Minuten dauert,
ehe man sie neu programmieren (beschreiben) kann,
lässt sich Flash schnell in kleinen Blöcken
löschen und überschreiben.
Der Programmspeicher eines Mikrocontrollers
ist typischerweise ein EEPROM, das von einem
Computer aus über eine Datenverbindung
programmiert wird, als ein E/A-Gerät an
den PC des Programmierers angeschlossen.
Wenn der Mikrocontroller eingeschaltet wird,
startet sein einziges Programm direkt
ab der Programmspeicheraddresse "0".
Dies geschieht in jedem Taschenrechner,
jeder Waschmaschine, jeder Fernbedienung
und so weiter, eben all den vielen Geräten,
die uns im Alltag umgeben und die von
Mikrocontrollern gesteuert werden.
Der Computer hingegen verwendet EEPROM oder
Flash nur für seinen untersten Speicheradressbereich,
während der überwiegende Teil seines
Adressraums in RAM umgesetzt ist.
Das (EEP)ROM-Programm, die Firmware,
führt den Ladevorgang (das "Booten") durch,
bei dem auf das Vorhandensein essenzieller
E/A-Geräte wie Tastatur und Monitor geprüft wird,
implementiert eine Boot-Manager genannte
Endnutzeranwendung, die es dem Nutzer erlaubt,
nach Drücken von Hotkeys vor Beginn des
Ladevorgangs grundlegende Einstellungen am
Computer vorzunehmen, und lädt dann das
Hauptprogramm (üblicherweise das Betriebssystem
oder ein Betriebssystem-Installationsprogramm)
von dem im Boot-Manager angegebenen
Speichermedium, etwa der Festplatte.
Nach dem Laden (Kopieren vom Speichermedium ins
Programmspeicher-RAM) wird der Programmzeiger auf
die Start-Adresse des geladenen Hauptprogramms
gesetzt und dieses dadurch dann ausgeführt.