Pages: 1 ... 5 6 [7] 8
Author Topic: MED 17 , EDC 17 EEPROM CHECKSUM  (Read 87798 times)
Davidik
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 7


« Reply #90 on: January 15, 2023, 07:26:21 AM »

37 00 0D B0 A3 83 00 00 BB BB 87 FC 02 78 07 47 14 06 98 81 01 00 24 60 28 00 08 00 00 40 26 23 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 56 2F A5 2A E5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 B1 0F 27 E0 B1 0F 27 00 00 00 00 00 00 00 00 00 00 00 00


I took another correct part and just can't get the correct value
Logged
Davidik
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 7


« Reply #91 on: January 15, 2023, 07:31:39 AM »

i get crc 02252E97
Logged
H2Deetoo
Sr. Member
****

Karma: +26/-1
Offline Offline

Posts: 255


« Reply #92 on: January 15, 2023, 10:35:34 AM »

Ah I get it ... I thought you already had it working just not that record, but I guess you cannot get any CRC to match using that editor tool function?

You have to understand that a CRC32 algorithm can have several different parameters, mainly the polynome, bit reflection (reversed) and final xoring.
And in this case Endianess is important because this algo is DWORD based.


Regards,
H2Deetoo
Logged
bluelighttube
Newbie
*

Karma: +0/-1
Offline Offline

Posts: 9


« Reply #93 on: January 16, 2023, 09:59:16 AM »

If I look at your screenshot the CRC has the last 2 bytes set to 0000. I think that the chance is small this would be true for a CRC, so I think for this ecu there is not CRC used in record 003E.
Same would be true for the previous record 003D where it is all 00000000.

Here is some 003E record which does have a valid CRC:

00011600  3E 00 99 A1 A1 0B 00 00 00 00 00 00 00 00 00 00  >.™¡¡...........
00011610  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00011620  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00011630  3D 00 0E 00 FF FF 00 00 AC B7 B8 C0 FF 0F FF 0F  =...ÿÿ..¬·¸Àÿ.ÿ.
00011640  FF 0F FF 0F 00 00 00 00 00 00 00 00 00 00 00 00  ÿ.ÿ.............
00011650  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00011660  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00011670  00 00 00 00 00 00 00 00 3F 00 00 00 0D 4A AB 78  ........?....J«x



Rgs H2Deetoo

I've validated with the genuine Winols eeprom checksum plugin and there is an additional 16bit checksum on blocks that do not have checksum2. I have tried several combinations of byte ranges/initial values/(word/dword) cs ranges and can't figure this one out.

Side note- I am able to accurately calculate CS1 and CS2. This "new" checksum that winols is correcting- I have no idea.

Logged
Davidik
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 7


« Reply #94 on: March 12, 2023, 04:11:04 AM »

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {

        static void Main(string[] args)
        {
            const UInt32 poly= 0xEDB88320;
            UInt32[] Data = {0x000009E2, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x00000000, 0x00000000, 0x00000000, 0x00000000,
                             0x0000796F, 0x00006FB1, 0x7C887C85};
            UInt32 ini = 0x00000036;
            UInt32 tmp1, tmp2;
            UInt32 crc = ini;
            int i = 0;
            Console.WriteLine(Data[0]);           
            while ( i <= Data.Length-1)
            {
                tmp1 = 0;
                tmp2 = crc & poly;

                for (int j = 0; j < 31; j++)
                {
                    tmp1 ^= ((tmp2 >> j) & 1);
                }

                crc = Data[i] ^ ((crc << 1) | tmp1);

                i = i + 1;
           
            }
           
            Console.WriteLine(crc.ToString("X2"));
            Console.ReadLine();

           
        }
   }
}

Friends can tell me where I'm making a mistake
Result : 984D7A99

INIT = 00000036
LENGTH = 0000001F
DATA: E20900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F790000B16F0000857C887C
CS1=78F2 -> OK
Report to moderator    Logged
« Last Edit: March 12, 2023, 04:48:40 AM by Davidik » Logged
H2Deetoo
Sr. Member
****

Karma: +26/-1
Offline Offline

Posts: 255


« Reply #95 on: March 13, 2023, 01:58:43 AM »

ADDR=000000 BLOCKID=0036, CS1=78F2 -> OK, CS2=7C887C85 -> OK

Looks to be just fine Smiley
Logged
STON75
Newbie
*

Karma: +1/-0
Offline Offline

Posts: 1


« Reply #96 on: March 23, 2023, 06:20:32 AM »

I'm also interested in creating an algorithm for calculating the Checksum on MEDC17, maybe you need to ask ChatGPT to understand a little better how to calculate it.  Grin
Logged
boxsport
Newbie
*

Karma: +0/-3
Offline Offline

Posts: 2


« Reply #97 on: June 28, 2023, 04:52:25 PM »

Hello guys.

Could anyone help me out calculating the checksums on the eeprom file for a ME17.9.21.1 from Kia?
I need to change VIN in this ECU, but i dont know how to calculate checksums.

I´m attaching Original file and modified file but the checksums need to be corrected

Any help?

Thanks
Logged
terminator
Sr. Member
****

Karma: +15/-4
Offline Offline

Posts: 425


« Reply #98 on: June 29, 2023, 02:57:58 PM »

welcome
Logged
Team dz
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #99 on: November 30, 2023, 12:41:51 PM »



Thank you i am solved all crc !

« Last Edit: December 02, 2023, 09:26:32 AM by Team dz » Logged
doot47
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #100 on: December 03, 2023, 10:33:37 AM »


Thank you i am solved all crc !



Great job my friend
can you send me your solution ...
Logged
doot47
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #101 on: December 06, 2023, 12:19:29 PM »

You can deduct the XOR with known values.
It is calculated from unique ID from EDC17 from OTP area, so the XOR result is unique for each EDC.
Hi,
how to calculate or extraction unique id from edc17 ?
Logged
Team dz
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #102 on: December 07, 2023, 04:36:31 PM »

GO TO STRING  FLACH  ADRSS:17F00

Slect :16 bit

This is id part otp
Logged
Team dz
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #103 on: December 08, 2023, 05:27:15 AM »

ALGO  SIMPLE CRC  IS:B382....OK
Logged
Team dz
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 5


« Reply #104 on: December 09, 2023, 03:23:58 PM »

All I know is that you take 16 bytes from that string and perform an operation xor
Logged
Pages: 1 ... 5 6 [7] 8
  Print  
 
Jump to:  

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Page created in 0.023 seconds with 16 queries. (Pretty URLs adds 0s, 0q)