Hi,
im working on the checksums for this old ecu´s. I think i got the first one:
def SummInt8(StartInt8, EndInt8, SearchBuffer, startValue):
summ = startValue
i = StartInt8
while i <= EndInt8 :
summ = (summ + SearchBuffer[i]) & 0xFFFF;
i += 1
return summ;
if( (str(inData).find("M5.4") != -1):
check1Init = 0
print("found M5.4")
elif(str(inData).find("M3.8") != -1) | (str(inData).find("M5.9") != -1):
check1Init = 0x4000
print("found M3.8 / M5.9")
else:
print("found no M3.x / M5.x string in data -> error")
return 0;
partSum = SummInt8(0x200, 0x3FF, inData, check1Init);
partSum = SummInt8(0x500, 0x1AFF, inData, partSum);
partSum = SummInt8(0x1C00, 0x1EFF, inData, partSum);
partSum = SummInt8(0x2020, 0xBEFF, inData, partSum);
partSum = SummInt8(0xC000, len(inData)-1, inData, partSum);
FileChks11 = inData[0xBF01] + (inData[0xBF00] << 8)
print(" calc Code chk1: ", hex(partSum), FileChks11 == partSum )
Small amounts of the code are not checked an i don´t know where the init value of 0x4000 in M3.8/ M5.9 comes from but its a start.
Does anyone know how the values on Addresses 0xBF02+0xBF03 and 0xBF04+0xBF05 are calculated?
Thanks in advance Prog7