Hallo Retro,
Ein Monitorprogramm ist ein Programm, das auf dem Zielcontroller läuft,
und das In-System-Debugging verarbeitet bzw. die Debug-Kommandos des
Debuggers (meistens läuft dieser auf einem PC) verarbeitet.
D.h.: Das Monitorprogramm wird nur benötigt, wenn du den Zielcontroller
debuggen möchtest. Daher auch der Begriff Monitor/Debugger. Dieses
Monitorprogramm ist meines Wissens nach, nie in einen Controller nach
Auslieferung programmiert, da man ja auch auf der PC-Seite das
Gegenstück zum Monitor, den eigentlichen Debugger benötigt.
Während des Debuggen mit einem Monitor hat man den Monitor im
Programm-Code-Flash/EPROM und das zu debuggende Programm im RAM. Dabei
muss das Flash/EPROM sowie das RAM als Code-Speicher ansprechbar bzw.
anspringbar (durch CALL und JMP Befehle addressierbar) sein. Den
verbleibenden Teil des RAMs verwendet das zu debuggende Programm als
RAM.
Daraus ergibt sich, daß während des Debuggens mit einem Monitor das
Flash/EPROM nicht mehr als Codespeicher für das zu debuggende Programm
zur Verfügung steht, und man benötigt daher (viel) mehr RAM während des
Deguggens als man für das zu deguggende Programm alleine benötigt.
Die Verwndung eines Monitor/Debugger funktioniert nicht mit einem AVR,
aus folgenden Gründen:
1. es steht zu wenig RAM (zumindest bei den kleinen AVR's) zur Verfügung
2. das RAM ist nicht anspringbar (durch CALL und JMP Befehle
addressierbar)
Bei einigen bzw. neuen AVR-Megas, gibt es eine sogenannte
"Self-Programming" - Funktion, mit dieser kann man das Flash zur
Laufzeit verändern, evtl. ist hierdurch die Verwendung eines
Monitors/Debuggers möglich, dies hat aber meiner Meinung nach folgende
Nachteile:
1. Das Verändern/Beschreiben des Flashs dauert viel länger als bei einen
RAM => Monitor wird sehr langsam laufen
2. Ein Flash ist ca. 100000...300000 mal beschreibar => nach kurzer
Verwendung eines Monitors ist das Flash defekt/nicht mehr beschreibar
Reicht dir diese Erläuterung zum Begriff "Monitor"?
Gruß Matthias