Forum: Mikrocontroller und Digitale Elektronik Informationen zu Bootloader für R8C/23


von Oliver F. (rocky)


Lesenswert?

Bitte diesen Post erst bis zum Ende lesen, bevor ihr postet!

Hallo Leute,

ich brauche mal die Hilfe der Experten aus dem Forum für Renesas 
Controller.

Laut diesem Forum gibt es bereits einen im µC integrierten Bootloader 
zur Flashprogrammierung über UART in allen R8C ... die Datenblätter über 
den µC geben darüber jedoch keinerlei Information. Das Wort Bootloader 
taucht nicht einmal in einer der Datenblätter auf und ich habe alle 
Datenblätter die es auf der Renesas Homepage gibt runtergeladen. Auch 
auf der Homepage wird nichts erwähnt ... google und alle anderen Foren 
geben alles mögliche aus nur keine klare Aussage.

http://www.renesas.com/fmwk.jsp?cnt=r8c23_root.jsp&fp=/products/mpumcu/m16c_family/r8c_tiny_series/r8c23_group/

Der µC ist ein R5F21238JFP, das ist ein R8C/23 von Renesas.

Ein großer Teil meiner Aufgabe ist die Erstellung eines Bootloaders für 
den oben genannten µC. Der Bootloader soll über eine RS232 Schnittstelle 
mit dem PC (LabWindows CVI) kommunizieren und auch über diese die zu 
schreibende Application vom PC erhalten. Im Anschluß soll die 
Application über die selbe RS232 Schnittstelle gestartet werden und auch 
Informationen austauschen, bis die nächste Application über die RS232 
Schnittstelle verschickt wird.

Wenn es nun aber bereits einen integrierten Bootloader gibt oder freien 
Sourcecode für diesen µC, bekomme ich natürlich ärger mit meinem 
Professor. Deswegen würde ich gerne wissen ob es bereits eins von beiden 
gibt? Hat jemand schonmal Erfahrung gesammelt mit dem µC und/oder mit 
Bootloadern für diesen µC gearbeitet?

Bitte postet hier keinen von euch geschriebenen Bootloader für den 
R8C/23 ... sonst heißt es später ich hätte diesen nur kopiert. Ich 
möchte nur Informationen sammeln um nicht erst 3 Monate dran zu arbeiten 
und dann zu erfahren, dies gibt es bereits und ich hätte alles nur 
kopiert.

Ihr würdet mir sehr Helfen, da ich nun bereits über eine Woche 
Informationen sammel, aber immer noch keine Aussage machen kann.

DANKE im voraus an alle.

Gruß
Oliver

von Andreas W. (Gast)


Lesenswert?

Der Flasher den ich benutze, der Programmiert ihn über die Mode-Leitung. 
Ich habe aber auch mal ein wenig expimentiert, man bekommt auch über den 
UART Kontakt zum Bootloader. Doch hab ich es noch nicht geschaft ihn 
darüber zu Programmieren. Ich hab aber auch nicht lange probiert. Such 
dir mal einen M16C Flasher der über UART läuft, der bekommt auch Kontakt 
zu deinen R8C.
Für M16C gibt es ein Linux-Flash-Tool wo du auch mal in den quellcode 
schauen kannst. ich habe leider nicht die Zeit dafür.

http://www.programmersheaven.com/download/23587/download.aspx

von Martin (Gast)


Lesenswert?

Die Informationen die du suchst stehen evtl. im Datenblatt im Kapitel 20 
Flash Memory bzw. in 20.5 Standard Serial I/O Mode.

von Martin (Gast)


Lesenswert?

Acha, und noch ein Stichwort: Flash API

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Vielleicht kannst du dich beim R8C/23 an der allgemeinen Beschreibung 
für den seriellen Bootloader auf dem R8C und an der speziellen 
Beschreibung für die kleineren Brüder orientieren:
http://www.mikrocontroller.net/articles/Bootloader#R8C_Bootloader

Möglicherweise findest du auch mehr, wenn du nicht nach Bootloader 
suchst, sondern die Renesas-Nomenklatur aus den Titel der obigen PDFs 
herausklaubst. Also Suche nach Serial Protocol Specification oder 
Boot Program

von Oliver F. (rocky)


Lesenswert?

Danke erstmal für eure Antworten ... ich arbeite mich gerade durch 
Kapitel 20 der Hardware Manuel. Das wird noch ein wenig dauern.

Ich habe gerade erfahren, dass der R8C/1x einen integrierten Bootloader 
besitzt, aber angeblich nicht der R8C/2x ... das würde auch ein Sinn 
ergeben und erklären warum ich nix in den Datenblätter finde.

@Stefan
Die beiden PDFs habe ich mir bereits vor Tagen gespeichert und den 
gedanken habe ich auch gehabt, dass ich mich daran ggf. orientieren 
kann.

Ich weiß nicht, aber vielleicht kommt es nur mir so vor, aber ich finde 
die Datenblätter von Atmel wesentlich besser.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Oliver F. schrieb:
> Ich weiß nicht, aber vielleicht kommt es nur mir so vor, aber ich finde
> die Datenblätter von Atmel wesentlich besser.

Full ACK.

von Olaf (Gast)


Lesenswert?

Die integrierten Bootlader in den R8 oder M16 duerften wohl geheim sein.

Einer der Gruende ist wohl  der Ausleseschnutz weil man ja erst
mit den Controlleren reden kann wenn man ein Passwort ausgetauscht hat.

Im uebrigen unterstuetzen die Controller zwei Modi. Einmal einen
asyncronen und dann noch einen syncronen. Letzterer wird vom E8
verwendet. Der Vorteil ist das man dann mit dem Controller bei 
beliebigen
Taktfrequenzen reden kann. Im asyncronen Modi muss es der Prozessor
ja schaffen die gewuenschte Baudrate einzustellen.

> Ich weiß nicht, aber vielleicht kommt es nur mir so vor, aber ich finde
> die Datenblätter von Atmel wesentlich besser.

Man merkt den Datenblaettern teilweise an das sie in japanisch 
geschrieben
wurden und nur schlecht ins englische uebersetzt wurden. Allerdings ist
es schon deutlich besser geworden als noch vor ein paar Jahren.

Ausserdem solltest du bedenken das die eingebaute Peripherie wie z.B 
Timer oder UARTs deutlich mehr kann als ein AVR. Daher muss das 
natuerlich auch komplizierter sein.
Aber jeder Prozessor hat so seine kleine Fallen. Was beim AVR die falsch 
programmierten Clockfuses sind, sind bei den R8/M16 die PRC-Bits die du 
fuer manche Register setzen musst.

Olaf

von Oliver F. (rocky)


Lesenswert?

@Olaf

Nur für mich als Verständnis:

Der Source Code des integrierten Bootloaders ist geheim, aber benutzen 
kann ich das Boot program trotzdem über die UART Schnittstelle oder wie? 
Das würde ja bedeuten, dass ich die Applicationen nur über die RS232 
Schnittstelle rüber schicken muss und feritg?!

Im Datenblatt habe ich auch den Sektor gefunden wo der Bootloader sitzt 
(natürlich ist der nicht zugänglich, geschweige noch auslesbar), aber 
angeblich soll der R8C/23 ja gar keinen Bootloader (oder Boot program) 
besitzen. Im Gegensatz zum R8C/13, da weiß ich bereits das er einen 
besitzt sonst könnte man den µC ja auch nicht mit TX und RX direkt 
flashen. Da gab es ja auch von Elector einen Bausatz oder sowas wo genau 
dieser R8C/13 per RS232 SChnittstelle programmiert wurde.

von Martin (Gast)


Lesenswert?

Wichtig ist, immer die Fussnoten lesen. Wenn man sich daran gewöhnt hat, 
kommt man gut mit den Datenblättern zurecht.

von Olaf (Gast)


Lesenswert?

> Der Source Code des integrierten Bootloaders ist geheim, aber benutzen
> kann ich das Boot program trotzdem über die UART Schnittstelle oder wie?

Es gibt zumindest auch schon Programme die nicht von Renesas sind welche
den benutzen. Die Linuxversion gibt es auch als Source. Damit kann
ich problemlos M16 und R8 brennen.

> (natürlich ist der nicht zugänglich, geschweige noch auslesbar), aber
> angeblich soll der R8C/23 ja gar keinen Bootloader (oder Boot program)

Ich kenne den R8C/23 nicht. Aber wenn er keinen Bootloader haette, wie
willst du den denn dann brennen? Oder den Debugger benutzen?
Entweder der hat einen Bootloader, oder Renesas muesste dafuer einen
speziellen Brenner verkaufen. Wenn du es genau wissen willst dann
ruf doch einfach bei Glyn an und frage.

> Da gab es ja auch von Elector einen Bausatz oder sowas wo genau
> dieser R8C/13 per RS232 SChnittstelle programmiert wurde.

Das ist eigentlich nur ein Pegelwandler.

Olaf

von Martin (Gast)


Lesenswert?

> Der Source Code des integrierten Bootloaders ist geheim, aber benutzen
> kann ich das Boot program trotzdem über die UART Schnittstelle oder wie?

Schau mal nach Flash API in der App notes. Ich meine da findest du was 
dazu.

> angeblich soll der R8C/23 ja gar keinen Bootloader (oder Boot program)
> besitzen.

Hat er wir alle anderen R8C auch.

> Da gab es ja auch von Elector einen Bausatz oder sowas wo genau
> dieser R8C/13 per RS232 SChnittstelle programmiert wurde.

Genau.

http://www.elektor.de/extra/r8c---die-elektor-r8c-mikrocontroller-startseite.83229.lynkx


Hier wird auch ein R8C/23 verwendet :
http://martinsuniverse.de/projekte/caninterceptor/caninterceptor.html

Das Flashen des MCs erfolgt auch über "RS232" nur ist eben die 
Schnittstelle uber eine FTDI232 an USB angeschlossen.

von Olaf (Gast)


Lesenswert?

Noch ein Tip!

Solltest du dir selber was zum programmieren schreiben, so ueberlege
dir wo genau der Controller seine Bytes fuer den Ausleseschutz ablegt
und was wohl passiert wenn du da einen Fehler machst, z.B die
Interruptvektoren mit zu grossem Datentyp schreibst. .-)

Olaf

von Oliver F. (rocky)


Lesenswert?

Ich benutze derzeit den E8a Debugger ... und der benutzt nur die Pins 
Mode und Reset ... ich bin auch bis jetzt davon ausgegangen das dieser 
den Flash direkt beschreibt, also brauche ihc da ja auch keinen 
Bootloader oder?

Wie ihr merkt stehe ich da teilweise noch ein wenig auf dem Schlauch und 
versuche gerade alle zusammenhänge richtig zu verstehen :) Bisherh abe 
ich halt immer Debuggers benutzt und mir nie weiter gedanken gemacht wie 
das Programm ins Flash kommt :)

Die Schaltung mit dem R8C/23 werde ich mir mal genauer anschauen.

Wenn sich herausstellt, dass dort bereits ein Bootloader der auch noch 
UART unterstützt integriert ist, werde ich mir wohl ein anderes Thema 
für die Diplomarbeit suchen müssen. Es wäre Schwachsinn nochmal ein zu 
schreiben und zu installieren wenn bereits ein fester installiert ist.

von Olaf (Gast)


Lesenswert?

> Ich benutze derzeit den E8a Debugger ... und der benutzt nur die Pins
> Mode und Reset ...

Muss wohl neu sein, den kannte ich noch garnicht. Ich hab noch den
alten E8.

> ich bin auch bis jetzt davon ausgegangen das dieser
> den Flash direkt beschreibt, also brauche ihc da ja auch keinen
> Bootloader oder?

Naja, irgendein Programm muss im Controller schon laufen damit er mit
deinem E8a reden kann. Aber damit das geht muss dieses Programm ja
bereits vom Hersteller da eingebaut sein. So gesehen brauchst du
natuerlich keinen Bootloader weil er immer schon da ist.

Klappt dieses neue Brennverfahren ueber die Reset/Modeleitung auch mit
alten Devices?


Olaf

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Es ist die Frage, ob man "das Ding" im R8C als vollwertigen Bootloader 
bezeichnet oder nicht.

Fakt ist, dass es im R9C einen sog. Boot ROM Bereich gibt. Und wenn man 
übers Hardwaredesign den sog. standard serial i/O Modus einstellt, hilft 
ein Code aus diesem Bereich, Code von aussen über die serielle 
Schnittstelle in den R8C rein zu schaffen und im User ROM (Flash) zu 
speichern. Im Prinzip ist das die Funktion eines Bootloaders.

Beim R8C sind allerdings ein paar Feinheiten vorhanden:

Der Code im Boot ROM wird im Werk reingeschrieben. Die User und 
Entwickler ausserhalb des Werks kommen offiziell (und inoffiziell ist 
mir auch nix bekannt) an diesen Code nicht ran - weder Auslesen noch 
Neuschreiben eines eigenen Codes ist möglich.

Eine wichtige Teilfunktion dieses Boot ROM Codes ist die Prüfung der ID 
des µC und der ID im zu flashenden Anwendercode sowie der ID bei einem 
Ausleseversuch des Anwendercodes. Das ist wohl der Grund für den 
vorhergehenden Absatz.

Der Boot ROM Code arbeitet nicht selbstständig, sondern er wird von 
einem seriellen Programm ausserhalb des R9C unterstützt. Zwischen Boot 
ROM Code und seriellem Programm (Serial Flasher Program) ist das Serial 
Program Protocol einzuhalten. Glücklicherweise ist dieses Protokoll 
bekannt, Den Link zu den Datenlattlinks hatte ich oben angegeben. Es 
gibt auch von Dritten Implementierungen für dieses Serial Flasher 
Program (s. u.a. Links im R8C Artikel und bei den M16C Leuten), diese 
Links stehen im R9C Artikel.

Was ich bisher noch nirgends gesehen habe, ist ein im User ROM 
abgelegter Code, der wie ein Bootloader funktioniert. Also ein 
kompletter Verzicht auf den Boot ROM Code und das Serial Program 
Protocol. D.h. eine Eigenimplementation eines neuen oder bekannten 
Bootloaders im User ROM Bereich mit Hilfe der CPU Rewrite Strategie zum 
Beschreiben des restlichen User ROM Bereichs. Bei zunehmend grösseren 
Flash ROMs ist das Platzopfer für den neuen Bootloader vielleicht 
verschmerzbar, wenn man damit eine werksunabhängige oder ID-unabhängige 
sprich Boot ROM Code unabhängige Lösung einrichten könnte... aber das 
hat mit der Aufgabe von Oliver F. wenig bis nix zu tun.

@ Oliver F.
> Ein großer Teil meiner Aufgabe ist die Erstellung eines Bootloaders für
> den oben genannten µC. Der Bootloader soll über eine RS232 Schnittstelle
> mit dem PC (LabWindows CVI) kommunizieren und auch über diese die zu
> schreibende Application vom PC erhalten.

Wenn man obige Nomenklatur übernimmt, sollst du keinen Bootloader 
schreiben, sondern ein Serial Flasher Program (oder eine Anpassung), 
welches innerhalb der LabWindows CVI Umgebung läuft und mit dem Boot ROM 
Code zusammenarbeitet.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

s/R9C/R8C/

Ich vertippe mich da ständig ;-)

von Oliver F. (rocky)


Lesenswert?

> Wenn man obige Nomenklatur übernimmt, sollst du keinen Bootloader
> schreiben, sondern ein Serial Flasher Program (oder eine Anpassung),
> welches innerhalb der LabWindows CVI Umgebung läuft und mit dem Boot ROM
> Code zusammenarbeitet.


In anbetracht der für mich neuen Fakten würde ich dies auch mal so 
formulieren ... ist nur die Frage ob diese Aufgabe noch einer 
Diplomarbeit gerecht wird.

Morgen arbeite ich weiter und werde mich nochmal genauer mit dem Seriell 
Flasher auseinander setzen und den FTD 4.01 einfach mal installieren und 
testen, bisher habe ich ja immer den E8a Debugger genutzt.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Wikipedia meint:

Eine Diplomarbeit soll zeigen, dass der Kandidat das während des 
Studiums Gelernte anzuwenden versteht und eine Aufgabenstellung 
selbstständig auf wissenschaftlicher Grundlage in angemessener Zeit 
bearbeiten kann.

Die Anforderungen an eine Diplomarbeit an einer Hochschule werden in der 
Regel durch die Prüfungsordnung des Diplomstudienganges formal 
festgelegt – das genaue Thema und spezifische Anforderungen allerdings 
durch die Lehrkräfte, in deren Arbeitsgebiet das gewählte Thema fällt 
und die es nach Abschluss in der Regel auch als erste beurteilen.

http://de.wikipedia.org/wiki/Diplomarbeit

Wieso sollte das mit dem Thema nicht möglich sein? Hängt natürlich vom 
Studiengang und den Verhältnissen vor Ort ab, also ob dort die Basis für 
eine Programmierarbeit unter Windows / ggf. Labwindows und der Umgang 
mit Mikrocontrollern gelehrt wurde. Zeitlich und Umfänglich sehe ich das 
als machbar an.

von Oliver F. (rocky)


Lesenswert?

Find ich ja lustig, dass du bei Wikipedia nachgeschaut hast ;)

Ich dneke eher, dass mein Professor den Umfang als zu wenig ansieht. 
Gelernt haben wir nichts in der Richtung, also ich muss mich überall 
selbstständig rein arbeiten. Wir haben aber Atmel gelernt ;)

Als kleine Info noch, der Studiengang ist Elektrotechnik (Bereich 
Automatisierungstechnik) an einer FH

Aber ich werde euch gerne auf dem laufenden halten, wie gesagt morgen 
früh kümmer ich mich nochmal um die Sache mit dem R8C und danach werde 
ich sowieso nochmal rücksprache halten mit meinem Professor, wenn er das 
hier nicht bereits selbst gelesen hat.

von Judge (Gast)


Lesenswert?

@Olaf:
Das Flashen/Debuggen über die Modeleitung klappt bei allen R8C, ausser 
R8C/10-13. Sowohl E8 als auch E8a nutzen dieses Verfahren.

@Stefan:
Auslesen und Neuschreiben des Boot ROMs sind schon möglich, allerdings 
nur parallel. Und die Spezifikation dafür ist auch nicht offengelegt.

@Oliver:
Meiner Meinung nach wäre das Thema trotz des integrierten Bootloaders 
für eine Diplomarbeit tauglich. Denn für die UART-Kommunikation mit dem 
integrierten Bootloader ist es nötig die Modeleitung auf "low" zu legen 
und einen Reset auszuführen. Es ist allerdings nicht möglich mit dieser 
Einstellung Programm aus dem User-Flash auszuführen. D.h., Reset- und 
Modeleitung müssten irgendwie extern gesteuert werden.
Mit einem eigenen Bootloader könntest Du Sachen wie die ID-Abfrage 
weglassen und stattdessen Funktionen wie Reset, Programmstart etc. 
einbauen und den Controller so komplett vom PC aus fernsteuern.
Sofern das für die Diplomarbeit nicht umfangreich genug ist, könnte man 
auch noch weitere Features einbauen wie Baudraten-Erkennung, Selbsttest, 
RAM-Test, CRC-Prüfung der geflashten Daten usw...

Damit der Bootloader nach einem Reset auch immer ansprechbar ist, müsste 
dieser wegen der festen Interrupt-Vektoren im Block 0 liegen. Da dieser 
bei Deinem Controller 32 kB groß ist, bleiben Dir für die Applikation 
allerdings nur noch 32 kB übrig.

Gruß
Judge

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Danke für Info mit dem Boot ROM auslesen.

Den Rest der 32 KB in Block 0 könnte man ja sinnvoll nutzen. Z.B. mit 
Funktionen aus der Runtimelibrary, so dass das Userprogramm kleiner 
würde (quasi dynamisch gelinkt).

Und weiteren Schritten in einer anderen Diplomarbeit könnte man dort 
anderen nützlichen Code (OS? Taskmanager/Scheduler? Cryptolib? 
XYZ-Interpreter? Stacks für TCP/IP, USB,...) oder Daten (Messgerätdaten? 
Rechentabellen?) unterbringen.

von Oliver F. (rocky)


Lesenswert?

Hi Leute,

habe derzeit ein anderes Problem und zwar wollte ich gerade meinen 
Mitarbeitern zeigen das man den µC über die RS232 Schnittstelle flashen 
kann. Leider funktioniert die Softwar anscheind nicht richtig.

Ich habe folgendes installiert:
- HEW Version 4.04.01.001 (war bei dem Debugger E8a dabei)
- FDT Version 4.00 (war auch bei der CD dabei)

Wenn ich nun aber den FDT Basic starte und im Anschluß den µC auswähle 
erhalte ich immer nur die Wahl zwischen E8 und E8a aber nicht die 
möglichkeit den COM Port auszuwählen. Der E8a Debugger ist natürlich 
nicht angeschloßen. Ich habe auch schon versucht eine ältere FDT Version 
zu bekommen aber die gibt es nirgendwo zum runterladen. Bei Elektor 
haben Sie ja die Version 3.04 benutzt.

Ich hoffe ihr könnt mir auch hierbei weiterhelfen, auch wenn es vom 
eigentlichen Thema abweicht.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ich kann das mit FDT nicht nachvollziehen, weil ich an einem anderen PC 
sitze. Ich habe auch schon ewig nichts mehr mit R8C gemacht und ich habe 
sowieso die ältere FDT.

Vielleicht helfen die ersten Tipp von B. Kainka bzgl. Autodisconnect
http://www.b-kainka.de/r8c.htm

Oder du probierst es mit dem Linux-Flashprogramm von T. Fischl 
(http://www.mikrocontroller.net/articles/R8C) und einer Linux LiveCD

Wenn garnix hilft, kann ich Sonntag den ältere FDT-Installer auf den 
Elektor-CDs suchen.

von Oliver F. (rocky)


Lesenswert?

Danke dir, aber ein Mitarbeiter hat mir auch gerade mitgeteilt, dass er 
die CD noch zuhause hat und bringt Sie am Montagmorgen mit. Ich habe 
bereits ein neues Thema für Diplomarbeit, aber ich würde gerne noch den 
Anderen hier beweisen, dass das flashen auch per RS232 funktioniert.

Danke nochmal an alle für eure Infos und schnelle Hilfe.

Achja das neue Thema hat natürlich auch ein Renesas R8C/23 und enthält 
noch zusätzlich Hardwareentwicklung.

Ich denke am Montag werde ich es mal meinem Professor vorstellen, drückt 
mir die Daumen :)

von Frank (Gast)


Lesenswert?

Hallo,

ich habe schon vor mehr als 5 Jahren einen Bootlader geschrieben, der 
mit einem eigenen Befehlssatz direkt aus meiner Applikation den µC neu 
programmieren kann. Da die µCs damals nicht direkt beschreibbar waren, 
mußte man einen Umweg nehmen.
Dazu habe ich den Bootlader in zwei Teile gegliedert. Das 1. Programm 
machte nichts anderes, als den eigentlichen Bootlader in das RAM zu 
kopieren. Danach wurde das Ram-Programm gestartet (Rewrite-Mode) und es 
konnte das neue Programm in den Flash programmiert werden. Man kann 
zwischen Nutzer- und Bootlader-Programm wählen. Aus Sicherheitsgründen 
habe ich es so realisiert, daß das zu programmierende Programm in einen 
nicht genutzten Flash-Speicherbereich programmiert wird, und wenn alles 
i.O. war wird dieses Programm an die Zieladresse kopiert. Das hat den 
Vorteil, daß bei Verbindungsproblemen, Abbruch oder Unterbrechung der 
Spannungsversorgung, das das zu überschreibende Programm nicht gleich 
unbrauchbar ist.

Der Werkseigene Bootlader im µC wurde nicht ersetzt !

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.