Hi all,
My father and brother are building a car based on a 4.2L V8 from a S6 and Porsche brakes. Not surprisingly given this setup, the ECU throws
P1649 - 35-00 - Missing Message from ABS Controller. The specific firmware is 4D0907559D and thus identical to the one posted by hopsis (
http://nefariousmotorsports.com/forum/index.php?topic=4296.0). Since I have a background in computer science, I've offered to help them to take care of modifying the ECU to get rid of this error.
Thanks to the invaluable information on this forum, it's clear to me that the neatest way would be to change CW_CAN_R (as opposed to masking DTC tables or emulating ABS messages on the canbus). Unfortunately, CW_CAN_R is not in the definition file for the 4D0907559D and I'm having a hard time locating it. Does someone have an idea where it might be located in the ECU file, or what would be a reliable procedure to find it?
To give some background information (and to hopefully avoid claims that I want spoonfeeding
): the approach I have taken so far is to check the context of memory accesses for ECU files for which CW_CAN_R is known. As expected, these often take the form of moving the content from the memory location to a register, then a binary and, and finally a conditional jump. For example,
mov r5, [r4+2C7Ah]
and r5, #4
jmpr cc_NZ, loc_82C51E
Based on the common patterns I formed a couple of regular expressions to locate potential candidates. This strategy works quite well on the ECU files I have considered (e.g., in 4D0907559
E the address should be 0x133ec), but I keep on drawing a blank for 4D0907559D. The patterns I found seem to depend on ME version (at least between ME7.1 and ME7.1.1), but I created sets for either version.
I only started using IDA now and have no real experience in reverse engineering, so some help or further suggestions would be highly appreciated.