Where are the segments in a 411 OS?

They go by many names, P01, P59, VPW, '0411 etc. Also covering E38 and newer here.
Post Reply
User avatar
NSFW
Posts: 679
Joined: Fri Feb 02, 2018 3:13 pm

Where are the segments in a 411 OS?

Post by NSFW »

I've read that there are segments for engine, transmission, speedometer, etc, but I haven't seen anything about where those segments are defined.

Can any tell me, or point me to, the start address and length (or start and end address) of each segment?

Right now it would be useful for disassembly, but in the future it would also be useful for creating a tool to swap segments.

Thanks!
Please don't PM me with technical questions - start a thread instead, and send me a link to it. That way I can answer in public, and help other people who have the same question. Thanks!
Charlescrown
Posts: 1831
Joined: Sat Aug 06, 2011 7:58 am
cars: V8 VR Commodore BT1
LB Lancer 2L turbo & Delco
Starion TBI with Delco
Mitsubishi Lancer EVO4 track car
NA MX5
3 vintage motor bikes
Location: Padstow NSW

Re: Where are the segments in a 411 OS?

Post by Charlescrown »

I downloaded a bin file and xdf. I don't know if going through the xdf might help. Let me know if it's useful.
User avatar
NSFW
Posts: 679
Joined: Fri Feb 02, 2018 3:13 pm

Re: Where are the segments in a 411 OS?

Post by NSFW »

I just remembered that we have code for validating segment checksums in PCM Hammer, and that has everything I need.

This is a little bit embarassing. :)

Code: Select all

            success &= this.ValidateRange(      0, 0x7FFFD,   0x500, "Operating system");
            success &= this.ValidateRange( 0x8002, 0x13FFF,  0x8000, "Engine calibration");
            success &= this.ValidateRange(0x14002, 0x16DFF, 0x14000, "Engine diagnostics.");
            success &= this.ValidateRange(0x16E02, 0x1BDFF, 0x16E00, "Transmission calibration");
            success &= this.ValidateRange(0x1BE02, 0x1C7FF, 0x1BE00, "Transmission diagnostics");
            success &= this.ValidateRange(0x1C802, 0x1E51F, 0x1C800, "Fuel system");
            success &= this.ValidateRange(0x1E522, 0x1EE9F, 0x1E520, "System");
            success &= this.ValidateRange(0x1EEA2, 0x1EF9F, 0x1EEA0, "Speedometer");
Please don't PM me with technical questions - start a thread instead, and send me a link to it. That way I can answer in public, and help other people who have the same question. Thanks!
User avatar
antus
Site Admin
Posts: 8237
Joined: Sat Feb 28, 2009 8:34 pm
cars: TX Gemini 2L Twincam
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Contact:

Re: Where are the segments in a 411 OS?

Post by antus »

yep, operating system isnt right though... Its these ranges:

0x000000 -> 0x0004FF
0x000502 -> 0x003FFF
0x020000 -> 0x07FFFF

with the sum saved in 16 bits at 0x500

We'll need to update that for OS write support.

Technically the boot block is just the start on the flash chip level, but the above is how the sum is calculated.

1 Mbyte is the same, just the OS ends at 0x0FFFFD
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
User avatar
NSFW
Posts: 679
Joined: Fri Feb 02, 2018 3:13 pm

Re: Where are the segments in a 411 OS?

Post by NSFW »

It took me a while to realize why the app is declaring all of the checksums good even though it has the wrong logic for the OS checksum...

Any block whose checksum is valid has a sum of zero. So, if the parameter and calibration blocks have valid checksums, the app can still check for a valid OS checksum.

The problem is that if the parameter or calibration blocks have invalid checksums, the app will report an invalid checksum for the OS as well, even if the OS blocks are actually valid.

I opened a bug for this on GitHub.
Please don't PM me with technical questions - start a thread instead, and send me a link to it. That way I can answer in public, and help other people who have the same question. Thanks!
User avatar
antus
Site Admin
Posts: 8237
Joined: Sat Feb 28, 2009 8:34 pm
cars: TX Gemini 2L Twincam
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Contact:

Re: Where are the segments in a 411 OS?

Post by antus »

good pick :) I thought it was just an error in your docs, as the app seemed to be working fine.
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
Post Reply