Guten Tag, ich habe schon seit einigen Jahren den R8C/13 im Einsatz. Nun wurde aufgrund des mehr benötigten Speicherbedarfs (Programmspeicher) auf einen R8C/25 umgestellt. Diese Umstellung bedarf eine Anpassung der Speicheradresse "Near ROM area" in der sect30.inc. Setze ich diese wie vorgegeben auf den Wert 04000h zeigt der Compiler zwar keinen Fehler an, aber das Programm läuft nicht mehr. Auch der Debug-Modus hängt sich nach dem Aufspielen der Monitoring-Firmware auf. Setze ich diesen Wert wieder auf 16k (0e000h) funktioniert alles tadellos. Hat da jemand evtl. eine Idee oder Beispieldatei dazu? Danke Michael
> Hat da jemand evtl. eine Idee oder Beispieldatei dazu?
Hm..also ich kenne den R8C25 jetzt nicht, aber wenn du Adressen
verschiebst dann solltest du das in HEW machen. Renesas hat eine ganze
menge Sections die dann alle auf einmal angepasst werden. Schau also mal
in den Linkereinstellungen nach. Wenn du nur eine Section irgendwo in
einer Datei von Hand verschiebst dann kann es sein das sich die anderen
Sections nicht angesprochen fuehlen.
Olaf
Hi, viellecht gibt es ja jemanden der sich mit irgendeinem Controller von Renesas auskennt. Da ich die sect30.inc Datei vom R8C13 benutze und diese auch schon mal im Programm ROM Bereich angepasst habe, dachte ich das es diesmal auch funktioniert. Die damalige Datei für den R8C13 hatte Standardmäßig 8k eingestellt, durch anpassen des Wert auf 16k, konnte man den kompletten Bereich benutzen. Die Datei sollte (laut Hersteller) für alle Controller der Familie gleich sein, was bis 16k auch prima funktioniert. Wenn ich aber den Bereich nun größer mache, geht gar nichts mehr. Evtl. hat jemand eine Datei eines Controllers, einer anderen Gruppe mit mehr als 16k??? Michael
Den R8C25 gibt es mit 16k,24k,32k,48k und 64k Flash-ROM. Bitte nenne den genauen Typ. Poste auch mal deine sect30.inc , da ich mich eher mit den M16Cxx aus kenne. Volker
Hi, der Controller ist ein R8C/25 mit 64k Speicher. Die genaue Bezeichnung des IC lautet: R6F21258SNFP. Da der Programmspeicher in zwei voneinander getrennte Blöcke aufgeteilt ist, würde es mir reichen für den Anfang nur 48k benutzen zu können. Die Größe habe ich immer in der Zeile 616 geändert. Wenn ich diese Datei (sect30.inc) mit 16k betreibe, funktioniert alles tadellos. Ab 16k aufwärts geht nichts mehr. Ich habe mal auch die Speicheraufteilung des Controllers angehängt. Da sieht man (meiner Meinung nach) auch, das es mit der Änderung der maximalen ROM Adresse getan sein müsste. Danke Michael
Der M16C sollte laut Renesas von der Struktur her mit der R8C/Tiny Familie gleich sein. Angeblich macht es keinen Unterschied, ob man im HEW den M16C oder R8C auswählt. Die Dateien, die angelegt werden sind die gleichen. Michael
> Da ich die sect30.inc Datei vom R8C13 benutze und > diese auch schon mal im Programm ROM Bereich angepasst habe, > dachte ich das es diesmal auch funktioniert. Ich denke das es ziemlicher Murks ist den du da veranstaltest. Zu faul mal die Doku zu HEW zu lesen? Die richtige Vorgehensweise waere es wohl wenn du einfach mal ein neues Projekt erzeugst und da angibst welche CPU du hast. Dann erzeugt dir naemlich HEW alle diese Files genau passend zu deiner CPU. Das rueberkopieren irgendwelcher alten Dateien von einer anderen CPU ist jedenfalls ganz gewiss nicht zielfuehrend. Olaf
> Der M16C sollte laut Renesas von der Struktur her mit der R8C/Tiny > Familie gleich sein. Angeblich macht es keinen Unterschied, ob man im > HEW den M16C oder R8C auswählt. Die Dateien, die angelegt werden sind > die gleichen. Das stimmt so leider auch nicht. Der Prozessorkern ist identisch. Aber die einzelnen Controller koennen sich in den notwendigen Initialisierungen ganz deutlich unterscheiden. Und selbst fuer denselben Controller koennen sich die Dateien schon deutlich unterscheiden, je nachdem ob man Assembler oder C-Code Startups auswaeehlt und auch abhaengid davon wie alt die HEW-Version gerade so ist. Olaf
Also ich habe jetzt mal (wie vorgeschlagen) ein neues Projekt mit der Angabe der richtigen CPU gemacht und es funktioniert leider immer noch nicht. Da es die CPU ja auch in verschiedenen Speichergrößen gibt (16k-64k) ist in der sect30.inc auch nur der kleinste Wert eingetragen! Und NEIN ich bin nicht zu faul im Datenblatt nachzuschauen, sondern komme mit meinen doch recht spärlichen Kenntnissen einfach nicht weiter... Sonst würde ich ja hier nicht fragen. Habe dann auch mal die sect30.inc (neues Projekt) mit der des alten mittels Vergleichprogramm vergleichen lassen und siehe da.... sie unterscheiden sich nicht voneinander. Wäre aber trotzdem gut, wenn da jemand noch eine Idee bzw. Lösungsvorschlag hätte. Michael
Michael schrieb: > Wäre aber trotzdem gut, wenn da jemand noch eine Idee bzw. > Lösungsvorschlag hätte. Hier ein "Fallstrick" der mir beim M16C-Serie einfallen würden: ROM einblenden. Bei den Großen (mit viel Flash) müssen erst Flach-Bereiche eingeblendet werden, bevor man sie benutzen kann. Im "Processor mode register 1" (M16C) gibt hier für ein geschütztes Bit. Bitte prüfe ob dies auch beim R8C25 so ist.
Starte mal den MapViewer und öffne deine *.mot Datei, evtl. kannst du da irgendetwas erkennen.
Hi, ich bin hier bald mit meinem Latein am Ende. Auch der Renesas Support lässt lange auf eine Antwort warten. Kein wirkliches Vergnügen. Ich habe mal nach dem Processor mode Register geschaut und bin auch fündig geworden. Allerdings ähnelt dieses Register nicht dem des M16C. Dafür habe ich aber mehrere "Flash Memory Control Register" & und ein "Optional Function Register" gefunden. So richtig durchsteigen tue ich da allerdings nicht. Das letztere Register ähnelt wohl dem des M16C. Dort kann man einen ROM Code Protect ein und ausschalten. Scheint aber wohl nicht zu funktionieren. Der mitgelieferten Map Viewer scheint bei mir nicht richtig zu laufen. Egal welche Datei (auch von Beispielprojekten) ich versuche zu öffnen, kommt immer ein Fehler, der auf eine dll verweist. Auch eine Neuinstallation hat nichts bewirkt. Vielleicht hat ja jemand eine funktionierende sect30.inc bzw. kann mir seine Vorgehensweise für einen Controller der R8C/Tiny-Serie erklären. Oder Ihr habt noch ganz andere Ideen. Ich kann auch gerne mal das komplette Project per mail posten. In der Firma habe ich auch schon mehrere Personen, die sich mit Controllern auskennen (allerdings nicht mit Renesas) gefragt. Auch hier ist man ratlos. Ihr seit also meine letzte Hilfe!!!! Michael
> ich bin hier bald mit meinem Latein am Ende. Auch der Renesas Support > lässt lange auf eine Antwort warten. Also meine Erfahrung ist das sie sofort jede Frage kompetent beantworten. Und in den wenigen Faellen wo es nicht bereits im ersten Telefongespraech klappt da rufen sie auch zurueck. > Vielleicht hat ja jemand eine funktionierende sect30.inc bzw. kann mir > seine Vorgehensweise für einen Controller der R8C/Tiny-Serie erklären. Das habe ich doch schon. Ich benutze den R8C29 und lege einfach ein neues Projekt an. Oh..allerdings habe ich garkeine sect30.inc. Das duerfte IMHO daran liegen das ich 'Startupfiles als C' beim Projekt generieren auswaehle. Und wie ich dir auch schon erklaert habe, es bringt nichts wenn du in den Files rumfummelst. Der HEW muss wissen wo er die Sektion hinlegt und wie gross sie sind. Er muss ja z.B auch die Position des Debuggers anpassen. Olaf
Prima, also noch mal von ganz vorn. HEW öffnen... New Workspace... C source startup Application... Workspace Name eingeben CPU-Family M16C Toolchain Renesas M16C Standard. (was anderes geht ja eh nicht). Dann auf OK Warnmeldung "The data holder of the selected toolchain was not detected" OK und dann habe ich keinerlei Möglichkeit eine CPU auszuwählen. Ich glaube ich muss das alles mal deinstallieren und komplett neu installieren. Oder bekomme ich das Tool Chain irgendwo her? Michael
soooo... ich habe jetzt alles deinstalliert, die neusten Testversionen von Renesas runter geladen und alles installiert. Jetzt konnte ich auch endlich einen neuen Workspace erstellen und meinen Controller mit entsprechender Größe auswählen. Soweit so gut. Den neuen FDT runter geladen und in meinen Controller geflasht. Das Flashen funktionierte einwandfrei. Nur das Programm macht leider nichts. Dann habe ich versucht mit dem Debugger das Programm anzuschauen, aber das funktioniert mal gar nicht. Nach dem Aufspielen der Firmware hängt sich der Debugger auf. Ich raste noch bald auf, wenn ich nicht wenigstens ein Lebenszeichen bekommen. :-( Der MapViewer funktioniert jetzt auch endlich. Erkennen kann ich da aber nicht wirklich viel drauf. Hat noch jemand eine Idee, vorschlag, Vorgehensweise, Telefonsupport..... Michael
Michael schrieb: > Der M16C sollte laut Renesas von der Struktur her mit der R8C/Tiny > Familie gleich sein. Im Prinzip schon, aber bei den kleineren R8C mit überschaubaren ROM-Grössen liegen RAM+ROM zusammen in den ersten 64KB. Bei grösseren Modellen nicht mehr. Wer beim Programmieren nicht drauf achtet, ROM- und RAM-Pointer sauber zu unterscheiden, der kann bei der Migration bös auf die Nase fallen.
> Den neuen FDT runter geladen und in meinen Controller geflasht. > Das Flashen funktionierte einwandfrei. Erklaer das mal genauer. Ich sollte vielleicht noch erwaehnen das ich unter dem HEW nur mit dem E8 arbeite und dann funktioniert auch alles. Wenn ich das richtig verstehe dann benutzt du noch das tool ueber die RS232 arbeitet? Wenn ja dann ist es wahrscheinlich sehr wichtig das es mit deiner CPU harmoniert. (upgedatet?) Unter Linux benutze ich ebenfalls die RS232 zum flashen und ich musste da erst letztens meinen Flasher patchen. Die verschiedenen Debug-Frontends in den Renesas-CPUs scheinen zwar sehr kompatibel zu sein, aber die groesse und Position der Flashbloecke ist es nicht. Wenn du aber auch mit dem E8 arbeitest dann pruefe mal im Connectfenster die Groesse und Position des Rams fuer den Debugger. Olaf
Also.... Nach vielen Versuchen ist es mir endlich gelungen das der Controller im geflashten Zustand LED' s ein und ausschaltet bzw. Über die UART ein Zeichen sendet. Der Debug Modus mit dem KD30 funktionier immer noch nicht. Wenn man den Debugger starten möchte, muss man die entsprechende MCU auswählen. Leider gibt es im Standardverzichnis des KD30 keine passende MCU. Also habe ich eine aus dem Internet geladen, die er auch annimmt, sich dann aber wieder aufhängt. Was mir im flashmodus bzw. Beim compilieren aufgefallen ist.... Ich habe meine alte UART senderoutine eingefügt. Diese ist eine eigenständige Funktion, der Länge des Strings und der eigentliche String übermittelt bekommt. Der Zu übermittelnde String ist ein Pointer auf eine angelegte variable. Compiliere ich nun, meldet mir der Compiler ein Fehler wegen des Pointer. Warum habe ich bisher noch nicht rausfinden können. Einzelne Buchstaben senden funktioniert, ganze Strangs noch nicht. Das mit dem Debugger ist s ne Sache. Den E8 kenne bzw. Habe ich nicht. Der E8 ist doch ein Emulator, oder? Also eine Box die zwischengeschaltet wird? Der KD30 arbeitet über die rs232. Michael
Das mit dem Pointer abe ich nun auch rausgefunden. Dieser sollte als const char und nicht nur als char deklariert werden. Somit wäre da noch das Problem mit dem Debugger. Lohnt sich das mit dem E8?? Was kostet sowas? Michael
> Leider gibt es im Standardverzichnis des KD30 keine > passende MCU. Du benutzt also einen Debugger der deine CPU nicht kennt und wunderst dich das es nicht geht? Findest du das nicht etwas naiv? > Der Zu übermittelnde String ist ein Pointer auf eine angelegte > variable. Compiliere ich nun, meldet mir der Compiler ein > Fehler wegen des Pointer. Glaubst du es macht sinn anderen von deinen Fehlern zu erzaehlen und die Fehlermeldung zu verschweigen? Wenn ich mal extra fuer dich einen Hamster aufschneide dann wuerde ich aus den Eingeweiden lesen das du dich ueber far/near infomieren willst. > Der E8 ist doch ein Emulator, oder? Der E8 ist eine Mischung aus Programmer und Debugger. Der Hauptunterschied duerfte darin bestehen das er ein syncrones Protokoll fahren kann. Ausserdem vermute ich mal das dein R8C bereits ueber Mode/Reset geflasht werden kann. Dann kann er Leitungen am Prozessor einsparen. Olaf
> Du benutzt also einen Debugger der deine CPU nicht kennt und wunderst > dich das es nicht geht? Findest du das nicht etwas naiv? Der Debugger sollte laut Datenblatt die CPU kennen, deshalb habe ich ja die passenden MCU runter geladen. Das funktionierte aber leider immer noch nicht. > Glaubst du es macht sinn anderen von deinen Fehlern zu erzaehlen und die > Fehlermeldung zu verschweigen? > Wenn ich mal extra fuer dich einen Hamster aufschneide dann wuerde ich > aus den Eingeweiden lesen das du dich ueber far/near infomieren willst. far pointer (implicitly) casted by near pointer sorry! Habe die Nachricht vom ipad geschrieben und hatte die passende Fehlermeldung nicht parat. Kann in dem Eifer passieren. > Ausserdem vermute ich mal das dein R8C bereits ueber > Mode/Reset geflasht werden kann. Soweit ich weiss kann er das. Abgesehen vom nicht funktionierenden Debugger quäle ich mich gerade mit der Interruptfunktion für die UART0 receive. Bei dem R8C13 hatte das prima funktioniert. Hier scheint er wohl nicht in die Routine zu springen. Mal schauen an was das wieder liegt. Leider nur sehr schwer ohne Debugger. So geht eins ins andere..... > Olaf Danke für die regelmäßigen Antworten Michael
Guten Morgen,
das Interruptproblem habe ich auch gelöst bekommen. Man muss den
Interrupt nach der UART initialisierung auch wieder einschalten, wenn
man ihn zuvor ausgeschaltet hat. Dann funktioniert auch alles wieder.
So, jetzt zum Debugger.
Das was ich rausgefunden habe, ist das der KD30 (auch wenn man die
passende MCU downloaden kann) nicht mehr supportet wird, bzw. dann auch
nicht mehr für den R8c25 funktioniert. Leider, denn er war einfach zu
bedienen und funktionierte tadellos. Das HEW liefert aber einen Debugger
mit, der direkt mit im HEW eingebunden ist. Leider komme ich damit
überhaupt nicht klar, also muss ein anderer her.
> Olaf
Noch mal genauer zu dem E8.
Wenn ich mir den kaufe, denke ich das alles wieder funktioniert. Kann
man "online" Variablen anschauen, dessen Werte verändert, Breakpoints
setzten usw?
Ich denke schon, sonst wäre es kein Debugger :-)
Hast Du eine Ahnung woher ich den bekomme? Habe mal einfach in Google
gesucht, bin aber noch nicht wirklich fündig geworden. Oder ist das
schon wieder ein altes Modell und es gibt mitlerweile einen neuen.
Die nächste Frage wäre, woher bekomme ich eine aktuelle Studentenversion
des HEW?
Danke
Michael
Den E8a bekommst Du z.B. von Glyn und MSC. Der kostet, glaube, ich so um die 180 €. Im Bundle mit einem Starterkit ist er aber meist günstiger, z.B. http://www.msc-ge.com/de/314-www.html und da ist die HEW mit dabei, sowie ein EV-Board. (Alle Preise + MWSt.) Der HEW-Debugger kann im Prinzip auch das, was der KD30 kann. gk
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.