Forum: Mikrocontroller und Digitale Elektronik M16C Flashen missglückt , Hilfe gesucht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Egon P. (lami1960)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Eventuell kann mir jemand helfen. Ich musste eine Platine mit der 
Herstellersoftware über den USB Anschluss der Leiterplatte flashen, das 
leider missglückte. Das habe ich schon öfter gemacht, hat auch immer 
funktioniert. Leider diesmal nicht. Die Firmware Programmierung (mot 
Datei) wurde nicht abgeschlossen, jetzt geht leider nichts mehr:(. Ich 
habe über USB keinen Zugriff mehr. Im Forum und Internet habe ich schon 
gesucht und scheinbar kann man den Controller seriell programmieren!? 
TTl Konverter hätte ich.  Die Leiterplatte hat neben der USB Buchse auch 
eine 8 polige Schnittstelle. Ich bin zwar Elektrotechniker habe aber mit 
Controllern eigentlich nichts zu tun. Eventuell kann mir jemand einen 
Tip geben. Der Schaden ist nicht so klein, daher meine Bitte. Danke im 
voraus. Egon

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Bewertung
0 lesenswert
nicht lesenswert
Der hat doch einen unlöschbaren Bootlader on chip?
Wahrscheinlich macht dein USB-Anschluss nichts weiter als eine serielle 
Schnittstelle zum Chip zu bilden (FT232 o.ä.).

Neben Rx und Tx braucht man noch ein reset-Signal und noch ein Signal um 
im bootlader-Modus zu starten, also noch 2 Steuersignale (RTS, DTR).

von Gabriel M. (gabse)


Bewertung
0 lesenswert
nicht lesenswert
H.Joachim S. schrieb:
> Wahrscheinlich macht dein USB-Anschluss nichts weiter als eine serielle
> Schnittstelle zum Chip zu bilden (FT232 o.ä.)

Den siehst man sogar auf dem Bild, rechts neben den Optokopplern (FTDI 
chip)

von Egon P. (lami1960)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, danke für die Antwort. Ich denke Bootloader ist drauf. Ja,Ft232 
ist verbaut. Das heißt über USB müsste es irgendwie gehen? Haben Sie 
eventuell eine Link zu einer Beschreibung/ Zeichnung. Danke.

von pegel (Gast)


Bewertung
1 lesenswert
nicht lesenswert

von H.Joachim S. (crazyhorse)


Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip gibts nur wenige Baustellen:
-Software auf dem PC, aber da hast du ja wahrscheinlich nichts geändert
-der FTDI-Chip selbst
-der MC kaputt

Ganz konkret zu helfen ist schwierig, weil es letzten Endes auch auf die 
Beschaltung der Steuerleitungen ankommt. Da müsstest du dann schon mal 
die Beschaltung zwischen FTDI und M16C aufnehmen.
Mit HTerm z.B. kanns du ganz gezielt RTS und DTR setzen und rücksetzen. 
Dann noch Rx und Tx überprüfen.
Die relevanten Pins sind:
-RxD/P66
-TxD/P67
-Reset (geht meist an RTS)
-CNVSS (bei mir DTR)  P55 und P57=/CNVSS

von MH (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Ich glaube irgendwie nicht, dass der FTDI mit der RXD1/TXD1 
Schnittstelle des M16C verbunden ist.
RXD1 (P66) liegt auf Pin 30, TXD1 (P67) liegt auf Pin 29 bei deinem 
Package des M16C.
Prüf doch erstmal ob es hier überhaupt eine Verbindung zu den RX/TX Pins 
des FTDI gibt oder ob die beiden Pins nicht vielleicht doch auf die 8pol 
Stiftleiste gehen.

von Egon P. (lami1960)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich schau mir das am Wochenende mal genauer an und berichte 
dann...

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> RXD1 (P66) liegt auf Pin 30, TXD1 (P67) liegt auf Pin 29 bei deinem
> Package des M16C.

Ausserdem sei noch erwaehnt das die allerersten Serien der M16C garnicht 
die Moeglichkeiten hatten seriell geflash zu werden wenn der Anwender 
das nicht in seiner eigenen Firmware vorgesehen hatte. Die konnte man 
damals nur parallel flashen.

Olaf

von Joachim M. (jmlaser)


Bewertung
1 lesenswert
nicht lesenswert
Ich habe zwischen den Jahren 2000 und 2008 den M16C eingesetzt.
Der "FGAFP" ist eine frühere Version mit 16MHz, später gab es den 
"FGPFP" mit PLL und 24MHz.
Alle wurden seriell programmiert. Parallel ging auch, habe ich aber nie 
gemacht.
Das große Problem: Die M16C hatten kein Fusebit zum Ausleseschutz, 
sondern eine Folge von 8 Hex-Zahlen (eine Art von Zugangscode).
Und diese haben immer wieder mal gesponnen. Ab und an war es fast 
unmöglich, auf den Chip zu kommen. Musst man manchmal erst mehrmals 
löschen (Zugangscode wird dann komplett zu FF). Oft ging es dann 
plötzlich.
Vielleicht war es auch ein Bug in der Software des Programmers (Segger).
Ansonsten hatte ich nie Probleme mit den M16C. Habe die Tausendefach 
verbaut.
Auf den Bootloader, der ab Werk im M16C ist, kann man nicht mit dem 
seriellen Programmer zugreifen, nur mit einem parallelen Programmer. 
Auch nicht aus Versehen löschen.

Gruß

Joachim

von Til S. (Firma: SEGGER) (til_s)


Bewertung
1 lesenswert
nicht lesenswert
Joachim M. schrieb:
> Das große Problem: Die M16C hatten kein Fusebit zum Ausleseschutz,
> sondern eine Folge von 8 Hex-Zahlen (eine Art von Zugangscode).
> Und diese haben immer wieder mal gesponnen. Ab und an war es fast
> unmöglich, auf den Chip zu kommen. Musst man manchmal erst mehrmals
> löschen (Zugangscode wird dann komplett zu FF). Oft ging es dann
> plötzlich.

Ungefähr zu gleichen Zeit habe ich auch zuviel mit M16C gemacht und 
kenne daher das Problem zu genüge... selbst wenn man den Code wusste hat 
es nicht immer funktioniert.

Joachim M. schrieb:
> Vielleicht war es auch ein Bug in der Software des Programmers (Segger).

Nicht das ich wüsste aber könnte vor meiner Zeit hier gewesen sein. 
Hatte das Problem aber auch schon vor SEGGER als ich mit einem einfachen 
seriellen Adapter den M16C bespielt habe.

Ich kann mal schauen ob ich zuhause noch diesen Programmieradapter 
finde. Vielleicht hilft der.

von H.Joachim S. (crazyhorse)


Bewertung
0 lesenswert
nicht lesenswert
Falls die Programmierverbindung über Optokoppler läuft, wären die auch 
einen Blick wert. Die Dinger altern.

von Joachim M. (jmlaser)


Bewertung
0 lesenswert
nicht lesenswert
Til S. schrieb:
> Nicht das ich wüsste aber könnte vor meiner Zeit hier gewesen sein.
> Hatte das Problem aber auch schon vor SEGGER als ich mit einem einfachen
> seriellen Adapter den M16C bespielt habe.

Ich kenne nur dieses Programmiergerät.
Wie gesagt, genau nachvollziehen konnte ich es nicht. Aber da es ja 
diese Programmiergeräteserie für sehr viele Mikrokontroller gab, könnte 
es schon sein, dass diese "spezielle Eigenheit" des M16C nicht von der 
Programmiersoftware abgefangen wurde. Vielleicht ein Timingproblem des 
M16C.
Jedenfalls gab es das Problem niemals, wenn dieser Code unbenutzt 
gelassen wurde. Nur wenn man ihn einsetzte, konnte es eine Überaschung 
geben.
Das dumme ist eben, dass man ungern ein Produkt mit einem offenen 
Kontroller verkauft.

Irgendwie war diese Codesicherung seitens des M16C sowieso nicht ganz 
ausgereift. Mein Produkt wurde damals in China gehackt und 
nachproduziert. Bei Nachfolgeprodukten mit ARM-Kobntrollern ist das 
nicht passiert.
Kann nun Zufall sein, aber naja..

Ich habe das Programmiergerät noch (Windows 98 Rechner) und könnte 
theoretisch den o.g. Kontroller programmieren. Allerdings scheint es 
sich dabei  nicht um das normale 10polige Interface zu handeln, sondern 
um 8 Pins.
Da müsste man erst wieder die Belegung herausmessen.

Gruß

Joachim

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Hatte das Problem aber auch schon vor SEGGER als ich mit einem einfachen
> seriellen Adapter den M16C bespielt habe.

Also ich kann mich an keine keine besonderen Probleme bei Flashen 
erinnern. Ich hab immer den E8 (der grosse schwarze) und spaeter den E8a 
(der kleine rot/weisse) verwendet.
Ich meine aber mal irgendwo gelesen zu haben das die irgendwann mal die 
Interpretation der Bits geaendert haben, also 0xff soll dann 0x00 
gewesen sein.

Allerdings greift der E8 ja normalerweise syncron auf die Bausteine zu. 
Ich hab teilweise auch nur ueber einen Adapter an der seriellen 
Schnittstelle geflasht und ich koennte mir vorstellen das nicht jede 
Baudrate mit jedem Quarz am Controller funktioniert.


Olaf

von Egon P. (lami1960)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich danke einmal für die Informationen und Hilfestellungen.
Ich hab mir gerade die 8 polige Steckerleiste angesehen und die 
Verbindungen gehen direkt zu folgenden Anschlüssen am Controller.
Vcc, 2x Vss,  Reset, Txd1, Rxd1, Hold, CNVss. Ich hoffe ich hab das 
richtig herausgemessen.
Meine Frage: Könnte eine serielle Beschaltung wie oben im Link von 
„Pegel“ beschrieben über TTL Wandler funktionieren? Software von M16C 
Flasher oder kann ich mir die Arbeit sparen? Ich habe leider kein 
originales Programmiergerät und eines zu kaufen zahlt sich dann eher 
nicht aus....Danke.

von Dieter (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Egon P. schrieb:
>
> Meine Frage: Könnte eine serielle Beschaltung wie oben im Link von
> „Pegel“ beschrieben über TTL Wandler funktionieren? Software von M16C
> Flasher oder kann ich mir die Arbeit sparen? Ich habe leider kein
> originales Programmiergerät und eines zu kaufen zahlt sich dann eher
> nicht aus....Danke.

Ein M16C lässt sich problemlos z.B. mit dem M16C-Flasher 
(https://m16c.mikrokopter.de/Download.43.0.html) über die serielle 
Schnittstelle programmieren (man braucht natürlich einen Pegelwandler). 
Dazu müssen beim Reset ein paar Pins den richtigen Pegel haben (soweit 
ich mich erinnere CNVss -> "High", Hold -> "Low", zur Sicherheit im 
Datenblatt des jeweiligen M16C nachschauen). Falls die Code ID gesetzt 
ist sollte man diese kennen.

von Egon P. (lami1960)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, danke. Kann sein, dass diese Beschaltung  der Pins sowieso 
richtig vorhanden sind und der Controller „immer bereit“ für das 
überschreiben der Firmware ist. Im Normalfall kann man die Firmware über 
USB ohne irgendeiner Änderung überschreiben (Leiterplatte ist fix über 
den USB Anschluss mit dem PC verbunden). Entschuldige meine Unwissenheit 
im diesem Bereich. Danke.

: Bearbeitet durch User
von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Egon P. (lami1960)


Bewertung
0 lesenswert
nicht lesenswert
Ich werde das nächste Woche mal testen und berichten. LG

von Dieter (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Egon P. schrieb:
> Kann sein, dass diese Beschaltung  der Pins sowieso
> richtig vorhanden sind und der Controller „immer bereit“ für das
> überschreiben der Firmware ist.

Ziemlich sicher nicht. Die Pegel an den beiden Pins signalisieren dem
M16C dass er im ROM Bootloader bleiben soll damit man ihn gegebenenfalls
programmieren kann. Wenn diese Pegel nicht stimmen wird das 
User-Programm ausgeführt.

von Olaf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> Ziemlich sicher nicht. Die Pegel an den beiden Pins signalisieren dem

Man muss da unterscheiden zwischen Bootloader von Renesas wo du recht 
hast und einem vom Anwender geschriebenen Bootloader. Letzerer prueft 
vermutlich erstmal die Seriennummer der Firmware bevor er sie startet. 
Das erkennt der OP aber daran ob er bisher mit einem einem Renesas-Tool 
Hexfiles oder Binfiles geflasht hat oder mit einem speziellen 
FirmwareUpdatetool vom Anwender gearbeitet hat. Und wenn letzeres der 
Falls war dann hat er hoffentlich auch eine Firmware in einem Format mit 
dem der Renesas-Flasher etwas anfangen kann. .-)

Olaf

von Dieter (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Olaf schrieb:
>
> Man muss da unterscheiden zwischen Bootloader von Renesas wo du recht
> hast und einem vom Anwender geschriebenen Bootloader.

Warum denkst Du habe ich "ROM Bootloader" geschrieben? Auf die 
verschiedenen Aspekte eines "User-Bootloaders" bin ich bewusst nicht 
eingegangen weil sich aus den bisherigen Information wenig dazu sagen 
lässt.

Wenn man eine Blick auf die Update-Datei werfen könnte, die programmiert 
werden soll, könnte man eventuell mehr dazu sagen.

von Dieter (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Joachim M. schrieb:
>
> Irgendwie war diese Codesicherung seitens des M16C sowieso nicht ganz
> ausgereift. Mein Produkt wurde damals in China gehackt und
> nachproduziert.

Die ersten Versionen des ROM Bootloader des M16C hatten die Prüfung der 
Code-ID nicht sauber gemacht, man konnte anhand der Antwortzeit auf das 
"Unlock" Kommando erkennen ob ein einzelnes Byte passt. Damit braucht 
man nur noch maximal 7 x 256 Versuche um die 7 Byte der Code-ID 
herauszubekommen. Dieses Problem wurde aber relativ bald behoben.

Natürlich gibt es noch andere Ansätze um die Code-ID zu umgehen, je nach 
dem wie viel Aufwand man reinsteckt.

von Egon P. (lami1960)


Bewertung
2 lesenswert
nicht lesenswert
Hallo, habe es heute versucht. Angeschlossen über TTL Wandler den Rest 
beschalten wie Dieter es beschrieb ( über 8 polige Steckerleiste). Siehe 
da- es funktionierte. Bootloader wurde nach Reset angezeigt. ID Nummern 
FF.... eingegeben. Mit Mot Datei programmiert und läuft. Danke an alle! 
LG Egon

: Bearbeitet durch User

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]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.