Anleitung zum Praktikum Mikrocomputertechnik Im Praktikum wird der Mikrocontroller 68332 von Motorola verwendet. Dieser Mikrocontroller besteht aus einer 32-Bit CPU und integrierten Peripheriebausteinen (ser. Schnittstellen, parallele I/0- Ports, Timer). Der Befehlssatz der CPU32 stimmt weitgehend mit dem aus der Vorlesung bekannten Befehlssatz des 68000 überein. Als Praktikumssystem benützen wir den NF-300 Rechner der Fachhochschule Nürnberg. Dieser Rechner ist im wesentlichen der MC 68332, ergänzt mit Resetlogik, mit einem SRAM- Speicher (1 MByte) und mit einem Flash-Eprom (). Sämtliche Pins des 68332 sind über seitliche Steckleisten nach außen geführt. Als Dokumentation steht Ihnen das Buch Mikrocomputertechnik von Prof. Urbanek zur Verfügung, das eine detaillierte Beschreibung des NF300 enthält. Außerdem sind auf der beigefügten CD die im Praktikum verwendeten Entwicklungsprogramme sowie Manuals zum 68332 enthalten. Die Entwicklungsumgebung Der NF-300 wird über eine 10-poliges Kabel und einen PC-Adapter an einen PC mit dem Betriebssystem Windows95 angeschlossen (Host-Rechner). Über diese BDM-Verbindung (BDM = Background Debug Mode) wird der 68332 während der Programmentwicklung von einem Monitorprogramm überwacht und kontrolliert. Damit können Programme geladen werden, Register und Speicherinhalte geschrieben und gelesen werden und Breakpoints gesetzt werden. Anschluß des NF300-Rechners an den PC NF300-Rechner PC Par. Port PC-Adapter 10-poliges Kabel BDM-Stecker 1 / 9
Die Bedienung des Systems und die Programmentwicklung erfolgt am Host-Rechner. Dazu werden drei verschiedene Programme verwendet. Mit dem Editor wird der Programmtext erstellt. Als Editor ist jeder beliebige Editor verwendbar, der ASCII-Text erzeugt. Die sog. Source-Dateien erhalten die Extension src. Im Praktikum wird der frei verfügbare Editor PFE (Programmers File Editor) eingesetzt. ( Download von http://www.winsite.com/info/pc/win95/misc/pfe101i.zip/) Dieser Editor erlaubt es, die beiden anderen Programme, nämlich Assembler und Debugger, direkt von der Eingabeebene zu starten. Der Assembler ( As32.exe) überprüft die Syntax des Programms und übersetzt das im Textformat erstellte Programm in den Maschinencode des Prozessors. Das übersetzte Programm wird im Motorola-spezifischen S-Format in einer Datei mit der Extension s19 abgelegt. Mit Hilfe des Debug-Programms (Bd32.exe) wird das Programm in den Speicher des NF300 geladen und gestartet. Die Ausführung des Programms kann ebenfalls mit dem Debugger überwacht werden. Idee Editor Source-Datei "test.src" As32 S-Datei "test.s19" Bd32 NF300 2 / 9
Bedienung des Editors Der Editor PFE (pfe32.exe) hält sich bei der Bedienung an die Windowskonventionen und verfügt über ein gutes Hilfesystem (in Englisch), so daß hier auf eine detaillierte Anleitung verzichtet werden kann. Folgende Hinweise sind für das Praktikum hilfreich: Die Zeilennumerierung sollte aktiviert werden, da bei Fehlermeldungen des Assemblers immer die Zeilennummer angegeben wird. Unter dem Menüeintrag Execute kann direkt der Debugger/Monitor und der Assembler gestartet werden 3 / 9
Assembler Alle Eingaben in Assembler erfolgen von einem normalen Texteditor aus. Jede Zeile wird mit RETURN abgeschlossen. Das Assemblerformat für die Eingabe der Quellcodes ist wie folgt: [Labelfeld] OpCode Quelle,Ziel [; Kommentar] ACHTUNG: Zwischen Quelle und Ziel darf NUR ein Komma stehen. Dieses darf NICHT aus optischen Gründen durch ein Leerzeichen ergänzt werden, sonst erzeugt der AS32 einen falschen Code! Die Felder in eckigen Klammern sind optional. Wird kein Label verwendet, so muß die erste Spalte frei bleiben. Nach dem Assemblieren hat der Assembler davor eine Spalte für die generierten Hexcodes eingefügt. Die EQU (:= EQUate) Anweisung ist eine Pseudoassembler Anweisung. Sie ermöglicht das Arbeiten mit verständlichen Namen. Allen Adressen und Konstanten gibt man vor dem eigentlichen Programmstart Namen, sog. Labels. Damit hat man leicht zu merkende Namen gegen schwer zu merkende Hexzahlen eingetauscht. Der Assembler ersetzt während des Assemblierens alle Namen durch die ursprünglichen Werte. 4 / 9
Kommandos des Debuggers BD 32 BF <start> <end> <data> [;<option>] (Block Fill) Füllt einen Bereich mit einem definierten Inhalt. Mögliche Optionen: ;b (byteweise), ;w (word = default), und ;l (long-word) MD [<address>] [<count>] [;<option>] Zeigt eine definierte Anzahl von Speicheinhalten an. (Memoy Display) MM [<address>] [;<option>] (Memoy Modify) Zeigt Speicheinhalte an, und ermöglicht die Veränderung derselben. Mit. kann die Eingabe abgeschlossen werden. LO <filename> [<offset>] (Load) Lädt ein Object-Code-File in den Speicher des Zielsystems. Es werden Motorola S1, S2 und S3-Record s akzeptiert. ASM [<address>] (Assembler) Disassembliert zuerst den Programmcode an der spezifizierten Adresse, und ermöglicht die Eingabe eines neuen Codes. Dieser wird assembliert und in den Speicher abgelegt. Anschließend wird der nächste Befehl angezeigt. Beenden durch Eingabe von.. DASM [<address> [count]] (Disassembler) Disassembliert eine Anzahl von von Befehlen ab der angegebenen Adresse. Anzeige / Veränderung von Registerinhalten RD (Register Display) Zeigt die Inhalte der CPU-Register und disassembliert den Befehl, auf den der Programmzähler zeigt. RM [<registername>] (Register Modify) Erlaubt es, die CPU-Registerinhalte zu verändern. Optional kann eines der folgenden Zeichen eingegeben werden: = schreiben ohne zum nächsten Register zu gehen. ^ schreiben und zum vorigen Register gehen. v schreiben und zum nächsten Register gehen.. beenden 5 / 9
Breakpoints BR [<address> [<mask>]] Setzt an der spezifizierten Adresse einen Breakpoint. Es sind maximal 4 möglich. Die Eingabe von BR zeigt alle gesetzten Breakpoints an. NOBR [<address1> [address2> [<address3> [address4>]]]] Entfernt die entsprechenden Breakpoints. Wurde keine Adresse angegeben, so folgt die Frage Kill all breakpoints (Y/N)?. Prozessor Control GO [<address>] Startet die Programmausführung an der angegebenen Adresse. Wurde auf die Adressangabe verzichtet, erfolgt Programmstart ab Programmcounteradresse. RESET Restart wie bei Power-On. RESTART Wie Hardware Reset durch ext. Taster. STOP Stoppt den Prozessor am Ende des aktuellen Befehls. T [<Bedingung>] (Trace) Trace (Unterprogramme werden ebenfalls im Trace-Mode durchlaufen). S [<Bedingung>] (Step) Step (Unterprogramme werden in Echtzeit durchlaufen). Beispiele: T PC==$4004 Trace, bis <PC> = HEX 4004 S *LoopCounter <23 Step, bis die Variable unter der Adresse LoopCounter kleiner als 23 wird. Mit ESC wird die TRACE/STEP Ausführung beendet. 6 / 9
Sonstige Kommandos * <Kommentar> Mit * beginnende Zeilen werden als Kommentarzeilen gewertet. CLS Löscht den Bildschirminhalt und positioniert der Cursor in die erste Zeile. DO <filename> Öffnet das angegebene File, liest den Text und führt die Befehle aus, wie wenn sie von der Tastatur eingegeben werden. DOS [<kommandozeile>] Unterbricht den Debugger vorübergehend um DOS-Kommandos eingeben zu können. Rückkehr mit exit möglich. EXIT oder QUIT Beenden den Debugger. Das Zielsystem bleibt in dem Zustand wie vor Ausführung des Befehls. LOG [<filename> / OFF] Zeichnet eine Reihe von Debug-Kommandos in einem File auf. PORT [<port> <speed>] Ohne angegebene Parameter wird der aktuelle Port (LPT1..,COM1..) mit dessen Einstellung angezeigt. Wird ein neuer Port angegeben, so wechselt der Debugger zu diesem. SD [<start> [<end>]] Listet den Inhalt der Symboltabelle auf. SET [<symbolname> <ausdruck>] Nimmt den angegebenen Symbolnamen in die Symboltabelle auf. 7 / 9
NF300 Das Praktikumsboard (NF300) besteht im wesentlichen aus Mikrocontroller M68332 externem SRAM-Speicher mit 256 Kbyte externem FEPROM mit 1 Mbyte Der Mikrocontroller selbst ist ein komplettes Rechensystem und enthält internes RAM serielle Schnittstellen (SCI und QSCI) 8 Bit Parallelports E und F einfacher Timer Timerprozessor (TPU) SIM (System Integration Modul) 8 / 9
Die Lage der externen Speicher wird durch Konfigurationsregister im SIM-Block des 68332 bestimmt. Im Praktikum beginnt das SRAM an der Adresse $0, das FEPROM beginnt ab Adresse $800000. Der Adreßraum des 68332 umfasst 16 Mbyte und ist für das Praktikum folgendermaßen aufgeteilt: Belegung des Adressraums: $FFFFFF $FFFA00 Register $8FFFFF FEPROM $800000 Daten $C00 $3FFFF SRAM $0 $0 Programm Stack Vektortabelle 9 / 9