Speicheraufbau
Das Board kann in drei verschiedene Modi betrieben werden:
Runmodus |
: |
Normaler Betriebsmodus |
Debugmodus |
: |
Betrieb mit Softwaredebugger |
Programmiermodus |
: |
In-circuit-Programmierung des Flashs |
Durch diese drei Modi kann auf dem Board die Software komfortabel entwickelt werden, der Flashspeicher kann
programmiert werden über die serielle Schnittstelle und das Board kann auch ohne PC eingesetzt werden. Da der
eingesetzte Prozessor direkt nur 64kB ROM adressieren kann, würde die Hälfte des Flashs (29F010) nicht benutzt
werden. Für den Debugmodus wird ein Monitorprogramm benötigt, das auch im Flash abgelegt werden muss und somit den
verfügbaren Speicher verringern würde. Durch die Benutzung eines zusätzlichen Portpins wird die
Adresleitung A16 emuliert und kann (fast) der gesamte Flash verwendet werden.
Standardmodus
|
Dieser Modus wird verwendet, wenn die Programmentwicklung
abgeschlossen ist. Nach dem Start wird das Programm im Flash an Adresse 0x00000 gestartet und ausgeführt.
Adresleitung A16 liegt auf Null, da auch die Steuerleitung D/R (Debug/Run)auf Null liegt. Es steht 64k Programmspeicher
zur Verfügung, also von 0x00000 bis 0x0FFFF im Flash. Im Bereich 0x8000 bis 0xFFFF kann 32k RAM verwendet werden.
Zusätzlich gibt's im I/O-Bereich neun Chip-Select-Leitungen zur allgemeinen Verwendung. /CE0 bis /CE7 liegen im
Datenbereich 0x0000 bis 0x0007, /CE_IO1 kann für zusätzliche memory-mapped-I/O verwendet werden und ist im
Bereich von 0x0800 bis 0x7FFF(dies ist in der Elektor fälschlicherweise ab 0x0008 angegeben). |
Debugmodus
|
In diesem Modus kann das Board mit dem source-level-Debugger SLD51 aus der Entwicklungsumgebung μC/51 von
Wickenhäuser verwendet werden. Hiermit kann das Programm über die
serielle Schnittstelle in das RAM geladen werden und schrittweise ausgeführt und getestet werden. Das
Betriebssystem,das dies ermöglicht, heißt OS552 und liegt im Flash im Bereich zwischen 0x10000 und 0x17FFF. Dieser
Bereich wird für den Controller in dem Bereich zwischen 0x0000 und 0x7FFFF gespiegelt. Die oberen 32k des Flashs
können nicht verwendet werden, da hier der RAM-Bereich liegt. Die memory-mapped-I/O liegen an der gleichen Stelle
wie im Runmodus, damit auch dieser mit getestet werden kann. |
Programmiermodus
|
Der letzte Modus ist der Programmiermodus, mit dem der Flashspeicher neu programmiert werden kann. Da es nicht
möglich ist, ein Programm aus dem Flash auszuführen und diesen gleichzeitig zu löschen und zu
programmieren, muss das Program im RAM ausgeführt werden. Dazu wird im Debugmodus der Bootloader aus dem Flash in
das RAM kopiert und dann in den Programmiermodus geschaltet. Damit wird das RAM zum Programmspeicher und das Flash zum
Datenspeicher. Um Ärger mit der momory-mapped-I/O zu vermeiden, wird diese im Programmiermodus komplett
abgeschaltet. |
|