Debugger KD30
Startseite Die Gewinner Erfahrungsberichte Eigene Projekte Service-Seite
Arbeiten mit dem Debugger KD30
Man kann Programme für den R8C/13 als Release-Version übersetzen, in den Controller flashen und starten. Wenn es um die Entwicklung komplexerer Projekte geht, ist aber die Verwendung des Debuggers hilfreich. Man kann Programme an beliebigen Stellen unterbrechen, Speicherinhalte ansehen, Einzelschritte ausführen und vieles mehr. Wenn Sie den Debugger verwenden, muss sich der Controller permanent im Debug-Modus befinden, der Mode- Jumper bleibt also gesteckt. Auch die Reset-Taste wird nicht benötigt, denn Ihre Software wird nun über Softwarekommandos von Debugger gestartet und gestoppt. Bei der folgenden Beschreibung der ersten Schritte wird davon ausgegangen, dass Sie die Software komplett installiert haben, wie es im Heft 12/05 beschreiben wurde. Rufen das Programm KD30 in der Programmgruppe RENESAS-TOOLS auf. Es erscheint ein Startfenster, in dem es besonders auf die korrekte COM-Schnittstelle und den verwendeten Controllertyp R521134.MCU ankommt. Die Auswahl des Controllers erfolgt unter „Refer...“. In der Gruppe „R8C-Tiny Series“ finden Sie die entsprechende Datei für den R8C/13. Falls Sie über den USB debuggen wollen, geben Sie trotzdem „Serial“ und den Namen der virtuellen COM-Schnittstelle (z.B. COM2) an.
Kontaktaufnahme mit der Hardware
Nach „OK“ lädt der Debugger erst einmal eine Firmware in den Controller. Über dieses Programm hat der KD30 die volle Kontrolle über den Controller und kann nun das zu entwickelnde Programm nachladen. Unter Datei/Download/Load Module kann man eine Datei aussuchen. Verwenden Sie für den ersten Test z.B. die Datei timer_interrupt.x30 aus dem Debug-Verzeichnis des gleichnamigen Projekts aus der CD zum Dezember-Heft.

Quelltext im Debugger
Das geladene Programm können Sie nun mit Go starten, mit Stop anhalten und mit Reset zurücksetzen. Das gestartete Programm zeigt vier blinkende LEDs. Der Mikrocontroller wird dabei sozusagen ferngesteuert. Sie brauchen am Board selbst nichts mehr zu tun.
Wahlen Sie die Ansicht BasicWindows/Program Window. Darin können Sie entweder das reinen C-Quelltext oder die gemischte Darstellung wählen, in der auch sichtbar wird, in welche Assembler-Zeilen der C-Quelltext übersetzt wurde.
Unter dem Debugger läuft ihr Programm mit normaler Geschwindigkeit. Einen Unterschied werden Sie allerdings feststellen, wenn Sie ein Programm debuggen, das den internen Ring-Oszillator verwendet. Der Debugger schaltet nämlich in jedem Fall den Quarzoszillator mit 20 MHz ein, sodass Ihre Programm wesentlich schneller läuft als es gedacht war.
Start des KD30 über die HEW
Aber es kommt noch besser. Wenn Sie den Debugger gleich aus der HEW heraus starten, merkt der KD30 sogar, wenn Sie Änderungen am Projekt vorgenommen haben bzw. wenn Sie eine neue Debug-Version kompiliert haben.
Starten Sie die HEW z.B. mit dem Projekt timer_interrupt aus dem Dezemberheft. Unter Setup/Customize finden Sie die Registerkarte Debugger. Währen Sie „Other external debugger“ und tragen Sie den Pfad des KD30 und den Pfad auf das Projekt „-load $(CONFIGDIR) $(PROJECTNAME).x30“ ein.

Einstellungen für den KD30
Unter der Registerkarte „Tools“ finden Sie dann den Befehl „Launch External Debugger...“. Starten Sie damit den KD30, nachdem Sie die Reset-Taste auf der Platine gedrückt haben. Bei jedem Neustart des KD30 ist ein Reset nötig, weil der Debugger neue Firmware laden will.

Start des KD30
Nach dem Start lädt der KD30 automatisch das aktuelle x30-File und die zugehörigen Quelltexte. Sie können das Programm starten, stoppen und mit dem Reset-Kommando zurücksetzten. Wenn dann eine Änderung im Projekt vorgenommen wird, meldet sich der KD30 mit der Frage, ob er das veränderte Projekt laden soll.
Starten Sie einmal das Projekt timer_interrupt im Debugger. Stoppen Sie es dann und lassen Sie sich den C-Quelltext anzeigen. Die aktuelle Position steht dann irgendwo in der Endlosschleife. Markieren sie dann eine Zeile in der Interruptfunktion und klicken Sie auf Break. Damit haben Sie einen Breakpoint gesetzt, an dem das Programm anhalten soll.

Ein Breakpoint im Quelltext
Als nächsten können Sie die einzelnen Zeilen mit Step durchgehen. In diesem Fall sehen Sie die Wechsel an den einzelnen LEDs Schritt für Schritt, während sie bei voller Geschwindigkeit scheinbar gleichzeitig geschaltet wurden.
Einbinden des KD30 in die HEW
Es geht noch eine Stufe luxuriöser, wenn Sie den Debugger ganz in die Entwicklungsoberfläche integrieren. Die Sache hat allerdings auch einen kleinen Nachteil: Wenn Sie es schaffen, den Debugger zum Absturz zu bringen, klemmt auch die Entwicklungsumgebung. Ein solcher Absturz ist z.B. möglich, wenn Sie dem System während des Debuggens die Betriebsspannung entziehen.
Starten Sie ein ganz neues Projekt mit dem Namen Debug1. Geben Sie beim Schritt 5 der Einrichtung des neuen Projekts den Debugger KD30 und als Target „M16C R6C FoUSB/UART“ an.

Einrichten des Debuggers
In das neue Projekt tragen Sie z.B. nur eine Zeile „while(1)“; ein. Kompilieren Sie es dann in der Konfiguration Debug_ M16C_R6C_FoUSB/UART und wählen Sie die SessionM16C_R6C_FoUSB/UART. Nun startet der KD30 im neuen Gewand, nämlich direkt in der Oberfläche der HEW. Sie müssen noch einmal den Controller-Typ und die Schnittstelle angeben. Dann lädt der KD30 wie gewohnt neue Firmware und nach jedem neuen Kompilieren automatisch den aktuellen Stand des Projekts. Und so können Sie nach Herzenslust entwickeln und debuggen.

Die Entwicklungsoberfläche mit internem Debugger