Update IPC
Posted: 07 Apr 2019, 18:15
I recently updated a preFL Convers with UCDS and took a log of the MS-CAN.
HW: 8M2T-10849-VC
Calibration: 8M2T-10849-VE
FW (DID F188): Updated from 8M2T-14C026-CC to 8M2T-14C026-CE
ECU Software (DID F121) from 8M2T-14C026-EC to 8M2T-14C026-ED
Bootloader (SBL) used for Update 7M2T-14C025-AA
(The firmware-files could be downloaded here http://www.ucdsys.ru/calibration/ by enterind the partnumber)
The update-procedure in UCDS is given like this:
Inside the log the messages with ID 0x720 are send from UCDS to IPC and the answers from IPC to UCDS having ID 0x728.
The upload of the SBL starts in line 691 of the logfile, beginning with the green bytes: "46,718 720 8 13 FE 36 01 01 00 FF 71"
and ends in line 851: "46,923 720 8 2A 50 45 56 33 30 31 46" (Note: Byte 0x46 is not part of the image)
The binary part of the Firmware (*-CE) starts at line 968: "54,967 720 8 13 FE 36 01 7C C7 55 AA "
and ends in line 152.278: "22,454 720 8 28 C7 55 AA AA 55 C7 F0 "
And the ECU software (*-ED) starts in line 152.307: "42,817 720 8 13 FE 36 01 00 00 00 FF "
and ends in line 460.957: "35,872 720 8 24 EF EF EF 85 B6 24 CD "
This means all update setup (security mode) is done in the lines prior to 690 and i guess we can focus on ID 720, 728 there. Which in fact leaves only these lines:
From the used ID-Scheme i would think this is OBD2 protocol traffic. There the first byte is the "PCI" byte and tell us the number of bytes following. For example: "45,613 720 8 02 10 02 00 00 00 00 00 " means 2 bytes following.
The next byte is the "OBD SID" ("Service ID" or sometims called "Mode"). Here it is 0x10, which from this table https://www.obd-2.de/programmierer-tips.html means: "Initiate diagnose function".
The last byte in the first message, 0x02 is the "OBD PID", a kind of parameter for the mode.
The OBD2 standard defines that each request is answered by using the requested Service added a ACK or NAK flag in the requested service-ID. By adding 0x40 to the ID it tells us, "OK". So 0x10 becomes 0x50 in the answer, 0x27 becomes 0x67, and so on.
In the next request it uses 0x27 = Protected access.
At 46,703 things are changing. The first data bytes does not seem to have the length of data, but seem to be direct data somehow. From timecode 47,718 on, the binary image of the bootloader is send. As from the VBF files the length of the bootloader is 0x6CC which we find in this message: "46,706 720 8 21 00 00 00 06 CC 00 00 "
HW: 8M2T-10849-VC
Calibration: 8M2T-10849-VE
FW (DID F188): Updated from 8M2T-14C026-CC to 8M2T-14C026-CE
ECU Software (DID F121) from 8M2T-14C026-EC to 8M2T-14C026-ED
Bootloader (SBL) used for Update 7M2T-14C025-AA
(The firmware-files could be downloaded here http://www.ucdsys.ru/calibration/ by enterind the partnumber)
The update-procedure in UCDS is given like this:
Code: Select all
00:00:09.914: Requesting security mode...Please wait...
00:00:09:929: Security mode granted!
00:00:09:928: Loading Secondary Bootloader...
00:00:10:363: Secondary Bootloader successfully loaded and initialized.
00:00:10:427: Erasing flash...
00:00:10:431: Erasing flash block 1 from 1...
00:00:18:170: Erasing flash finished.
00:00:18:231: Programming flash block 1 from 1...
00:03:45:755: Checking...
00:03:55:549: Erasing flash...
00:03:55:557: Erasing flash block 1 from 1...
00:04:06:015: Erasing flash finished.
00:04:05:071: Programming flash block 1 from 1...
00:10:59:132: Checking...
00:11:19:315: Performing check routine procedure...
00:11:19:530: Reset modules...
00:11:19:639: All operations done.
The upload of the SBL starts in line 691 of the logfile, beginning with the green bytes: "46,718 720 8 13 FE 36 01 01 00 FF 71"
and ends in line 851: "46,923 720 8 2A 50 45 56 33 30 31 46" (Note: Byte 0x46 is not part of the image)
The binary part of the Firmware (*-CE) starts at line 968: "54,967 720 8 13 FE 36 01 7C C7 55 AA "
and ends in line 152.278: "22,454 720 8 28 C7 55 AA AA 55 C7 F0 "
And the ECU software (*-ED) starts in line 152.307: "42,817 720 8 13 FE 36 01 00 00 00 FF "
and ends in line 460.957: "35,872 720 8 24 EF EF EF 85 B6 24 CD "
This means all update setup (security mode) is done in the lines prior to 690 and i guess we can focus on ID 720, 728 there. Which in fact leaves only these lines:
Code: Select all
Time ID DLC Data Comment
45,613 720 8 02 10 02 00 00 00 00 00
45,624 728 8 06 50 02 00 19 01 F4 00
46,633 720 8 02 27 01 00 00 00 00 00
46,634 728 8 05 67 01 BA AB EF 00 00
46,637 720 8 05 27 02 42 6C 4B 00 00
46,641 728 8 02 67 02 00 00 00 00 00
46,703 720 8 10 0B 34 00 44 00 00 00
46,704 728 8 30 00 01 00 00 00 00 00
46,706 720 8 21 00 00 00 06 CC 00 00
46,710 728 8 04 74 20 03 FE 00 00 00
46,718 720 8 13 FE 36 01 01 00 FF 71
The next byte is the "OBD SID" ("Service ID" or sometims called "Mode"). Here it is 0x10, which from this table https://www.obd-2.de/programmierer-tips.html means: "Initiate diagnose function".
The last byte in the first message, 0x02 is the "OBD PID", a kind of parameter for the mode.
The OBD2 standard defines that each request is answered by using the requested Service added a ACK or NAK flag in the requested service-ID. By adding 0x40 to the ID it tells us, "OK". So 0x10 becomes 0x50 in the answer, 0x27 becomes 0x67, and so on.
In the next request it uses 0x27 = Protected access.
At 46,703 things are changing. The first data bytes does not seem to have the length of data, but seem to be direct data somehow. From timecode 47,718 on, the binary image of the bootloader is send. As from the VBF files the length of the bootloader is 0x6CC which we find in this message: "46,706 720 8 21 00 00 00 06 CC 00 00 "