Where are the segments in a 411 OS?

They go by many names, P01, P59, VPW, '0411 etc . Circa 1999 to 2006. All VPW OBD2 PCMs.
User avatar
Posts: 172
Joined: Fri Feb 02, 2018 3:13 pm

Where are the segments in a 411 OS?

Postby NSFW » Mon Jan 21, 2019 9:41 am

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 questions about tuning or flashing - start a thread instead. Thanks!

Posts: 1178
Joined: Sat Aug 06, 2011 7:58 am
Location: Padstow NSW

Re: Where are the segments in a 411 OS?

Postby Charlescrown » Mon Jan 21, 2019 9:57 am

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
Posts: 172
Joined: Fri Feb 02, 2018 3:13 pm

Re: Where are the segments in a 411 OS?

Postby NSFW » Mon Jan 21, 2019 10:51 am

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 questions about tuning or flashing - start a thread instead. Thanks!

Site Admin
User avatar
Posts: 5629
Joined: Sat Feb 28, 2009 8:34 pm

Re: Where are the segments in a 411 OS?

Postby antus » Mon Jan 21, 2019 6:04 pm

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: viewtopic.php?f=7&t=1396

User avatar
Posts: 172
Joined: Fri Feb 02, 2018 3:13 pm

Re: Where are the segments in a 411 OS?

Postby NSFW » Thu Jan 24, 2019 6:51 pm

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 questions about tuning or flashing - start a thread instead. Thanks!

Site Admin
User avatar
Posts: 5629
Joined: Sat Feb 28, 2009 8:34 pm

Re: Where are the segments in a 411 OS?

Postby antus » Thu Jan 24, 2019 6:59 pm

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: viewtopic.php?f=7&t=1396

Return to GM LS1 512Kbyte and 1Mbyte

Who is online

Users browsing this forum: bbpanel and 1 guest