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
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
Die Informationen die du suchst stehen evtl. im Datenblatt im Kapitel 20 Flash Memory bzw. in 20.5 Standard Serial I/O Mode.
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
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.
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.
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
@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.
Wichtig ist, immer die Fussnoten lesen. Wenn man sich daran gewöhnt hat, kommt man gut mit den Datenblättern zurecht.
> 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
> 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.
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
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.
> 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
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.
> 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.
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.
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.
@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
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.
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.
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.
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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.