Hello!
I have same problems with eeprom and the checksum verification, can sombody help me to turn off the checksum validation on the attached dump?
It's from audi RS4_2,7TT
thanks a lot
Hello, apologies for flying in from left field. I spent the day looking at eeprom data,
specifically for ME7.8. I found some patterns that might be of interest (or might not).
I checked the quoted file above and it seemed to match the pattern, specifically for
the last 2 bytes of each line. Here's the findings:
The first 14 bytes are data, the last 2 bytes seem to be checksums (sort of).
Definition: alpha = row_addr -> right shifted by 1 position
Example: if row address starts at 140h, then alpha = 14h
Rule 1:
======
If 14 data bytes are all 00h:
byte_15 = FF - alpha + 1
byte_16 = FF
Example:
start addr
1A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E6 FF
alpha = row_addr -> right shifted by 1 position = 1A0h - > 1Ah
Byte_15 = FF - 1A + 1 = E6h
Rule 2
======
Row has data
Definition:
sum14 = sum of row's first 14 bytes
sum14_2c = 2's complement of sum14, then only use lower 3 bytes
End definition...
Last 2 bytes:
byte_15 = lower_2_digits(sum14_2c) - alpha
byte_16(high nibble) = F
byte_16(low nibble) = upper_digit(sum14_2c)
Example:
row_addr 14 data bytes Byte_15 Byte_16
-------- ----------------------------------------- ------ ------
010 05 01 01 00 84 1C 00 00 00 00 69 C1 00 A5 89 FD
alpha = row_addr -> right shifted by 1 position = 010h -> 01h
sum14 = sum of row's first 14 bytes = 276h
sum14_2c = 2's complement of sum14 -> only use lower 3 bytes = FD8A -> D8Ah
byte_15 = lower_2_digits(sum14_2c) - alpha = 8A - 01 = 89h
byte_16(high nibble) = F
byte_16(low nibble) = upper_digit(sum14_2c) = D
Unknowns:
========
None of this seems to apply to first 16 bytes of eeprom.
Apparently a whole row of FFh is ok
That's it
.