RIDE-Entwicklungsumgebung für 8051-µC - Carl-Engler
Transcription
RIDE-Entwicklungsumgebung für 8051-µC - Carl-Engler
Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 1 RIDE-Entwicklungsumgebung für 8051-µC Inhaltsverzeichnis RIDE-Entwicklungsumgebung für 8051-µC............................................................................ 2 1 Kurzanleitung: Programmierung des Controllers AT89C5131 (Atmel).................................. 2 1.1 Prinzipielles................................................................................................................... 2 1.2 Vorgehen Projekt öffen und neue Datei anlegen........................................................... 2 1.3 Vorgehen Datei übersetzen und Download.................................................................... 2 2 Neu beginnen....................................................................................................................... 3 2.1 Projekt erstellen............................................................................................................. 3 2.2 Assembler oder C- Datei erstellen................................................................................. 3 2.3 Programm speichern..................................................................................................... 3 2.4 Programm-Datei(en) zum Projekt hinzufügen................................................................ 3 2.5 Intel-Hex-Datei ?............................................................................................................ 3 2.6 Richtiger Controller ?..................................................................................................... 3 2.7 Übersetzen.................................................................................................................... 4 3 Simulation mit dem Debugger.............................................................................................. 4 3.1 Start............................................................................................................................... 4 3.2 Fenster wählen.............................................................................................................. 4 3.3 Aufbau des Debug-Bildschirms...................................................................................... 5 3.4 Einzelschritt (Step)......................................................................................................... 5 3.5 Automatik (Go)............................................................................................................... 5 3.6 Variablen, SFR etc beobachten..................................................................................... 5 3.7 Debugger beenden........................................................................................................ 5 3.8 Beobachten mit Trace am Beispiel des Programms Doppelschleife.............................. 6 4 Überblick: Programmierung der USB-Boards....................................................................... 7 4.1 Erstmalige Inbetriebnahme............................................................................................ 7 4.2 Programmiervorgang:.................................................................................................... 7 4.3 Erstmalige Inbetriebnahme in Bildern............................................................................ 8 4.4 Programmiervorgang in Bildern:.................................................................................... 9 4.5 Einrichten des automatischen Downloads in RIDE...................................................... 10 4.6 Automatischer Download nach dem Compilieren:....................................................... 14 Bei Schwierigkeiten:......................................................................................................... 15 5 Schaltungsauszug USB-Schnittstelle, Programmierschalter und Reset-Taster:.................16 5.1 Interne Abläufe beim Programmiervorgang................................................................. 16 6 Erstellen eigener Bibliotheks-Funktionen (z.B. LCD, ADDA).............................................. 17 6.1 Objekt-Datei zur Bibliothek hinzufügen........................................................................ 17 6.2 Header-Datei erstellen................................................................................................. 17 6.3 Aufruf der eigenen Bibliotheks-Funktionen.................................................................. 17 7 Einstellungen zum Debuggen mit der Platine (nicht USB-Boards!).................................... 19 7.1 Vorbereitungen............................................................................................................ 19 7.2 Einstellungen in RIDE.................................................................................................. 19 7.3 Debuggen von Assembler-Programmen...................................................................... 21 7.4 Debuggen.................................................................................................................... 21 Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 2 RIDE-Entwicklungsumgebung für 8051-µC 1 Kurzanleitung: Programmierung des Controllers AT89C5131 (Atmel) 1.1 • • 1.2 • • • • • • 1.3 • • • Prinzipielles immer mit dem Projekt 5131 im Ordner H:\controller arbeiten zu diesem Projekt wird die aktuelle Datei hinzugefügt, “alte“ Dateien entfernen. Vorgehen Projekt öffen und neue Datei anlegen Ride öffnen Projekt 5131.prj im Ordner H:\controller öffnen: Project → Open (nicht File Open) Für jedes neue Problem wird eine neue Datei erstellt: • entweder mit File New • oder „alte“ Datei mit File Save As unter neuem Namen speichern im Fenster Project Rechtsklick auf „alte“ Datei → delete node (alte Datei aus Projekt entfernen) im Fenster Project Rechtsklick → add node → „neue“ Datei zum Projekt hinzufügen Doppelklick auf Dateiname im Fenster Project öffnet die Datei Vorgehen Datei übersetzen und Download Die Download-Datei heißt immer wie das Projekt! → Es wird immer die Datei 5131.hex aus dem Ordner h:\controller heruntergeladen! Controller empfangsbereit: Kippschalter stellen so, dass gelbe LED leuchtet und innerhalb einer Sekunde den roten Taster (RESET) drücken Falls Fehlermeldung am PC rechts unten → zuerst Kippschalter andere Stellung → Reset und Vorgang wiederholen fertige Datei mit Project → Make All oder übersetzen • Bei Fehlermeldungen: Lesen!!! → Doppelklick auf die Fehlermeldung → Der Cursor steht oft eine Zeile hinter dem Fehler Fehler beheben, neu übersetzen mit Make All • • Es muss beim Download kurzzeitig ein DOS-Fenster aufgehen! Im Fenster Make stehen 4 Meldungen: MA51: Assembleraufruf LX51: Linkeraufruf tool: *.hex-Datei erzeugen usb5131: Download-Aufruf • • Falls der Download nicht erfolgte: Tool → Run tool → usb5131 Falls ist wahrscheinlich nicht die richtige Datei zum Projekt hinzugefügt oder mit dem falschen Projekt gearbeitet worden! • Programm im Controller starten mit: Kippschalter so, dass gelbe LED aus! roten Reset-Taster drücken. • Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 3 2 Neu beginnen 2.1 Projekt erstellen -> mit Ordner und Projektnamen wählen. -> Im unteren Fenster erscheint der Projektname und Pfad 2.2 Assembler oder C- Datei erstellen 2.3 Programm speichern File -> Save as... 2.4 Assembler-Dateien erhalten automatisch die Endung .a51 C-Dateien erhalten die Endung .c Programm-Datei(en) zum Projekt hinzufügen Project -> Add node Source / Application Im Projektfenster kann man nach Klick auf + die zum Projekt gehörenden Dateien sehen. 2.5 Intel-Hex-Datei ? Unter Options -> Project muß bei Lx51 Generate an Intel Hex File angekreuzt sein. 2.6 Richtiger Controller ? Options -> Project bei RC51 Component mit XRAM und Dual DPTR ATMEL wählen Einstellung nur bei CProgrammen notwendig! Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller 2.7 Seite 4 Übersetzen Mit Mit Translate wird das Programm im aktiven Fenster übersetzt. C-Programme werden compiliert, Assembler-Programme assembliert. Make all werden alle zum Projekt gehörenden Programme übersetzt, anschließend gelinkt und eine Intel-Hex-Datei erzeugt, die zum Controller heruntergeladen werden kann. Bei Fehlermeldungen : Doppelklick auf -> Cursor springt auf die Programmzeile mit dem Fehler. Fehlerlose Programme werden durch grüne Haken verdeutlicht. 3 Simulation mit dem Debugger Grundeinstellung zum Start des Simulators: Options->Debug->Virtual Machine 3.1 Start oder Debug -> Start Beim ersten Start erscheint ein Option-Fenster, in dem Sie Virtual Machine wählen. 3.2 Fenster wählen oder mit View -> Code Disassemblierter Code + Hochsprache oder mit View -> Main Registers oder mit View -> Hardware alle aktiven Fenster anordnen Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller 3.3 Seite 5 Aufbau des Debug-Bildschirms Symbolleiste mit Debug-Befehlen Programmcode in C oder Assembler Portsimulation Programmcode mit zugehörigem Assemblercode Blaue Balken: dieser Befehl wird als nächster ausgeführt. Debuggen des Programmcodes (C oder Assembler) und des Disassemblerten Codes möglich. Prinzip: auf das zu debuggende Fenster klicken, dann Einzelschritt (Step) oder Automatik (Go) 3.4 Einzelschritt (Step) In Unterprogramm oder Funktion springen: 3.5 Unterprogramm oder Funktion übersprigen Automatik (Go) Fensterinhalte (Ports, Watch..) während des Programmablaufs aktualisieren: Geschwindigkeit einstellen: Programmstart: Haltepunkte setzen: Tracepunkte setzen: (an diesen Stellen soll mit Trace beobachtet werden, siehe 2.7) 3.6 Variablen, SFR etc beobachten Watch-Fenster sichtbar mit View -> Watch Rechter Mausklick im Watch-Fenster -> Add -> Variablenname eingeben Rechter Mausklick auf Variable -> Evaluate -> Wert ändern -> Modify 2x klicken 3.7 Debugger beenden Entweder Carl-Engler-Schule, Bub durch Klick auf Debugger-Symbol oder mit Debug -> Terminate Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller 3.8 Seite 6 Beobachten mit Trace am Beispiel des Programms Doppelschleife Debugger starten. Fenster Port1, Port2, MainRegister anordnen. Tracefenster mit View -> Trace -> View sichtbar. Rechter Mausklick im Tracefenster -> Options -> Flashing Tracepunkte bei zeit: und ret setzen, BreakPoint bei ret setzen: Dazu im Fenster Doppelschleife zuerst auf die Marke zeit, dann auf anschließend auf ret und . Bei ret außerdem auf . klicken, P2.0 und P1 ins Watch-Fenster. P1 auf 100dez = 64hex ändern . (rechte Maus auf P1 im Watchfenster-> Evaluate -> 100 bei NewValue -> 2x Modify) Nach dem Programmstart mit GO stoppt der Debugger bei ret. Im Trace-Fenster sieht man die gemessene Zeit dt zwischen mov r0,p1 und ret. Wie berechnet erhält man ca. 20ms Zeitverzögerung. Achtung: vor jeder Änderung im Programm (z.B. mov r1,#199) Debugger beenden und neu starten durch 2x Klick auf das Debuggersymbol. Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 7 4 Überblick: Programmierung der USB-Boards 4.1 • • • • • Erstmalige Inbetriebnahme Flip 2.4.6 installieren, Installationspfad ohne Punkte und Leerzeichen wählen! Board an die USB-Schnittstelle anschließen Schiebeschalter -> gelbe LED leuchtet sofort roten RESET-Taster drücken! (innerhalb einer Sekunde) -> „neue Hardware gefunden“ -> warten!!!! Fenster geht auf: USB-Treiber aus dem Flip-Installationsverzeichnis \ USB-Ordner installieren 4.2 • • • • Programmiervorgang: Schiebeschalter -> gelbe LED leuchtet sofort roten RESET-Taster drücken! Vorgang wiederholen wenn „USB-Gerät wurde nicht erkannt“. in Flip: o Controller wählen o Set communication -> USB -> open o Load Hex-File o kein Haken bei BLJB, dadurch wird das Bit gesetzt. (Nur wenn dieses Bit gesetzt ist, kann das eigene Programm später gestartet werden!!!!!) o Program Device • Alternativ: Download aus RIDE oder µVision mit eingebundenem Tool batchisp. Aufruf: batchisp –device AT89C5131 –hardware USB –operation erase f loadbuffer „h:\controller\5131.hex“ DISBLJB program (DISBLJB bedeutet disable Bootloader Jump Bit und entspricht dem „Haken weg“ bei BLJB in Flip.) Schiebeschalter LED dunkel Reset -> Eigenes Programm wird gestartet • • Eine detaillierte, bebilderte Beschreibung finden Sie auf den Folgeseiten. Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 8 4.3 Erstmalige Inbetriebnahme in Bildern • Flip 2.4.6 installieren, Installationspfad ohne Punkte und Leerzeichen wählen! • nach der Installation erscheint: • • • • • Board an den USB anschließen Schiebeschalter -> gelbe LED leuchtet sofort roten RESET-Taster drücken! (innerhalb einer Sekunde) -> „neue Hardware gefunden“ -> warten!!!! Fenster geht auf: USB-Treiber aus dem Flip-Installationsverzeichnis \ USB-Ordner installieren Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller 4.4 • • • • Seite 9 Programmiervorgang in Bildern: Schiebeschalter -> gelbe LED leuchtet sofort roten RESET-Taster drücken! Vorgang wiederholen bei Meldung „USB-Gerät wurde nicht erkannt“. Flip starten: o Controller wählen o Set communication o o Load Hex-File kein Haken bei BLJB, dadurch wird das Bit gesetzt. (Nur wenn dieses Bit gesetzt ist, kann das eigene Programm später gestartet werden!!!!!) o Program Device Carl-Engler-Schule, Bub -> USB -> ->open Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 10 4.5 Einrichten des automatischen Downloads in RIDE Ride starten , Projekt öffnen oder neues Projekt erstellen, Projektname z.B. 5131 RideMenüleiste -> Options -> Tools -> New Name: beliebig z.B. USB_5131 -> Browse, Installationsverzeichnis von Flip wählen, Unterordner bin -> Datei batchISP.exe auswählen -> Öffnen Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 11 -> Advanced -> Haken bei Prompt weg, Arguments für batchISP eingeben -device AT89C5131 -hardware USB -operation erase f loadbuffer "d:\daten\controller\5131.hex" DISBLJB program -> OK Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 12 -> *.hex bei Translate From eintragen -> OK -> Close Im RIDE-Projektfenster: rechte Maus auf Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 13 -> bei Link nichts ändern!!!! -> Haken bei Run ... und USB_5131 auswählen -> OK -> Projekt Save Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller 4.6 Seite 14 Automatischer Download nach dem Compilieren: Quell-Datei verändern, dann oder F9 oder Menüleiste -> Projekt -> Make All -> Nach dem Compilieren geht ein DOS-Fenster auf in dem man sieht, wie batchISP aufgerufen wird wenn dieses DOS-Fenster nicht aufgeht, ist wahrscheinlich Datei unverändert die Quell- Nach erfolgreichem Download erscheint im MAKE-Fenster: oder wenn das Board nicht bereit war: Alternativer Download aus RIDE mit: -> auswählen Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 15 Bei Schwierigkeiten: Neues Tool lässt sich nicht registrieren und altes Tool lässt sich nicht löschen: Im Explorer: Installationsverzeichnis von RIDE -> Ordner Bin mit Editor editieren, nach unten scrollen dies ist z.B. ein altes Tools, löschen, Datei speichern zusätzlich in der Registry löschen: ausführen -> regedit -> Software Ordner der Tools, die stören, löschen Neustart Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 16 5 Schaltungsauszug USB-Schnittstelle, Programmierschalter und ResetTaster: Programmierung 5V 1k5 R8 S20 V3 R9 PSEN 1K Programmierung K1 5V R6 1k5 R4 27R R5 27R VREF AT89C5131A-M +5V DataGND D+ DUVSS C3 USB-Buchse-B 1µF + Data+ UCAP PLLF C1 2,2nF R3 1OOR C2 1OnF R7 27R RST Reset T3 + C4 1µF 5.1 Interne Abläufe beim Programmiervorgang • Wenn die gelbe LED, leuchtet ist PSEN=0. Durch „Reset“ wird der Bootloader gestartet. • Nun kann Flip die Kommunikation mit dem Controller über USB aufbauen. • Wenn das BLJB-Bit nicht gesetzt ist (Haken weg in Flip), kann das eigene Programm nach dem Download nicht gestartet werden. • Vor der nächsten Programmierung muss die USB-Schnittstelle getrennt werden, z.B. duch Trennen des 1k5-Widerstandes von Vref. Diese Funktion übernimmt auch der 2-fach-Umschalter. In der Stellung „Programmierung“ (LED leuchtet) meldet sich der Controller beim PC an: „USB-Gerät angeschlossen“ (dies geschieht durch den 1k5-Widerstand an D+) Nun muss schnellstens der Reset-Taster gedrückt werden, damit der Bootloader im Controller bereit ist, bevor Windows das USB-Gerät erkannt hat und mit der USBAnmeldeprozedur beginnt. • In der Schalterstellung „LED leuchtet nicht“ ist PSEN=1. Nach Reset wird das Anwenderprogramm bei der Adresse 0000h gestartet, wenn das Bit DISBLJB gesetzt ist. „Flip“ oder „batchisp“ haben dieses Bit bei der Programmierung gesetzt. Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 17 6 Erstellen eigener Bibliotheks-Funktionen (z.B. LCD, ADDA) 6.1 Objekt-Datei zur Bibliothek hinzufügen • C-Programm schreiben • übersetzen, dabei Objekt-Datei (.obj) erzeugen • Library-Manager aufrufen • rc51atms.lib wählen: • Hinzufügen mit ADD, eigene .obj – Datei auswählen -> öffnen • Library-Manager mit CLOSE schließen Achtung! Die eigenen BibliotheksFunktionen werden jetzt nur erkannt, wenn bei Options -> RC51 „Small Memory Modell“ und Dual DPTR Atmel angegeben ist. (Natürlich können Sie Ihre Funktionen auch zu anderen Bibliotheken hinzufügen.) 6.2 6.3 Header-Datei erstellen • Definitionen der Funktionen, die später aufgerufen werden sollen, in eine neue Datei kopieren, z.B.: extern unsigned char ain (unsigned char); /* in \hilf_c\adda.c */ extern void aout (unsigned char); /* in \hilf_c\adda.c */ • Datei mit der Endung .h im Ordner \INC speichern. Aufruf der eigenen Bibliotheks-Funktionen im C-Programm: Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller #include <adda.h> .... aout (255); Carl-Engler-Schule, Bub Seite 18 /* Einbinden der Header-Datei, in der nur angegeben ist, das es die Funktion aout gibt und mit welchen Übergabevariablen sie arbeitet */ /* Aufruf der eigenen Bibliotheks-Funktion */ Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 19 7 Einstellungen zum Debuggen mit der Platine (nicht USB-Boards!) 7.1 • • • • • • • Vorbereitungen Bei RIDE-Version 06.10.14: 3 dll-Dateien aus dem Ordner RIDE_Patch auf CD ins Installationsverzeichnis von Ride, Unterordner Bin kopieren. Ab RIDE-Version 06.10.15 sind die 3 Dlls bereits enthalten. Das Debuggen mit der Platine (oder mit einem einzelnen Controller + Max232) erfolgt über die serielle Schnittstelle direkt von RIDE aus. Nur mit den Controllern AT89C51ED2 möglich. Nicht mit dem Controller T89C51RD2 oder AT89S8252 möglich! Der Controller RD2 kann auf der Platine direkt durch den ED2 ersetzt werden. Es sind keine Veränderungen in der Hardware oder in den Programmen notwenig. (Ausnahme: Ansprechen des EEPROMs wird vereinfacht) Die 8252-Platine kann leicht umgebaut werden, Beschreibung in der Datei Umbau_8252_Platine_fuer_RD2_ED2.doc. Zum Debuggen am Besten das Projekt Debugger.prj verwenden, in dem alle in 3.2 aufgeführten notwenigen Voreinstellungen gemacht sind. 7.2 Einstellungen in RIDE Das Debuggen ermöglicht ein Programmteil, der bei RIDE „ROM-Monitor“ genannt wird. Der Linker fügt den ROM-Monitor eigenen Projekt hinzu. Options -> Target Options - > Debug Options -> Projekt Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Carl-Engler-Schule, Bub Seite 20 Anleitung_RIDE-Entwicklungsumgebung.odt Anleitung RIDE-Entwicklungsumgebung für 8051-Controller Seite 21 7.3 Debuggen von Assembler-Programmen Zum Debuggen von Assembler-Programmen muss zur Zeit noch ein C-Programm hinzugefügt werden, das nur aus einem Befehl besteht: dem Aufruf des Assemblerprogramms. (Grund: Der ROM-Monitor benötigt die C-Initialisierung) Im Assemblerprogramm muss ein Semikolon eingefügt werden vor at 0 (bei code at 0), weil nun nicht mehr das eigene Programm bei 0 beginnt, sondern der ROM-Monitor, der dann das Assemblerprogramm aufruft. Im Assemblerprogramm muss außerdem am Programmbeginn eine Marke eingefügt werden mit dem gleichen Namen wie Aufruf im C-Programm, hier „start“. Die Marke muss für den Linker als public definiert werden. Die Datei debugger.c ist beim Debuggen von C-Programmen nicht notwendig. 7.4 Debuggen • Platine empfangsbereit schalten, gelbe LED muss leuchten • Debugger starten • Bei Assembler-Programmen: einmal „Step into“, nun befindet man sich am Beginn des Assemblerprogramms. • step over -> Unterprogramme in einem Schritt ausführen • step into -> ins Unterprogramm springen • Breakpoints setzen ist möglich. • Start des Programms (bis zum Breakpoint) in Echtzeit mit Go. • • • • • Alle sichtbaren Fenster werden in Abhängigkeit von der Hardware aktualisiert. In den Fenstern geänderte Werte werden beim nächsten step der Hardware mitgeteilt. Alle Ports werden in der Hardware beeinflusst und abgefragt! Das Programm wird in der Hardware ausgeführt und nicht am PC simuliert. Sämtliche auf der Platine befindliche Hardware außer der seriellen Schnittstelle kann untersiucht werden. Carl-Engler-Schule, Bub Anleitung_RIDE-Entwicklungsumgebung.odt