www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik Program ROM R8C25


Autor: Michael (Gast)
Datum:

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
Autor: Olaf (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

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
Autor: Volker Zabe (vza)
Datum:

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
Autor: Michael (Gast)
Datum:
Angehängte Dateien:

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
Autor: Michael (Gast)
Datum:

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
Autor: Olaf (Gast)
Datum:

> 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
Autor: Olaf (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

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
Autor: Volker Zabe (vza)
Datum:

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.
Autor: M2 (Gast)
Datum:

Starte mal den MapViewer und öffne deine *.mot Datei, evtl. kannst du da
irgendetwas erkennen.
Autor: Michael (Gast)
Datum:

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
Autor: Olaf (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

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
Autor: Michael (Gast)
Datum:

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
Autor: A. K. (prx)
Datum:

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.
Autor: Olaf (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

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
Autor: Michael (Gast)
Datum:

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
Autor: Olaf (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

> 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
Autor: Michael (Gast)
Datum:

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
Autor: gk (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net