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!
Hast Du auch den Reset Taster betaetigt?
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.
> 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
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
> 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
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?
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
> 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
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?
> 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
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?
> 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.