Forum: Mikrocontroller und Digitale Elektronik Glyn mit M16C - Wie bringe ich den Monitor richtig ans Laufen?


von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Hallo!

das Thema wurde zwar schon oft diskutiert, aber ich konnte nichts 
passendes auf meine Fragestellung finden. Wär super, wenn mir jemand 
weiterhelfen könnte.

Habe ein Glyn-Board mit einem M16C, den Debugger KD30 und eine zum 
Controller passende Monitordatei M306NAFG.mot.

Ist es richtig einfach die mot-Datei zu flashen, danach mein Programm zu 
flashen (danach den Programmierjumper entfernen) und dann den Debugger 
zu starten?

Wenn ja, dann bekomm ich immer noch den Fehler "Communication Error - 
Can't accept data. ERROR(16014)"

Ich bin echt ratlos.

Danke schon mal für die Hilfe!

von Northernhessian (Gast)


Lesenswert?

Hast Du auch den Reset Taster betaetigt?

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Ja hab ich gemacht.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Ich hab den Monitor nie gebraucht, aber wenn du 2 Binaries in einen M16 
schiebst dann mußt du dem Flashprogramm sagen auf welche Adresse er es 
schieben muß. Für dein Testprogramm mußt du wohl die Adressen 
relozieren.

von Olaf (Gast)


Lesenswert?

> Habe ein Glyn-Board mit einem M16C, den Debugger KD30 und eine zum
> Controller passende Monitordatei M306NAFG.mot.

Wie kommst du auf den KD30? Der Debugger ist doch heutzutage im HEW 
integriert. Wenn das bei dir noch nicht so ist dann muesstest du ja eine 
sehr alte Version haben. Dann wuerde ich bei Renesas erstmal die 
aktuelle Umgebung runterladen.


> Ist es richtig einfach die mot-Datei zu flashen, danach mein Programm zu
> flashen (danach den Programmierjumper entfernen) und dann den Debugger
> zu starten?

AEh..nein. Gegenfrage, benutzt du den E8 oder nur eine serielle 
Schnittstelle?

Das Prinzip ist so: (bei den aktuellen HEW-Versionen)
Sobald man die Oberflaeche startet und ein Project geoeffnet wird, 
verbindet sich der Debugger mit dem Controller.

Ich benutze den E8, also geschieht das darueber. Wenn ich den SH7262 
programmiere geht das ueber USB. Bei RS232 wird es vermutlich direkt 
ueber RS232 gehen. Fuer jede der drei Anwendungen gibt es einen Treiber.
Ausserdem musst du beim erstellen eines neuen Projectes dem HEW sagen 
das er bitte auch debuggen soll und dabei legst du auch fest womit das 
geschieht.
Wenn du also z.B ueber die RS232 debuggst dann kann es sein das du 
dafuer noch einen Treiber installieren musst. Ich koennte mir auch 
vorstellen das der bereits Teil der aktuellen HEW-Installation ist. 
Weiss ich jetzt leider nicht weil ich nur noch den E8 benutze. Du musst 
aber auf jedenfall in einem Project den Debugger aktivieren.

Wenn du ueber RS232 debuggst dann musst du normalerweise einen Jumper 
stecken und danach noch einmal Reset druecken. Ich meine aber es gibt 
auch Boards wo das automatisiert wurde. Es empfiehlt sich also mal die 
Unterlagen zum Board zu lesen.

Wenn dann die Verbindung steht so wird jedesmal nach dem neu uebersetzen 
der Code in den Prozessor geladen. Etwas bloed ist allerdings das dies 
nicht von selber geschieht wenn du HEW neu startest. Wenn du also morgen 
das Project von heute nochmal aufrufst und ohne Aenderung am Code 
nochmal laufen lassen willst, so wird der nicht von selber reingeladen. 
Startet man dann einfach den Prozessor so haengt er sich weg.
Man kann das mot File aber auch von Hand reinladen wenn du mal darauf 
klickst. Du siehst am Icon am mot-File ausserdem einen Pfeil wenn es 
reingeladen wurde.


> Wenn ja, dann bekomm ich immer noch den Fehler "Communication Error -
> Can't accept data. ERROR(16014)"

Ueberpruefe mal was bei dir unter Debug->Debug-Settings->Target steht.
Passt das zu deiner Hardware?

Man trifft manchmal Leute die zu faul sind sich ein eigenes Project zu 
erstellen. Wenn die immer die Projecte anderer Leute kopieren dann steht 
da vielleicht noch E8 drin obwohl sie keinen haben oder umgekehrt.

Solltest du ueber einen USB-RS232 Adapter debuggen so benutze bitte 
unbedingt eine aktuelle HEW Version! Die Versionen vor 3-4Jahren hatte 
da irgendeine Macke ueber die ich mich damals auch sehr aufgeregt habe. 
:-)

Olaf

von gk (Gast)


Lesenswert?

Also entweder
  Du flascht das Monitorprogramm und arbeitest dann mit dem KD30
oder
  Du flascht Dein Anwenderprogramm( und kannst dann nicht mit KD30 
debuggen ).
gk

von Olaf (Gast)


Lesenswert?

>   Du flascht Dein Anwenderprogramm( und kannst dann nicht mit KD30
> debuggen ).

AEh..moment mal. Da muss man genauer unterscheiden was man meint.

In den Prozessoren ist immer ein kleines Programm fest eingebaut. Das 
nutzt der KD30, egal ob extern oder in HEW integriert, um sich mit dem 
Prozessor zu verbinden. Das ist also sozusagen der Bootloader.
Genauer gesagt teilt man dem Controller ja mit dem Jumper mit ob es den 
Bootloader oder das eigene Programm im Flash nach einem Reset starten 
soll. Deshalb muss man ohne E8 ja den Jumper stecken und dann Reset 
druecken.

Wenn man dann ein Anwendungsprogramm ohne Debugmodus nutzt so kann der 
Debugger das in den Prozessor laden, aber nicht debuggen.
Ich vermute aber mal, ich nutze ja den E8, das man nach dem reinladen 
die Verbindung zum Debugger trennen muss, den Jumper zieht und dann 
reset drueckt. Mit dem E8 uebernimmt der Debugger das fuer einen und man 
kann sich das sparen.

Wenn man debuggen will, dann muss man das ja beim connecten mit dem 
Controller angeben. Dann wird der Compiler einen Teil des Debuggers an 
das eigene Programm dazulinken. Dadurch geht einem also etwas 
Flashmemory und auch etwas Ram verloren. Man muss natuerlich aufpassen 
das man nicht das Ram benutzt wo der Debugger arbeitet.
Aber selbst wenn man da einen Fehler machen wuerde, so wuerde sich der 
Debugger erst mit dem Controller verbinden und das Programm reinladen. 
Erst sobald man dann sein Programm laufen laesst wird es abstuerzen und 
die Verbindung geht baden.

Olaf

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Ich muss den KD30 Debugger in Verbindung mit dem Tool Manager verwenden, 
da ich im Moment nichts anderes installieren kann mangels Admin-Rechten.

Ich habe jetzt mal den Monitor in den µC geflasht, anschließend Reset 
und dann den Debugger starten. (Habe einmal mit gestecktem und einmal 
ohne Programmierjumper versucht zu debuggen) ... nichts. immer noch der 
Fehler. Habe eine ganz normale RS232-Verbindung.

Ihr meintet, dass man in seinem eigenen Programm noch Code hinzufügen 
muss, damit der Debugger arbeiten kann?

Wie würde das dann aussehen bzw. was muss ich alles hinzufügen?

von gk (Gast)


Lesenswert?

Der geflashte Monitor übernimmt die Kommunikation mit dem Debugger. Im 
Programm muss man keinen Code hinzufügen, Aber, man muss in der 
sect30.inc
die Interrupt Vektoren für Uart1 hinzufügen einfügen, siehe Beschreibung 
von Glyn. Oder man bastelt sich einen Monitor, der den DBG Interrupt 
nutzt, dann braucht man nichts eintragen. Eventuell muss auch noch die 
ncrt0.a30 angepasst werden.
Viel Erfolg gk

von Olaf (Gast)


Lesenswert?

> Du flascht Dein Anwenderprogramm( und kannst dann nicht mit KD30
> debuggen ).

Womit hast du das denn geflasht? Nimmst du dafuer einen extra seriellen 
Lader? Wenn ich mich richtig erinner, ist schon was her das ich den KD30 
einzeln benutzt habe, dann brennt er ja vorher seinen Monitor aber 
danach sollte er sich mit dem controller verbinden koennen schliesslich 
musste er sich ja bereits verbinden um etwas reinzuflashen.

> Ihr meintet, dass man in seinem eigenen Programm noch Code hinzufügen
> muss, damit der Debugger arbeiten kann?

Jaein, das macht die Oberflaeche fuer dich dann automatisch. Du musst 
nur darauf achten das dein Code und dein Ram nicht mit dem des Debuggers 
kollidieren. Wenn du aber erstmal nur eine kleine LED blinken laesst 
sollte das kein Problem sein.
Lediglich beim Stack musst du darauf achten das der nicht da liegt wo 
der Debugger sein Ram hat. Auch da macht HEW normalerweise vernuenftige 
Vorgaben. Ich meine aber mal es haette da mal einen Bug gegeben. Ich 
weiss aber nicht ob das auf deinen Prozessor zutrifft. Aber soweit bist 
du ja sowieso nicht nicht.

BTW: Wenn du gezwungen bist eine alte Software zu benutzen, kennt die 
denn bereit deinen Controller? Gibst du also den genauen Typ an? Daraus 
leitet der Debugger ja ab wo er Ram und Flash benutzen kann.

> Aber, man muss in der sect30.inc die Interrupt Vektoren

Falls man den Startupcode in Assembler hat! Man kann das ja beim anlegen 
eines neuen Projects entscheiden. Bei mir stehen dir Interrupts in 
intprg.c.
Allerdings kann es sein das die alte Version mit externem KD30 das noch 
garnicht konnte.

Ich kann nur wirklich nochmal dringendst zum updaten raten. Der HEW 
kommt ja urspruenglich von Hitachi fuer ihre H8 Prozessoren und wurde 
dann wohl von Renesas uebernommen und fuer die anderen Prozessoren 
angepasst. Da gab es in der Anfangszeit immer mal ein paar Macken und 
die auch noch abhaengig von dem Controller mit dem man arbeitet. 
Mittlerweile laufen aktuelle Versionen aber ganz gut.

Mir ist da gerade noch was anderes eingefallen. Der Controller verwendet 
ja eine ID damit ihn nicht jeder auslesen kann. Diese ID wird immer 
gebraucht.
Wenn man die nicht setzt wird ein Defaultwert angenommen. Bei manchen 
Programmen war das 0.0.0.0.0, bei anderen ff.ff.ff.ff.ff. Ich glaube 
deshalb hatte ich damals auch schonmal Schaum vor dem Mund und wollte 
mit einem dicken Hammer auf den Prozessor hauen bis ich da drauf 
gekommen bin.

Olaf

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Habe eingesehen, dass der ganze Kram zu alt ist.

Habe mir jetzt HEW mit der aktuellen Toolchain heruntergeladen und 
installiert.

Jetzt stellt sich mir die Frage:
- Wie kann ich mit HEW debuggen? (Möchte ja schließlich mein Programm 
direkt auf dem M16C debuggen und nicht nur auf dem Rechner simulieren.)

Welche Einstellungen habe ich dazu zu machen?

von Olaf (Gast)


Lesenswert?

> Welche Einstellungen habe ich dazu zu machen?

Du legst ein neues Project an und beantwortest erstmal alle
Fragen nach dem Prozessor wahrheitsgemaess.

Du entscheidest dich ob du Assembler StartupFiles moechtest
oder C-Source.

Dann kommt irgendwo eine Einstellung zum debuggen. Da musst du deinen 
Debugger auswaehlen. Bei mir halt E8. Bei dir muesste es irgenwas 
serielles geben wenn du keinen E8 hast. Vielleicht, das weiss ich nicht, 
muss du noch einen extra Treiber installieren! Der Debugger ist bereits 
Teil deines Systems, aber er braucht irgendeine Verbindung zum 
Controller. Es ist wichtig das du da die richtige Wahl triffst.

Du musst ausserdem noch andere Dinge beantworten. Zum Beispiel ob du 
einen Heap brauchst (malloc) oder wie gross deine Stacks sein sollen.

Wenn du das ueberstanden hast dann wars das schon. Du wirst, zumindest 
beim E8, bei jedem Systemstart gefragt ob du Code unter der Controlle 
des Debuggers laufen lassen willst, oder die fertige Applikation flashen 
moechtest. Du kannst den Debugger auch von Hand zu oder abschalten.

Du musst auch nicht unbedingt alle Einstellungen beim anlegen eines 
Projectes angeben. Man kann auch spaeter alles selber machen. Allerdings 
muss man dann wuesst durch die Gegend klicken.

Ausserdem kannst oben in der Anwendung normalerweise zwischen Debug und 
Release umschalten. Das heisst aber nicht unbedingt das du nur in Debug 
auch Debuggen kannst! Es bedeutet einfach das die Oberflaeche zwei (oder 
mehr) Einstellungen kennt. Du kannst also im Debugbetrieb komplett 
andere Einstellungen (Stackgroesse, Position der Section usw) fahren als 
im Releasebetrieb.

Ansonsten schau halt mal bei Renesas. Die haben wirklich sehr viele 
Anleitunge mit vielen bunten Bildern drin. Sind nur manchmal etwas 
schwer zu finden weil ihre Webseite ein ziemliches Chaos ist.

Olaf

von Jörg K. (Firma: Robert Bosch GmbH) (joerg-koers)


Lesenswert?

Sorry, dass ich euch wahrscheinlich schon damit nerve, aber ich komm 
nicht voran.

Nochmal ganz von vorne:

Zu meiner Hardware:
- Glyn Board mit M16C
- Serielles Kabel von X1 (UART1) zum PC

Wenn ich jetzt ein neues Projekt in HEW anlege, kann ich im Schritt 5 
(Setting the Target System for Debugging) nur "M16C R8 Simulator" 
auswählen.

Da bei Renesas so gut wie nichts beschrieben ist, geh ich davon aus, 
dass dies nur ein Simulator ist, der nur auf dem PC läuft und den Chip 
nachahmt ohne auf ihn zuzugreifen, oder?

Wenn ja, welches Tool von Renesas bräuchte ich zusätzlich, damit ich 
vernünftig auf dem µC debuggen kann? (Auf der Downloadseite von Renesas 
herrscht so ein Chaos, dass mich nicht zurecht finde)

Wenn nein, muss der Monitor vorher manuell geflasht werden?

von Olaf (Gast)


Lesenswert?

> Da bei Renesas so gut wie nichts beschrieben ist, geh ich davon aus,
> dass dies nur ein Simulator ist, der nur auf dem PC läuft und den Chip
> nachahmt ohne auf ihn zuzugreifen, oder?

Das vermute ich auch. Ich habs aber selber noch nie verwendet da reine 
Simulation ohne externe Hardware nur selten Sinn macht.

> Wenn ja, welches Tool von Renesas bräuchte ich zusätzlich, damit ich
> vernünftig auf dem µC debuggen kann?

Dir muss noch irgendein Treiber fehlen. Leider kann ich dir nicht sagen 
wie der heisst da ich den selber noch nicht gebraucht habe. Ich habe die 
Problematik nur letztens durchgezogen weil ich den USB Treiber fuer den 
SH7262 installiert habe. Der wurde naemlich auch nachtraeglich 
installiert.

Ich wuerde so vorgehen:

1. Schauen ob es bei Renesas einen dedizierten Treiber fuer RS232 gibt.

2. Probieren von Renesas das Flashtool installieren. Die haben ein
   Programm das nur zum flashen da ist. Kann sein das der den Treiber
   mitbringt.

2.1 Bei Renesas Rulz nachfragen. Die Leute dort arbeiten fuer Renesas 
und
    sollten das wissen.

3. Bei Glyn anrufen und fragen.

Wenn du mal unter Debug-Einstellungen kuckst dann kannst du da unter
Target sehen welche Treiber dein System enthaelt. Ich habe z.B in der
Firma da auch deutlich weniger Auswahl als Zuhause. Da muss ich also
irgendwann mal was installiert haben ohne mich da jetzt dran zu
erinnern. :-)

Olaf

von gk (Gast)


Lesenswert?

Also zum Debuggen über die RS232 Schnittstelle musst Du bei Debug 
Settings M16C R8C FoUSB/UART auswählen, falls der Treiber nicht zur 
Auswahl steht weiss ich auch erstmal nicht weiter. Eventuell legst Du 
noch mal ein neues Projekt an. Vielleicht kannst Du da den Treiber 
auswählen. Der Jumper wird übrigens nur zum Flashen gebraucht, also 
Monitor und-/ oder  Anwenderprogramm. Danach wieder entfernen und Reset 
betätigen. Zum Debuggen mit KD30 musst Du auch Ergänzungen in sect30.inc 
(Interrupt Vektoren für Uart1) und ich glaube auch in der ncrt0.a30 
durchführen. Das steht in der Glyn Beschreibung.

Viel Erfolg gk

von Olaf (Gast)


Lesenswert?

Ah....falls man einmal weiss wie das Dingen heisst:

M16C R8C FoUSB/UART

Findet man recht schnell eine Applikation von Renesas welche
die Benutzung erklaert:

Google:  rej10j1725_r8c2auartsw_u.pdf
         rej10j1610_m16cfousbsw_u.pdf

Allerdings habe ich diesen Treiber bei mir auch nicht installiert. Er 
wird also auf jedenfalls schonmal nicht defaultmaessig installiert und 
man muss ihn sich noch irgendwo besorgen.

Das Problem bei Renesas ist ja wirklich nicht das sie keine 
Dokumentation haben, man findet sie bloss nicht so einfach.

Hier gibt es ein paar Infos dazu.

http://www.renesas.com/_full_product_info_/products/tools/emulation_debugging/onchip_debuggers/m3a_0665/m3a_0665.jsp#a7

http://tool-support.renesas.com/eng/toolnews/m16c_fousb_dbg.htm

Angeblich soll das Teil wohl ab HEW4.03 integriert sein. Ich bin sicher 
deutlich neuer und kann es trotzdem nicht finden. Aber wenn man mal nach 
FoUSB sucht findet man etwas. Jedenfalls wenn ich es richtig verstehe 
das ihr FoUSB nur ein USB-RS232 Adapter war. Die haben ja mehr 
Programmiergeraete als manch anderer Prozessoren...

Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.