macxxx
|
|
« Reply #30 on: December 06, 2016, 01:55:57 AM »
|
|
|
Ok i see that it wont be that easy , a friend asked me if i can do it...i see i dont have tools , i thought that there was a simple chip that i can desolder and read...
|
|
|
Logged
|
|
|
|
gmgunderground
Newbie
Karma: +0/-0
Offline
Posts: 5
|
|
« Reply #31 on: December 08, 2016, 04:32:03 AM »
|
|
|
To read eeprom on TriCore you have to put ecu in boot mode, then load a CAN boot loader, initialize cpu, then you can read the eeprom portion of memory. Or the alternative is to use a commercial product ready to go
Inviato dal mio GT-I9505 utilizzando Tapatalk
|
|
|
Logged
|
|
|
|
macxxx
|
|
« Reply #32 on: December 08, 2016, 07:09:50 AM »
|
|
|
Thank you for your info , it's not for me..... i don't do it commercially so I will attack cluster epprom
|
|
|
Logged
|
|
|
|
_nameless
|
|
« Reply #33 on: January 01, 2017, 04:35:20 AM »
|
|
|
What he means is he can steal all of your work, you just need to email it to him
|
|
|
Logged
|
Giving your mom a tuneup
|
|
|
Buzzard
Jr. Member
Karma: +7/-0
Offline
Posts: 28
|
|
« Reply #34 on: January 01, 2017, 10:58:22 AM »
|
|
|
Marty he also goes by the names ecu-tuners.net or dpfsolutions.net or gt-tuning.net
Sent from my SM-N910F using Tapatalk
|
|
|
Logged
|
|
|
|
MarchCat
Newbie
Karma: +0/-0
Offline
Posts: 2
|
|
« Reply #35 on: June 23, 2017, 06:14:12 AM »
|
|
|
Hi. I need your help! Example block : 36 00 F2 78 E2 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6F 79 00 00 B1 6F 00 00 85 7C 88 7C F2 78 - is CS1(half word) ? 36 00 - is id block ? CRC32 or CRC16 ? initial value for cs1 ? 0x00003600 or 0x36000000 ? 85 7C 88 7C - is CS ? algo is CRC32 ? with polynom 0xEDB88320 ? initial value is 0xB16F0000 or 0x0000B16F ? My code for CRC32 (C#) : public static UInt32 Calculate(byte[] Value, UInt32 ini) { UInt32[] CRCTable = new UInt32[256]; for (int i = 0; i < 256; i++) { UInt32 entry = (UInt32)i; for (int j = 0; j < 8; j++) if ((entry & 1) == 1) entry = (entry >> 1) ^ 0xEDB88320; else entry = entry >> 1; CRCTable[i] = entry; }
UInt32 CRCVal = ini ; for (int i = 0; i < Value.Length; i++) { CRCVal = (CRCVal >> 8) ^ CRCTable[(CRCVal & 0xff) ^ Value[i]]; } CRCVal ^= 0xFFFFFFFF; // NOT UInt32 Result = CRCVal;
return Result; }
|
|
|
Logged
|
|
|
|
kuebk
Jr. Member
Karma: +3/-0
Offline
Posts: 47
|
|
« Reply #36 on: June 23, 2017, 01:59:02 PM »
|
|
|
What's the point of keeping 10 different versions of same block? Which version is used by ECU, always latest?
|
|
« Last Edit: June 23, 2017, 02:16:56 PM by kuebk »
|
Logged
|
VAG immo solutions (clone, immo off, repair) MEDC17, SIMOS, SDI, BCM2, ELV, DQ/DL/VL gearboxes, INVCON, MED9.x crypto
|
|
|
ozzy_rp
Jr. Member
Karma: +16/-1
Offline
Posts: 49
|
|
« Reply #37 on: July 03, 2017, 10:21:15 PM »
|
|
|
What's the point of keeping 10 different versions of same block? Which version is used by ECU, always latest?
. Flash has a limited number of erase-write cycles. ECU distributes writing of blocks throughout the flash.
|
|
|
Logged
|
|
|
|
kolocar
Newbie
Karma: +0/-0
Offline
Posts: 1
|
|
« Reply #38 on: September 03, 2017, 12:01:48 AM »
|
|
|
Hi. I need your help! Example block : 36 00 F2 78 E2 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6F 79 00 00 B1 6F 00 00 85 7C 88 7C F2 78 - is CS1(half word) ? 36 00 - is id block ? CRC32 or CRC16 ? initial value for cs1 ? 0x00003600 or 0x36000000 ? 85 7C 88 7C - is CS ? algo is CRC32 ? with polynom 0xEDB88320 ? initial value is 0xB16F0000 or 0x0000B16F ? My code for CRC32 (C#) : public static UInt32 Calculate(byte[] Value, UInt32 ini) { UInt32[] CRCTable = new UInt32[256]; for (int i = 0; i < 256; i++) { UInt32 entry = (UInt32)i; for (int j = 0; j < 8; j++) if ((entry & 1) == 1) entry = (entry >> 1) ^ 0xEDB88320; else entry = entry >> 1; CRCTable[i] = entry; }
UInt32 CRCVal = ini ; for (int i = 0; i < Value.Length; i++) { CRCVal = (CRCVal >> 8) ^ CRCTable[(CRCVal & 0xff) ^ Value[i]]; } CRCVal ^= 0xFFFFFFFF; // NOT UInt32 Result = CRCVal;
return Result; }
Maybe first calc crc32 (08-7B)then half word(cs1),but i don't know how calc it,so who can offer more useful advice please?thx BR Kolo
|
|
|
Logged
|
|
|
|
Ionut
Full Member
Karma: +4/-3
Offline
Posts: 89
|
|
« Reply #39 on: September 21, 2017, 02:01:17 PM »
|
|
|
Hi all, i`ve tried every possible combination and nothing seems to work.... For example this block 08 00 EB 04 94 53 00 00 FF B8 71 E0 EA 30 D0 E4 B1 8E 05 E4 35 AF 3E F2 8E 6A 09 9C A7 EF 80 E7 FC AE AE 56 AA 80 01 00 57 41 55 5A 5A 5A 38 54 37 42 41 30 39 37 36 36 31 48 EF E0 24 BA 6C 05 30 02 B6 6C 7D 43 97 A4 F9 B1 EF BF F7 74 FB 67 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C1 4E 00 00 56 8D F6 1C Tried with CRC32 with poly 0xEDB88320, initial value 0xC14E0000, bytes from 8 to 7F (119 bytes) and result is D7A854D and it should be 56 8D F6 1C. With initial value just first 2 bytes (0xC14E), result is F219CCDD, with fist 2 bytes reversed, result is AA79A104 and with initial value 0x4EC10000 (each 2 bytes reversed) result is 418F9500 Here is the C# code used for CRC32: using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace FwpCrc { class CRC32 { uint[] table;
public uint ComputeChecksum(byte[] bytes, uint initialValue) { uint crc = initialValue; // uint crc = 0xffffffff; for(int i = 0; i < bytes.Length; ++i) { byte index = (byte)(((crc) & 0xff) ^ bytes[i]); crc = (uint)((crc >> 8) ^ table[index]); } return ~crc; }
public CRC32() { uint poly = 0xEDB88320; table = new uint[256]; uint temp = 0; for(uint i = 0; i < table.Length; ++i) { temp = i; for(int j = 8; j > 0; --j) { if((temp & 1) == 1) { temp = (uint)((temp >> 1) ^ poly); }else { temp >>= 1; } } table[i] = temp; } } } } I`m doing something wrong?
|
|
|
Logged
|
|
|
|
IamwhoIam
|
|
« Reply #40 on: September 22, 2017, 03:08:56 AM »
|
|
|
Buy WinOLS and Tricore checksum plugin, and then eeprom checksums won't be a problem anymore at all, apart from 1793 Bosch MEDC17.
|
|
|
Logged
|
I have no logs because I have a boost gauge (makes things easier)
|
|
|
Ionut
Full Member
Karma: +4/-3
Offline
Posts: 89
|
|
« Reply #41 on: September 22, 2017, 03:53:22 AM »
|
|
|
I want to learn how to do it, not buy something that already exists!
|
|
|
Logged
|
|
|
|
cherry
|
|
« Reply #42 on: September 22, 2017, 04:02:23 AM »
|
|
|
Buy WinOLS and Tricore checksum plugin, and then eeprom checksums won't be a problem anymore at all, apart from 1793 Bosch MEDC17.
Really, did they fix VAG EDC17 eeprom checksum? I think it´s wrong and miss something
|
|
|
Logged
|
|
|
|
H2Deetoo
|
|
« Reply #43 on: September 23, 2017, 02:56:08 PM »
|
|
|
Not all blocks have a valid 32 bit checksum.
|
|
|
Logged
|
|
|
|
Ionut
Full Member
Karma: +4/-3
Offline
Posts: 89
|
|
« Reply #44 on: October 25, 2017, 02:35:35 AM »
|
|
|
With help of a great man, succeeded to build correct checksum on EDC17 EEPROM. Informations posted here are correct, my approach was not
|
|
|
Logged
|
|
|
|
|