KD30 Debugger Problem mit Renesas Board M16C/62P

Hallo Newsgroup

Ich besch=E4ftige mich Moment mit der Programmierung eines Renesas M16C/62P Mikrocontrollers f=FCr meine Diplomarbeit.

Nun habe ich wunderbar mein C Programm mit der IAR Embedded Workbench geschrieben und das *.x30 File auf mein Board hochgeladen. Auch habe ich vorg=E4ngig das M30626FHP.mot File auf den Controller geladen. Das Board hat einen Prozessor des Typs M30626FHPFP. Nun kommt aber das grosse Problem mit dem KD30 Debugger.

Ich starte also den KD30 - funktioniert einwandfrei, kommunikaton OK. Lade mein x30 File hoch - ist auch OK. Nun will ich das Programm =FCber GO starten und jetzt f=E4ngts an:

Manchmal kann ich das Programm nicht starten und manchmal geht es nach einigen Sekunden doch noch. Wenn das Board nicht startet zeigt wohl das KD30 "RUN" an aber der Controller l=E4uft trotzdem nicht.

Klappt das Starten, zeigt mein LCD welches ich angeschlossen und programmiert habe, tip top meine Zeichen an. Will ich aber wieder Stoppen, st=FCrzt das KD30 Programm und das Board ab. manchmal kommt auch der Fehler "Communication Error....."

Ich habe schon ziemlich viel probiert und vielleicht kennt einer von Euch das Problem und hat eine Ahnung, was dagegen unternommen werden kann. Vielen Dank schon heute.

Gruss Oli

Reply to
huber_oliver
Loading thread data ...

Woher weisst du das? Vielleicht ein Fehler deines Programms.

Du verwendest doch keinen USB-RS232 Adapter? ODER? Sowas wuerdest du doch nicht? :-]

Olaf

Reply to
Olaf Kaluza

huber snipped-for-privacy@freesurf.chschrieb: "

Ich vermute ein Kommunikationsproblem (RS232) mit dem Board. Verwendest Du diese berüchtigten USB->RS232 Wandler? Probier doch das ganze mal mit einer richtigen seriellen Schnittstelle, ob dort diese Probleme auch auftauchen.

Dirk

Reply to
Dirk Ruth

Hallo

Hallo Zusammen

Nein ich benutze keinen RS232 - USB Adapter. Ich habe mein Board direkt =FCber das mitgelieferte Kabel via USB Port mit meinem PC verbunden

Zur Frage, woher ich weiss, dass der uP nicht startet? hmm... ich habe mein Multimeter an die ensprechenden Ports von meinem uP angeschlossen. Startet der uP gehen die Ausg=E4nge auch auf High, wie sich das geh=F6rt. Startet der uP aber nicht bleiben auch die Ausg=E4nge auf Low.

Oli

Olaf Kaluza schrieb:

Reply to
huber_oliver

Soso...

...und was glaubst du ist das? Ich schliesse mich Dirks Empfehlung an.

Olaf

Reply to
Olaf Kaluza

Aha OK

Ja klar, Ihr habt recht. Es ist eine RS232, logisch. Hab das irgendwie noch nicht ganz geschnallt gehabt. Danke f=FCr die Info

OK und was nun? Gibt es eine andere M=F6glichkeit das Board mit dem PC zu verbinden? Kann man irgendwo ein anderes Kabel beziehen?

Oli

Reply to
huber_oliver

Hast du die Interruptvektoren für den Uart, den der Monitor verwendet, richtig gesetzt?

Reply to
Thomas Mistelbauer

Nein Ich habe noch keine Interruptvektoren gesetzt.

Kannst Du mir sagen wie man das genau machen m=FCsste. Wie m=FCsste das aussehen?

Ich arbeite neu mit dem Renesas Board.

Oli

Reply to
huber_oliver

Ich kenn dein Board nicht, aber kann man den USB-Adapter nicht einfach durch einen MAX232 ersetzen und das ganz normal an eine RS232 stecken?

Olaf

Reply to
Olaf Kaluza

Hallo,

Ich kenne das Problem. Du musst deinen Startup Code an den Monitor anpassen.

Ich verwende hier den SC30 Compiler von Mitsubishi/Renesas und bin mir jetzt nicht ganz sicher ob das bei deinem Compiler genau so funktioniert. Jedenfalls steht bei mir der Startup Code in zwei Dateien: ncrt0.a30 und sect30.inc (waren beide netterweise beim Compiler dabei:-)

In der sect30.inc muss die Adresse der UART ISR in die variable vector section eingetragen werden, das sieht dann ungefähr so aus:

... ;--------------------------------------------------------------- ; variable vector section ;--------------------------------------------------------------- .section vector ; variable vector table .org VECTOR_ADR

...

.lword dummy_int ; uart0 trance (for user) .lword dummy_int ; uart0 receive (for user) ;*** Das ist die Adresse für die UART ISR des KD30 Monitors .lword 0FF900h ; uart1 trance (for user) .lword 0FF900h ; uart1 receive (for user) ;**************** .lword dummy_int ; TIMER A0 (for user) .lword dummy_int ; TIMER A1 (for user) .lword dummy_int ; TIMER A2 (for user) ...

In der ncrt0.a30 muss dann noch die VECTOR_ADR richtig festgelegt werden:

... ;--------------------------------------------------------------------- ; INTERRUPT VECTOR ADDRESS definition ;--------------------------------------------------------------------- VECTOR_ADR .equ 0fbd00h ...

Wenn Du die Standard IO Funktionen aktiviert hast und verwendest (printf, usw.) dann funktioniert der KD30 sebstverständlich nur an der anderen Schnittstelle.

Entgegen der hier des öfteren gemachten Anmerkungen funktioniert der KD30 problemlos an einem USB RS232 Adapter.

Gruß Frank

Reply to
Frank Kunz

[...] soweit alles richtig

Der OP meinte, dass es gelegendlich schon mal funktioniert. Das würde es aber eigendlich nicht, wenn die Vektoren falsch wären.

Dirk

Reply to
Dirk Ruth

lass mich den OP noch mal zitieren:

Der Error kommt immer! Nur manchmal dauerts halt ziemlich lange. Das ist aber auch an einer "normalen" RS232 so. Da das Stoppen nicht geht denke ich die Vektoren passen nicht.

Der OP schrieb ausserdem dass er das Programm downloaden kann und gelegentlich starten, also mal läufts mal nicht. Es funktioniert also alles so lange die Applikation nicht läuft. Da vermute ich dass die Schnittstelle an der KD30 hängt für Standard IO initialisiert wird. In der ncrt0.a30 steht daher:

;==================================================================== ; Initialize standard I/O ;--------------------------------------------------------------------- ; ; When using MITSUBISHI KD30 or other ROM monitor, ; standard I/O init MUST NOT be used. ; Therfore the following two lines are commented out

; .glb _init ; jsr.a _init

Aus diesem Grund habe ich den Aufruf der _init auskommentiert.

Ich verwende hier einen Prolofic USB / RS232 Adapter. Zugegeben musste ich mir einen Treiber für winXP vom Hersteller laden da der original Win Treiber nicht richtig funktionierte. Unter Linux funktionierte er auf Anhieb.

Gruß Frank

Reply to
Frank Kunz

Kannst du durch das Programm steppen? Dann siehst man eventuell ab wo es nicht mehr erreichbar ist. Genau das was du schreibst habe ich wenn ich pclk1 änder... Das Programm funktioniert erstmal aber die kommunikation haut dann nicht mehr hin. Setzt du irgendwelche sonstigen Parameter der seriellen Schnittstelle? Zur not kannst du einfach die 2 I/O-Leitungen anzapfen und mit nem MAX232 direkt an die serielle des PCs gehen. Aber normalerweise funktioniert das Board von Renesas zuverlässig auch via USB...

ciao - Thomas

Reply to
Thomas Graf

OK Hallo Zusammen

Zuerst mal Danke f=FCr alle Eurer Ideen Ich hab mal ein paar eurer Vorschl=E4ge durchprobiert, leider lies sich damit bis jetzt das Problem noch nicht l=F6sen. Das Ganze verh=E4llt sich immer noch gleich wie zu beginn.

Also ich habe mal das versucht wie Fran Kunz das geschrieben hatte Ich habe also in "Startup" - datei: sect30.inc die =3Dff900h Eintragung gemacht und in der Datei ncrt0.a30 den entsprechenden Eintrag angepasst. Leider ohne Erfolg - Ich hab die Eintragung also wieder r=FCckg=E4ngig gemacht

Dann habe ich noch volgendes kontrolliert

;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=AD=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=AD=3D=3D=3D=3D=3D=3D=3D=3D=3D

; Initialize standard I/O ;-----------------------------=AD------------------------------=AD----------

; ; When using MITSUBISHI KD30 or other ROM monitor, ; standard I/O init MUST NOT be used. ; Therfore the following two lines are commented out

; .glb _init ; jsr.a _init

Das ist genau so wie es hier genannt wurde in der Datei .=2E..\startup\ncrt0.a30 eingetragen

Bei den Schnittstelleneinstellungen habe ich nchts spezielles eingetragen

9600 Bits/s Datenbits 8 Parit=E4t Keine Stoppbit 1 Flussteuerung keine

Kann das Problem vielleicht sogar an Windows XP liegen welches ich verwende? m=FCsste man in betracht ziehen den PC neu aufzusetzten z.B mit WIN 98? Ich w=FCrde das nat=FCrlich machen, aber ich m=FCsste schon vorher ziemlich sicher sein, dass dies das Problem l=F6st. Da dieser Vorgang ja bekannlich auch mit einigem Aufwand verbunden ist

Was meint Ihr dazu? habt Ihr vielleicht noch weitere Ideen?

Oli

Reply to
huber_oliver

Ich meinte eher die Register die du im µC setzt. Aber dann wirst du da wohl nicht viel einstellen!? Kannst du durchsteppen? Oder geht das auch schon nicht?

Nein. WinXP und Win2K funktionieren einwandfrei dafür. Das muss etwas anderes sein.

Da hab ich eher von Problemen gehört... Kann jetzt nix konkret sagen, aber das wird IMO definitiv nicht das Problem sein.

ciao - Thomas

Reply to
Thomas Graf

Ich glaube nicht das dein Problem in dieser richtung zu suchen ist. Meine Erfahrung mit R8C und M16C (M30620FCAFP) sind eigentlich so das der HEW erstmal korrekte Defaultwerte setzt. Jedenfalls wenn du nicht in 'Release' sondern in 'Debug' uebersetzt.

Wenn du aber Aenderungen in den Includes vornimmst so liess dir die Defines sehr gruendlich durch. Es kann, und wird auch, so einiges per Parameter in der Kommandozeile ueberschrieben. Die Art und weise wie in diesem File mit Bedingungen umgegangen wird finde ich einfach gruselig!

Jedes Problem das du an dieser Stelle hast sollte sich eigentlich immer gleich aeussern.

Die Probleme die du hier haben koenntest aeussern sich so das du bis zur Initialisierung reproduzierbar singlesteppen kannst. Deshalb hat dich hier schon jemand gefragt ob du das gemacht hast.

Komisch, mein KD30 erlaubt nur die Einstellung des Comports und der Baudrate. Hast du einen anderen KD30?

Hast du den jetzt schonmal eine echte RS232 ausprobiert?

BTW: Was hast du eigentlich fuer einen Quarz dran? Soweit ich weiss laeuft der Prozessor erst mit seinem internen Takt los und dann schaltet der eingebaute Bootloader den externen Quarz ein. Vielleicht klappt das nicht immer richtig.

Und wie sieht deine Betriebsspannung aus? Mein japanisches OAKS16 hat normalerweise einen Resetgenerator drauf der auch die Betriebspannung ueberwacht. Da koennte ein etwas lasches anklemmen der Versorgung schonmal zu interessanten Effekten fuehren.

Olaf

Reply to
Olaf Kaluza

Schade eingentlich...

Wie ist deine Einstellung im KD30? Bei mir läuft der mit 38400 Baud, die stelle ich allerdings im KD30 direkt ein.

Welche KD30 Version verwendest Du denn?

Versuch mal ob Du dieses kleine Projekt mit dem KD30 auf dein Board laden und Debuggen kannst.

formatting link

Kleiner Tipp noch: Mein KD30 (Version 4.10) mag es nicht wenn das Programm geladen wird und dann mit GO gestartet wird. Dann verhält er sich auch so wie Du es beschrieben hast. Setz mal einen Breakpoint ziemlich am Anfang von main und geh dann auf GO. Im KD30 solltest Du unter Environment -->

Init --> Run Mode den Sampling Mode aktiviert haben, sonst hält dein Programm zwar am Breakpoint, der KD30 zeigt das aber dann nicht an.

Gruß Frank

Reply to
Frank Kunz

Hallo Zusammen

Ich habe Das Testprogramm mal raufgeladen auf meinen uP Ich kann nun einzeil Steppen aber nur bis set counter clock hier h=E4ngt sich das ganze wieder auf Dann habe ich am Anfang breakpoints gesetzt und da GO. Aber das Programm kann ich so nicht starten. Direkt =FCber GO, ohne Breakpoints geht auch nicht. das hast Du ja auch nicht empfohlen. Vielleicht versuche ich noch die beiden Pins RXD1, TXD1 =FCber den MAX232 direkt mit der seriellen Schnittstelle meines Pcs zu verbinden.

Also. Ich besorge mir mal ein anderes richtiges serielles Kabel und probiere dann nochmals Vilen Dank f=FCr Eure Hile

Oli

Reply to
huber_oliver

Genau da hast du doch jetzt das Problem lokalisiert! Was wird denn da genau gesetzt? Wenn genau davor der Monitor noch ansprechbar ist wird er dadurch ausgeklinkt... Solange man mit dem Debug Monitor arbeitet kann man da nicht einfach beliebig an den Parametern rumstellen!

ciao - Thomas

Reply to
Thomas Graf

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.