ctr

DeMon48_128k

intel 8049 (8048, 8748, 8749, 8035, 8039) / MCS-48 Hardware-Debugger & Monitor

Dokumentation - Kapitel 6


6.0.0 GUI / Windows-Software

DeMon48_128k_GUI
Bild: "DeMon48_128k" Graphical User Interface (GUI)

Es war notwendig ein GUI zu entwerfen, weil die wachsende, zur Verfügung stehende Funktionalität die Bedienung nur über das rudimentäre Low-Level-Protokoll des Debug-Mikrocontrollers zunehmend unübersichtlich machte.

Nachdem das DeMon48-System mit dem Personal Computer verbunden, die gewünschte Schnittstelle im GUI in der entsprechenden Droplist ausgewählt und die Software durch Klick auf die 'Connect'-Schaltfläche mit der Hardware verbunden wurde, ist das System betriebsbereit.

6.1.0 Status-Anzeigen

Die 'S'-Anzeige ist grün, wenn die Single-Step-Hardware aktiv und der 8049 im "Halt"-Zustand sind. Die 'M'-Anzeige ist grün, wenn die Monitor-Software aktiv ist.

Im Feld 'Firmware' wird die Firmwareversion des Debug-µCs angezeigt.

6.2.0 Aux-/CPU-Registers & Ports

Hier werden die zuletzt gelesenen Werte und Inhalte für DA16, DBR, PBR, PC, A, T, PSW, F1, P1 und P2 angezeigt und können durch Klick auf das entsprechende Feld, bei Werten mit mehr als einem Bit gefolgt von einer mit der Enter-Taste abgeschlossenen Tastatureingabe im Hexadezimal-System, geändert werden.

MB0 und MB1 zeigen an, wenn ein Bankwechsel durch einen "SEL MB0"- oder "SEL MB1"-Befehl vorbereitet, aber noch nicht wirksam geworden ist und können ebenfalls durch Klick in ihrem Zustand geändert werden. Ausnahmen : Ist aktuell die Speicherbank 0 (MB0) aktiv, kann kein Bankwechsel zur Speicherbank 0 vorbereitet werden und ist aktuell die Speicherbank 1 (MB1) aktiv, kann kein Bankwechsel zur Speicherbank 1 vorbereitet werden.

T0, T1 und INT dienen zur Anzeige der an diesen Eingängen anliegenden Signale.

Durch den Nutzer geänderte, aber noch nicht vom Debug-µC geschriebene Werte werden rot dargestellt. Die Übernahme in den 8049 kann entweder durch Klick auf die 'Sync'- oder 'Step'-Schaltfläche erfolgen. Unterscheidet sich der Wert eines Registers oder eines Bits vom Inhalt desselben beim vorhergehenden Lesevorgang, wird dieser Wert blau dargestellt, so dass im Programmablauf geänderte Werte automatisch hervorgehoben werden.

Im Feld "Online-Disassembler" wird der durch den aktuellen Wert des Adresszählers des 8049 adressierte Befehl mit den Inhalten der dazugehörigen 1...2 Speicherstellen (1- und 2-Byte-Befehle) disassembliert angezeigt.

6.3.0 External RAM (Program/Data)

Hier wird der Inhalt einer 256Byte umfassenden Seite (Page) des externen RAMs angezeigt und kann durch den Nutzer bearbeitet werden, indem auf die entsprechende Speicherstelle geklickt wird und die gewünschte Änderung durch eine mit der Enter-Taste abgeschlossene Tastatureingabe erfolgt. Durch den Nutzer geänderte, aber noch nicht vom Debug-µC geschriebene Speicherstellen werden rot dargestellt. Die Übernahme in das RAM kann entweder durch Klick auf die 'Sync'- oder 'Step'-Schaltfläche erfolgen. Unterscheidet sich der Inhalt einer Speicherstelle vom Inhalt derselben beim vorhergehenden Lesevorgang, wird die Speicherstelle blau dargestellt, so dass im Programmablauf geänderte Werte automatisch hervorgehoben werden.

In das 'Page'-Textfeld kann manuell der Offset der anzuzeigenden 256Byte Seite eingetragen werden : ein Wert von bspw. 0A0 wählt die Seite 0x0A000 bis 0x0A0FF aus. Mit Hilfe der beiden 'Pfeil'-Schaltflächen kann schnell zwischen aufeinanderfolgenden Seiten gewechselt werden.

Wenn die Checkbox 'Trace'/'Program (PBR+PC)' aktiviert ist, folgt die aktuell angezeigte 256Byte Seite den Inhalten des PBR (Program Bank Register) und PC (PC). Ist die Checkbox 'Trace'/'Data (DBR) aktiviert, folgt die aktuell angezeigte 256Byte Seite dem Inhalt des DBR (Data Bank Register) (siehe "3.10.7 Bildung der Adresse in verschiedenen Situationen").

6.4.0 Internal RAM (Data)

Hier wird der Inhalt des 128Byte umfassenden internen RAMs des 8049 angezeigt und kann durch den Nutzer bearbeitet werden, indem auf die entsprechende Speicherstelle geklickt wird und die gewünschte Änderung durch eine mit der Enter-Taste abgeschlossene Tastatureingabe erfolgt. Durch den Nutzer geänderte, aber noch nicht vom Debug-µC geschriebene Speicherstellen werden rot dargestellt. Die Übernahme in das RAM kann entweder durch Klick auf die 'Sync'- oder 'Step'-Schaltfläche erfolgen. Unterscheidet sich der Inhalt einer Speicherstelle vom Inhalt derselben beim vorhergehenden Lesevorgang, wird die Speicherstelle blau dargestellt, so dass im Programmablauf geänderte Werte automatisch hervorgehoben werden.

6.5.0 Schaltfläche 'File'

Nach einem Klick auf die 'File'-Schaltfläche können Binär- (*.bin) oder intel-Hex-Dateien (*.hex) geöffnet und in den Programmspeicher des 8049 geladen werden.

6.6.0 Schaltfläche 'AS'

Das DeMon48-System unterstützt den AS-Macroassembler von A. Arnold.

Eine vom Nutzer ausgewählte Quelltextdatei (*.asm) wird beim Klick auf die 'AS'-Schaltfläche automatisch assembliert und eine intel-Hex-Datei erzeugt, die anschließend in den 8049-Programmspeicher geladen wird. Die gleichzeitig erzeugte "MAP"-Datei wird zur Anzeige des Quelltextes inklusive korrekter Adressinformationen und zum Hervorheben des durch den aktuellen Inhalt des PC (Program Counter) adressierten Befehls im Quelltext genutzt.

Um den AS-Macroassembler nutzen zu können, muss einmalig nach Klick auf die 'AS Cfg'-Schaltfläche der Pfad zu den Dateien des Assemblers ausgewählt werden.

Wird beim Laden eines Binärfiles (*.bin) eine zu Debug-Zwecken durch den Assembler erzeugte "MAP"-Datei gefunden, wird diese gelesen und die gewonnenen Debug-Informationen zum Einblenden der korrekten Adressinformation in den Quelltext und zum optischen Hervorhebens der Quelltextzeile, die dem aktuellen Inhalts des Programmzählers (PC) entspricht, genutzt. Das funktioniert auch mit aus mehreren (bspw. per "INCLUDE"-Statement des AS-Macroassemblers verknüpften) Quelldateien bestehenden Assemblerprojekten.

Vorsicht ist bei Nutzung der "Bankwechsel-Automatik" des AS-Macroassemblers geboten, da sie offenbar nicht berücksichtigt, dass nach der Befehlsfolge

   SEL MB1
   CALL SUBROUTINE
   [...]
SUBROUTINE:
   NOP
   RET

der Programmzähler zwar korrekt mit der auf dem Stack abgelegten Rücksprungadresse geladen wird, der Zustand des MB-Flipflops durch den RET-Befehl aber nicht beeinflusst wird - der nächste CALL- oder JMP-Befehl führt also zu einer Adresse in der Speicherbank 1 ! Workaround : die "ASSUME"-Befehle des AS-Macroassemblers zur Angabe der aktuell gewählten Speicherbank benutzen.

6.7.0 Schaltfläche 'ROM'

Dient dazu, die immer noch in der Firmware des Debug-µC hinterlegten Testroutinen in den 8049-Programmspeicher zu laden.

6.8.0 Schaltfläche 'Fill'

Nach Klick auf die 'Fill'-Schaltfläche können das externe und interne RAM teilweise oder vollständig, mit einem wählbaren Wert beschrieben werden.

6.9.0 Projekt-Konfiguration

Nach Klick auf die 'Proj.'-Schaltfläche können Projekte aus bis zu 16 Einzel-Quelldateien für die 16 4kB-Blöcke des "DeMon48_128k"-Systems konfiguriert und in den 8049-Programmspeicher geladen werden.

6.10.0 Schaltfläche 'Run'

Durch Klick auf die 'Run'-Schaltfläche wird ein eventuell aktiver Single-Step- oder Reset-Modus verlassen, der Monitor verlassen und die Programmausführung durch den 8049 mit voller Geschwindigkeit gestartet.

6.11.0 Schaltfläche 'Step'

Nach einem Klick auf die 'Step'-Schaltfläche wird bei nicht-aktivem Monitor zunächst der Monitor gestartet, alle aktuellen Werte vom Debug-µC gelesen und im GUI angezeigt. Ist der Monitor beim Klick auf die 'Step'-Schaltfläche bereits aktiv, werden alle vom Nutzer im GUI geänderten Werte durch den Debug-µC geschrieben, der Monitor beendet, ein Befehl des 8049-Anwenderprogramms ausgeführt, der Monitor gestartet, alle aktuellen Werte vom Debug-µC gelesen und im GUI angezeigt.

6.12.0 Schaltfläche 'Sync'

Durch Klick auf die 'Sync'-Schaltfläche wird die Anzeige im GUI und der Zustand der Hardware synchronisiert. Das bedeutet, dass alle vom Nutzer im GUI geänderten Werte in die Hardware geschrieben werden und alle aktuellen Werte vom Debug-µC gelesen und anschließend im GUI angezeigt werden. Ist beim Klick auf die 'Sync'-Schaltfläche der Monitor nicht aktiv, wird dieser gestartet.

6.13.0 Schaltfläche 'Reset'

Nach einem Klick auf die 'Reset'-Schaltfläche verändert diese ihre Farbe und es wird ein Timer gestartet, nach dessen Ablauf die Schaltfläche wieder ihre ursprüngliche Farbe annimmt und gesperrt ist. Wird während des Timer-Intervalls die 'Reset'-Schaltfläche erneut betätigt, wird ein Hardware-Reset des 8049 ausgelöst.

6.14.0 Optionen 'Mon.Entry' und 'Mon.Exit'

Ist die "STOP TCNT"-Checkbox aktiviert, wird beim Monitor-Start ein "STOP TCNT"-Befehl zum Stoppen des Timers/Counters durch den 8049 ausgeführt (siehe "4.1.2 Monitor-Start").

Wenn die "STRT CNT"-Checkbox aktiviert ist, wird beim Verlassen des Monitors ein "STRT CNT"-Befehl zum Start des Timers in der Counter-Betriebsart durch den 8049 ausgeführt, ist die "STRT T"-Checkbox aktiviert, wird beim Verlassen des Monitors ein "STRT T"-Befehl zum Start des Timers in der Timer-Betriebsart durch den 8049 ausgeführt (siehe "4.3.4 PC, Timer-/Counter-Konfiguration und MB-FF wiederherstellen").

6.15.0 Schaltfläche 'Auto'

Nach einem Klick auf die 'Auto'-Schaltfläche werden im durch die daneben angeordnete Droplist ausgewählten Intervall automatisch 'Step'-Befehle durch das GUI ausgeführt (siehe "6.11.0 Schaltfläche 'Step' ").

6.16.0 Software-Breakpoint

Wird die Programmausführung durch den 8049 mit einem Klick der Schaltfläche 'SoftBP' gestartet, wird sie beim Erreichen der in eines der aktivierten Adressfelder eingetragenen Adresse automatisch unterbrochen, der Monitor gestartet und die Anzeige im GUI aktualisiert. Da es sich um eine Funktion der Debug-µC Software handelt, erfolgt die Programmausführung mit ca. 30000 Befehlen/Sekunde.

6.17.0 Hardware-Breakpoint

Wird die Programmausführung durch den 8049 mit einem Klick der Schaltfläche 'HardBP' gestartet, wird sie beim Erreichen der in das aktivierte Adressfeld eingetragenen Adresse automatisch unterbrochen, der Monitor gestartet und die Anzeige im GUI aktualisiert. Da der Adressbus durch eine Hardware auf Erreichen der Breakpoint-Adresse überwacht wird, werden Programme im Hardware-Breakpoint-Modus mit voller Geschwindigkeit ausgeführt. Ebenfalls aus diesem Grund wird die Programmausführung beim auf die angegebene Breakpoint-Adresse folgenden Befehl angehalten : ein Abbruch der Ausführung des aktuellen Befehls, zu dem die Breakpoint-Adresse gehört, ist nicht möglich, daher wird der 8049 vor der Ausführung des nächsten Befehls angehalten.

6.18.0 Stopwatch

Die integrierte Stopwatch (Stopuhr) wertet den 32Bit-Zähler im Debug-µC für die vom 8049 an ALE ausgegebenen fallenden Flanken - die den ausgeführten Befehlszyklen entsprechen - aus und kann diesen zurücksetzen. Die errechnete Ausführungszeit wird automatisch in der Einheit µs, ms oder s ausgegeben (bis 1000µs in µs, ab 1000µs in ms, ab 1000ms in s) und ist von der vom Nutzer anzugebenden Frequenz des 8049-Oszillators abhängig.


DeMon48_128k_Breadboard2