BCM clonen

Ziel

Um die BCM-Hardware gegen eine andere auszutauschen muss man vor allem den Inhalt des BCM kopieren (aka „clonen“). Damit ist neben der allseits bekannten Fahrzeugkonfiguration (CCC) vor allem der sonst nicht zugreifbare Bereich mit den Schlüsselcodes gemeint, der E2-Flash.

:!: Diese Anleitung erfordert einiges an Elektronik Know-How und Werkzeug, sie ist nicht für Jedermann umsetzbar. Mit einem Fehler hat man sein BCM zu einem „Ziegelstein“ gemacht, also Vorsicht!

Benötigte Teile und Hilfsmittel

Vorbereitungen

Programmier-Software „Flash Development Tool“ (kurz „FDT“) in der Version 4.09 herunterladen und installieren.

:!: HINWEIS: Ich habe Stunden damit verbracht herauszufinden warum mein Aufbau beim schreiben des BCM immer abbrach. Durch Zufall fand ich heraus das mein Windows-Laptop (HP 850 G4 i7) den ich anfangs dazu verwendet hatte schlichtweg zu schnell war! Ich hatte es dann mit einem älteren Windows-Laptop versucht und mit dem hat es auf Anhieb geklappt. Solltest Du also diesbezüglich Probleme haben, versuche es mit einem älteren Gerät!

Umsetzung

Verwendete Begriffe:

Schritt 1) Ausbau des Quell-BCM

Zunächst wie hier beschrieben das BCM ausbauen. Anschließend das Gehäuse öffnen und die Platine entnehmen.

Schritt 2) Programmier-Pins vorbereiten

Auf der Rückseite der Platine befinden sich folgende Anschlusspunkte für die Programmierung:

An die markierten Stellen Leitungen oder Kontaktstifte anlöten. Hierzu vorher den recht dicken Schutzlack mit einem geeigneten Werkzeug vorsichtig abkratzen. Auf ihm hält kein Lot und er schmilzt auch nicht ohne weiteres beim löten.

Schritt 3) Programmier-Adapter anschließen

Die Schnittstelle des R32C ist ein einfacher UART. Man kann also praktisch jedes handelsübliche USB-zu-Serial Kabel für diese Zwecke verwenden. Hier ein paar Alternativen:

Variante USB-Kabel mit Dupont-Buchsen, ideal für den Steckbrett-Aufbau:

Auch diese „Bare-Bone“ Variante eignet sich gut für den Steckbrett-Aufbau:

Ein solches USB-Dongle ist ebenfalls recht günstig zu bekommen:

Folgende Verbindungen müssen hergestellt werden:

BCM-Pin Anschluss/Funktion
VCC (23) +5V Versorgungsspannung vom USB/UART-Adapter
CNVSS (16) CNVSS, wird dieser Pin mit +5V verbunden, geht das BCM nach einem Reset in den Programmiermodus (UART-Mode 2)
P5_0 (65) /CE (Chip-Enable), mit +5V verbinden
P6_4(43) BUSY-Signal, wird nicht verwendet
VSS (21) Masse für +5V/+12V Versorgungsspannung sowie UART-Adapter
P6_5 (42) SCLK, mit GND verbinden
P5_5 (54) /EPM, mit GND verbinden
/RESET (19) RESET-Signal, über Taster mit GND verbinden
RXD1 (40) Serielle Daten-Empfangsleitung vom BCM, mit TXD vom Adapter verbinden
TXD1 (38) Serielle Daten-Sendeleitung vom BCM, mit RXD vom Adapter verbinden
TLE7263E (17) +12V Versorgungsspannung vom Labornetzteil

Schritt 4) Programmierumgebung vorbereiten

FDT starten und neuen Workspace anlegen:

MCU-Typ auswählen (hierzu am besten die Langbezeichnung „R5F64524“ eintippen dann erscheint direkt der Richtige). Den ersten Eintrag (ohne _ECC) anwählen und bestätigen:

Danach wählt man den Adapter-Typ. Bei eingestecktem FDTI-Adapter/Kabel wird dieser direkt vorausgewählt. Ggf. muss man den richtigen COM-Port aber einstellen:

Dann noch die „Protection“ auf „None“ stellen:

und das Projekt ist angelegt:

Nun das „Zauberstab“ Icon (1) in der Menüleiste anklicken um die Zusatzfunktionen zu aktivieren:

Und unten im Reiter „Communications“ (2) per Doppelklick auf „Auto Send ID“ (3) den Passwort-Dialog öffnen und alle Bytes auf „FF“ einstellen:

Schritt 5) Quell-BCM auslesen

  1. BCM mit Betriebsspannung versorgen (+12V)
  2. Über den Schalter den „UART-Mode 2“ wählen (CNVSS auf +5V)
  3. Einmal kurz RESET auf LOW ziehen um den Bootloader zu starten
  4. Im FDT den „Connect“ Button drücken:
  5. Wenn alles klappt sieht man im Meldungsfenster rechts unten die Verbindung und es erscheint noch ein Dialog ob er den Chip komplett entsperren soll. Den belassen wir erstmal auf „Nein“ weil wir ja zunächst nur auslesen wollen:
  6. Auf den „Upload“ Button klicken (:i: hierbei ist mit „Upload“ die Übertragung vom Chip auf den PC gemeint) und der Lesevorgang wird gestartet:
  7. Es erscheint ein Dialog zur Auswahl des Flash-Bereiches. Da wählen wir aber den Reiter „Tree“ und „Select All“:


  8. Anschließend „Upload“ klicken und den Lesefortschritt im Fenster beobachten:

  9. Nachdem der Download beendet wurde kann man die einzelnen Teile als Datei abspeichern. Hier wählen wir das „MOT“ Format, damit neben den Daten auch gleich deren Speicherbereichsadressen mit abgelegt werden, was einen späteren Flash im anderen BCM erleichtert:
    <FOTO>
  10. +12V Versorgungsspannung abschalten und Adapter abziehen

Am Ende haben wir nun das komplette Flash vom BCM auf der Festplatte.

Schritt 6) Ziel-BCM beschreiben

  1. ggf. FDT starten und den Workspace mit den drei Flash-Speicherbereichen einladen
  2. Programmieradapter und Versorgungsspannung and Ziel-BCM anschließen
  3. Dieses über den Schalter in den „UART-Mode 2“ bringen (CNVSS auf +5V)
  4. Einmal kurz RESET auf LOW ziehen um den Bootloader zu starten
  5. Im FDT den „Connect“ Button drücken:

…TODO…

Hier das Protokoll eines erfolgreich programmierten BCMs (R32C Flash):

Flash Development Toolkit and flash programming components
are provided without support
OS: Windows 10 (Windows 8) [Non-Admin]
FDT API initialised: version 4, 09, 02, 000
FCF Settings Applied: R5F64524, (C:\Program Files (x86)\Renesas\FDT4.09\kernels\ProtD\R5F64524\Renesas\1_0_00\)
   This kernel will set the E2 Data Flash as ECC OFF
Clock Frequency (External) = N/A, Clock Mode = N/A, CKM = N/A, and CKP = N/A
Connecting to device 'R5F64524' on 'COM10'
Configuration:
'BOOT Mode' connection - using emulated interface
Opening port 'COM10' ...
Loading Comms DLL
Loaded Comms DLL
Initiating BOOT SCI sequence
Attempting 9600
Changing baud rate to 57600 bps
ID code check successful
E2 Data Flash initialised: ECC Off
Connection complete
All blocks marked as unknown written status

Erasing 1 block from device
Erasing... 'E2Data0'...
Erased block E2Data0 (0x00062000 - 0x00063FFF)
Erase complete

Reading 8 K from device (0x00062000 - 0x00063FFF)
Successfully read 8192 Bytes from device
8 K read from device in 137 seconds
  [Raw Checksum: 0x001FE000]
ID Code = 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 

Opening file C:\Users\CarGo\Downloads\bcm-clone\oldBCM.DDI
   File loaded: 0xFFF40000 -> 0xFFFFFFFF  [User Flash]
   File loaded: 0x00060000 -> 0x00061FFF  [Data Flash]
   File loaded: 0x00062000 -> 0x00063FFF  [E2 Data Flash]
ID Code = 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 

Processing file :"C:\Users\CarGo\Downloads\bcm-clone\oldBCM.DDI"
Operation on User Flash
Writing image to device... [0xFFF40000 - 0xFFFB94FF]
Writing image to device... [0xFFFB9800 - 0xFFFBE3FF]
Writing image to device... [0xFFFDFF00 - 0xFFFE01FF]
Writing image to device... [0xFFFE0200 - 0xFFFE02FF]
Writing image to device... [0xFFFE0300 - 0xFFFE20FF]
Writing image to device... [0xFFFE2100 - 0xFFFE21FF]
Writing image to device... [0xFFFE2400 - 0xFFFEEFFF]
Writing image to device... [0xFFFF8000 - 0xFFFFA6FF]
Writing image to device... [0xFFFFF800 - 0xFFFFFCFF]
Writing image to device... [0xFFFFFF00 - 0xFFFFFFFF]
Data programmed at the following positions:
 0xFFF40000 - 0xFFFB94FF      Length : 0x00079500
 0xFFFB9800 - 0xFFFBE3FF      Length : 0x00004C00
 0xFFFDFF00 - 0xFFFE01FF      Length : 0x00000300
 0xFFFE0200 - 0xFFFE02FF      Length : 0x00000100
 0xFFFE0300 - 0xFFFE20FF      Length : 0x00001E00
 0xFFFE2100 - 0xFFFE21FF      Length : 0x00000100
 0xFFFE2400 - 0xFFFEEFFF      Length : 0x0000CC00
 0xFFFF8000 - 0xFFFFA6FF      Length : 0x00002700
 0xFFFFF800 - 0xFFFFFCFF      Length : 0x00000500
 0xFFFFFF00 - 0xFFFFFFFF      Length : 0x00000100
575.25 K programmed in 111 seconds
Device CRC = 0xD933, File CRC = 0xD933 (range 0xFFF40000-0xFFFFFFFF) -> CRC Check OK

Operation on Data Flash
Writing image to device... [0x00060000 - 0x000600FF]
Writing image to device... [0x00061000 - 0x000611FF]
Data programmed at the following positions:
 0x00060000 - 0x000600FF      Length : 0x00000100
 0x00061000 - 0x000611FF      Length : 0x00000200
768 Bytes programmed in 1 seconds
Device CRC = 0x2819, File CRC = 0x2819 (range 0x00060000-0x00061FFF) -> CRC Check OK

Operation on E2 Data Flash
Writing image to device... [0x00062000 - 0x0006206F]
Writing image to device... [0x0006207A - 0x0006208F]
Writing image to device... [0x0006209A - 0x000620AF]
Writing image to device... [0x000620BA - 0x000620CF]
Writing image to device... [0x000620DA - 0x0006211F]
Writing image to device... [0x00062128 - 0x0006213F]
Writing image to device... [0x00062148 - 0x0006219F]
Writing image to device... [0x000621A8 - 0x000621BF]
Writing image to device... [0x000621C8 - 0x000621EF]
Writing image to device... [0x000621FA - 0x0006220F]
Writing image to device... [0x0006221A - 0x0006222F]
Writing image to device... [0x0006223A - 0x0006224F]
Writing image to device... [0x0006225A - 0x0006225F]
Writing image to device... [0x0006227C - 0x0006227F]
Writing image to device... [0x0006229C - 0x000622AF]
Writing image to device... [0x000622BA - 0x000622CF]
Writing image to device... [0x000622DA - 0x000622EF]
Writing image to device... [0x000622FA - 0x0006230F]
Writing image to device... [0x0006231A - 0x0006235F]
Writing image to device... [0x0006237C - 0x0006237F]
Writing image to device... [0x0006239C - 0x000623AF]
Writing image to device... [0x000623BA - 0x000623CF]
Writing image to device... [0x000623DA - 0x000623EF]
Writing image to device... [0x000623FA - 0x0006240F]
Writing image to device... [0x0006241A - 0x0006241F]
Writing image to device... [0x0006243C - 0x0006243F]
Writing image to device... [0x0006245C - 0x0006246F]
Writing image to device... [0x0006247A - 0x0006248F]
Writing image to device... [0x0006249A - 0x0006255F]
Writing image to device... [0x0006257C - 0x0006257F]
Writing image to device... [0x0006259C - 0x0006369F]
Writing image to device... [0x000636BE - 0x000636BF]
Writing image to device... [0x000636DE - 0x00063B5F]
Data programmed at the following positions:
 0x00062000 - 0x0006206F      Length : 0x00000070
 0x0006207A - 0x0006208F      Length : 0x00000016
 0x0006209A - 0x000620AF      Length : 0x00000016
 0x000620BA - 0x000620CF      Length : 0x00000016
 0x000620DA - 0x0006211F      Length : 0x00000046
 0x00062128 - 0x0006213F      Length : 0x00000018
 0x00062148 - 0x0006219F      Length : 0x00000058
 0x000621A8 - 0x000621BF      Length : 0x00000018
 0x000621C8 - 0x000621EF      Length : 0x00000028
 0x000621FA - 0x0006220F      Length : 0x00000016
 0x0006221A - 0x0006222F      Length : 0x00000016
 0x0006223A - 0x0006224F      Length : 0x00000016
 0x0006225A - 0x0006225F      Length : 0x00000006
 0x0006227C - 0x0006227F      Length : 0x00000004
 0x0006229C - 0x000622AF      Length : 0x00000014
 0x000622BA - 0x000622CF      Length : 0x00000016
 0x000622DA - 0x000622EF      Length : 0x00000016
 0x000622FA - 0x0006230F      Length : 0x00000016
 0x0006231A - 0x0006235F      Length : 0x00000046
 0x0006237C - 0x0006237F      Length : 0x00000004
 0x0006239C - 0x000623AF      Length : 0x00000014
 0x000623BA - 0x000623CF      Length : 0x00000016
 0x000623DA - 0x000623EF      Length : 0x00000016
 0x000623FA - 0x0006240F      Length : 0x00000016
 0x0006241A - 0x0006241F      Length : 0x00000006
 0x0006243C - 0x0006243F      Length : 0x00000004
 0x0006245C - 0x0006246F      Length : 0x00000014
 0x0006247A - 0x0006248F      Length : 0x00000016
 0x0006249A - 0x0006255F      Length : 0x000000C6
 0x0006257C - 0x0006257F      Length : 0x00000004
 0x0006259C - 0x0006369F      Length : 0x00001104
 0x000636BE - 0x000636BF      Length : 0x00000002
 0x000636DE - 0x00063B5F      Length : 0x00000482
6.36 K programmed in 53 seconds
Image written to device