PCM Hammer Suite development

They go by many names, P01, P59, VPW, '0411 etc . Circa 1999 to 2006. All VPW OBD2 PCMs.
User avatar
Posts: 844
Joined: Sat Dec 15, 2018 7:38 am

Re: PCM Hammer Suite development

Postby Gampy » Sat Dec 26, 2020 12:12 pm

Guess I'm confused with this, isn't this the CRC retry loop ??

CKernelVerifier.CompareRanges()
Code: Select all
-                for (int attempts = 0; attempts < 20; attempts++)
+                for (int segment = 0; segment < 20; segment++)
                 {
-                    logger.StatusUpdateActivity($"Attempt {attempts + 1} processing CRC for range {range.Address:X6}-{range.Address + (range.Size - 1):X6}");
+                    logger.StatusUpdateActivity($"Processing CRC for range {range.Address:X6}-{range.Address + (range.Size - 1):X6}, segment {segment + 1}");
Windows 10 is like an off idle flat spot ... It stumbles when it's time to go!

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

Re: PCM Hammer Suite development

Postby NSFW » Sat Dec 26, 2020 1:52 pm

The answer is in the comment above... but I just realized that I used the word 'segment' in the code a little bit differently than in the comment:

Code: Select all
                // Each poll of the pcm causes it to CRC 16kb of segment data.
                // When the segment sum is available it is returned.

The app needs the CRC for each chunk of the flash chip that has to be erased and rewritten. I should have used the term "sector" in the comment since that the word that the flash chip data sheet uses.

Computing the CRC for a whole sector takes a while, so the kernel does 16kb of it each time the app makes a request. If the whole sector hasn't been CRC'd yet, the kernel returns "ask again" and if the whole thing has been CRC'd it returns "done" plus the CRC value.

The word "attempt" kinda sounds like it's trying and failing so I wanted the UI to use a term that just sounds like incremental progress, since that's what's really happening.
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
Posts: 844
Joined: Sat Dec 15, 2018 7:38 am

Re: PCM Hammer Suite development

Postby Gampy » Sun Dec 27, 2020 4:04 am

NSFW wrote:The answer is in the comment above... but I just realized that I used the word 'segment' in the code a little bit differently than in the comment:

Code: Select all
                // Each poll of the pcm causes it to CRC 16kb of segment data.
                // When the segment sum is available it is returned.

The app needs the CRC for each chunk of the flash chip that has to be erased and rewritten. I should have used the term "sector" in the comment since that the word that the flash chip data sheet uses.

Computing the CRC for a whole sector takes a while, so the kernel does 16kb of it each time the app makes a request. If the whole sector hasn't been CRC'd yet, the kernel returns "ask again" and if the whole thing has been CRC'd it returns "done" plus the CRC value.

The word "attempt" kinda sounds like it's trying and failing so I wanted the UI to use a term that just sounds like incremental progress, since that's what's really happening.

Segment or Sector doesn't accurately describe the Action that is happening!

I realize this is all semantics, but that is what it's all about.

It is what it is ... It is attempting (requesting) to get the the CRC, not getting it, then attempting (requesting) it again and again until it succeeds ... or fails.

18 times to CRC a 131,072 byte sector at 16,384 bytes per calculation does not compute ... Thus signifies Attempts.
Of course the number depends on the sector size and speed of the PCM, I'm currently attached to an Intel P59, an AMD P59 is faster and does it in 10 attempts ... Again signifies Attempts.

However, as the saying goes ... All I can do is voice my opinion and that's what all this is, my insignificant opinion for what it's worth!

Another interesting view ... Two 'Verify Entire PCM' user logs from two different kernels with my original Status Strip message via AddUserMessage().
PcmHammer Kernel,
[04:58:03:801] PCM Hammer (12/26/2020, 4:44 AM)
[04:58:03:916] Voltage: 13.9V
[04:58:03:922] Elm ID: ELM327 v2.1
[04:58:03:939] All Pro ID: Copyright (c) 2009-2018 ObdDiag.Net This is free software; see the source for copying conditions.
[04:58:03:954] All Pro self test result: PWM wiring is OK VPW wiring is OK ISO9141/14230 wiring is OK CAN wiring is OK
[04:58:03:959] All Pro firmware: 1.22
[04:58:15:001] T:\Automotive\GM_ECU\Testbins\P59\12593058.bin
[04:58:15:032] Validating 1024k file.
[04:58:15:035] Start End Stored Needed Verdict Segment Name
[04:58:15:055] 00000 FFFFD 2C95 2C95 Good Operating system
[04:58:15:059] 08002 15DFF 32FB 32FB Good Engine calibration
[04:58:15:064] 15E02 18F8F 7B0A 7B0A Good Engine diagnostics.
[04:58:15:071] 18F92 1D26F 2923 2923 Good Transmission calibration
[04:58:15:078] 1D272 1DBCF 09C3 09C3 Good Transmission diagnostics
[04:58:15:084] 1DBD2 1F18F 7F69 7F69 Good Fuel system
[04:58:15:093] 1F192 1FB4F 12A5 12A5 Good System
[04:58:15:103] 1FB52 1FD7F 3A6B 3A6B Good Speedometer
[04:58:15:114] Requesting operating system ID...
[04:58:15:239] PCM and file are both operating system 12593058
[04:58:15:454] Unlock succeeded.
[04:58:15:510] Attempting switch to VPW 4x
[04:58:15:591] Module 0x10 (engine controller) has agreed to enter high-speed mode.
[04:58:17:904] Requesting permission to upload kernel.
[04:58:17:956] Upload permission granted.
[04:58:18:368] Kernel upload 9% complete.
[04:58:18:856] Kernel upload 22% complete.
[04:58:19:339] Kernel upload 35% complete.
[04:58:19:827] Kernel upload 48% complete.
[04:58:20:309] Kernel upload 61% complete.
[04:58:20:829] Kernel upload 74% complete.
[04:58:21:305] Kernel upload 87% complete.
[04:58:21:792] Kernel upload 100% complete.
[04:58:23:097] Kernel Version: 010301BB
[04:58:23:109] Kernel uploaded to PCM succesfully.
[04:58:23:175] PCM and image file are both operating system 12593058
[04:58:23:226] Flash chip: Intel 28F800B, 1mb
[04:58:23:250] Calculating CRCs from file.
[04:58:23:273] Initializing CRC algorithm on PCM, this will take a minute...
[04:58:33:625] Requesting CRCs from PCM.
[04:58:33:643] Range File CRC PCM CRC Verdict Purpose
[04:58:33:677] Attempt 1 processing CRC for range 0E0000-0FFFFF
[04:58:33:861] Attempt 2 processing CRC for range 0E0000-0FFFFF
[04:58:34:110] Attempt 3 processing CRC for range 0E0000-0FFFFF
[04:58:34:359] Attempt 4 processing CRC for range 0E0000-0FFFFF
[04:58:34:612] Attempt 5 processing CRC for range 0E0000-0FFFFF
[04:58:34:860] Attempt 6 processing CRC for range 0E0000-0FFFFF
[04:58:35:112] Attempt 7 processing CRC for range 0E0000-0FFFFF
[04:58:35:359] Attempt 8 processing CRC for range 0E0000-0FFFFF
[04:58:35:609] Attempt 9 processing CRC for range 0E0000-0FFFFF
[04:58:35:846] Attempt 10 processing CRC for range 0E0000-0FFFFF
[04:58:36:110] Attempt 11 processing CRC for range 0E0000-0FFFFF
[04:58:36:346] Attempt 12 processing CRC for range 0E0000-0FFFFF
[04:58:36:593] Attempt 13 processing CRC for range 0E0000-0FFFFF
[04:58:36:829] Attempt 14 processing CRC for range 0E0000-0FFFFF
[04:58:37:063] Attempt 15 processing CRC for range 0E0000-0FFFFF
[04:58:37:297] Attempt 16 processing CRC for range 0E0000-0FFFFF
[04:58:37:532] Attempt 17 processing CRC for range 0E0000-0FFFFF
[04:58:38:812] Attempt 18 processing CRC for range 0E0000-0FFFFF
[04:58:38:997] 0E0000-0FFFFF A873B6D7 A873B6D7 Same OperatingSystem
[04:58:39:006] Attempt 1 processing CRC for range 0C0000-0DFFFF
[04:58:39:188] Attempt 2 processing CRC for range 0C0000-0DFFFF
[04:58:39:423] Attempt 3 processing CRC for range 0C0000-0DFFFF
[04:58:39:659] Attempt 4 processing CRC for range 0C0000-0DFFFF
[04:58:39:906] Attempt 5 processing CRC for range 0C0000-0DFFFF
[04:58:40:141] Attempt 6 processing CRC for range 0C0000-0DFFFF
[04:58:40:376] Attempt 7 processing CRC for range 0C0000-0DFFFF
[04:58:40:611] Attempt 8 processing CRC for range 0C0000-0DFFFF
[04:58:40:846] Attempt 9 processing CRC for range 0C0000-0DFFFF
[04:58:41:112] Attempt 10 processing CRC for range 0C0000-0DFFFF
[04:58:41:359] Attempt 11 processing CRC for range 0C0000-0DFFFF
[04:58:41:594] Attempt 12 processing CRC for range 0C0000-0DFFFF
[04:58:41:831] Attempt 13 processing CRC for range 0C0000-0DFFFF
[04:58:42:079] Attempt 14 processing CRC for range 0C0000-0DFFFF
[04:58:42:315] Attempt 15 processing CRC for range 0C0000-0DFFFF
[04:58:42:562] Attempt 16 processing CRC for range 0C0000-0DFFFF
[04:58:42:797] Attempt 17 processing CRC for range 0C0000-0DFFFF
[04:58:44:078] Attempt 18 processing CRC for range 0C0000-0DFFFF
[04:58:44:263] 0C0000-0DFFFF 807305D6 807305D6 Same OperatingSystem
[04:58:44:273] Attempt 1 processing CRC for range 0A0000-0BFFFF
[04:58:44:456] Attempt 2 processing CRC for range 0A0000-0BFFFF
[04:58:44:690] Attempt 3 processing CRC for range 0A0000-0BFFFF
[04:58:44:937] Attempt 4 processing CRC for range 0A0000-0BFFFF
[04:58:45:172] Attempt 5 processing CRC for range 0A0000-0BFFFF
[04:58:45:408] Attempt 6 processing CRC for range 0A0000-0BFFFF
[04:58:45:643] Attempt 7 processing CRC for range 0A0000-0BFFFF
[04:58:45:890] Attempt 8 processing CRC for range 0A0000-0BFFFF
[04:58:46:125] Attempt 9 processing CRC for range 0A0000-0BFFFF
[04:58:46:392] Attempt 10 processing CRC for range 0A0000-0BFFFF
[04:58:46:627] Attempt 11 processing CRC for range 0A0000-0BFFFF
[04:58:46:875] Attempt 12 processing CRC for range 0A0000-0BFFFF
[04:58:47:111] Attempt 13 processing CRC for range 0A0000-0BFFFF
[04:58:47:346] Attempt 14 processing CRC for range 0A0000-0BFFFF
[04:58:47:593] Attempt 15 processing CRC for range 0A0000-0BFFFF
[04:58:47:829] Attempt 16 processing CRC for range 0A0000-0BFFFF
[04:58:48:063] Attempt 17 processing CRC for range 0A0000-0BFFFF
[04:58:49:343] Attempt 18 processing CRC for range 0A0000-0BFFFF
[04:58:49:528] 0A0000-0BFFFF 807305D6 807305D6 Same OperatingSystem
[04:58:49:538] Attempt 1 processing CRC for range 080000-09FFFF
[04:58:49:718] Attempt 2 processing CRC for range 080000-09FFFF
[04:58:49:954] Attempt 3 processing CRC for range 080000-09FFFF
[04:58:50:188] Attempt 4 processing CRC for range 080000-09FFFF
[04:58:50:423] Attempt 5 processing CRC for range 080000-09FFFF
[04:58:50:659] Attempt 6 processing CRC for range 080000-09FFFF
[04:58:50:906] Attempt 7 processing CRC for range 080000-09FFFF
[04:58:51:140] Attempt 8 processing CRC for range 080000-09FFFF
[04:58:51:375] Attempt 9 processing CRC for range 080000-09FFFF
[04:58:51:641] Attempt 10 processing CRC for range 080000-09FFFF
[04:58:51:876] Attempt 11 processing CRC for range 080000-09FFFF
[04:58:52:112] Attempt 12 processing CRC for range 080000-09FFFF
[04:58:52:346] Attempt 13 processing CRC for range 080000-09FFFF
[04:58:52:593] Attempt 14 processing CRC for range 080000-09FFFF
[04:58:52:829] Attempt 15 processing CRC for range 080000-09FFFF
[04:58:53:064] Attempt 16 processing CRC for range 080000-09FFFF
[04:58:53:299] Attempt 17 processing CRC for range 080000-09FFFF
[04:58:54:580] Attempt 18 processing CRC for range 080000-09FFFF
[04:58:54:765] 080000-09FFFF C96799B4 C96799B4 Same OperatingSystem
[04:58:54:775] Attempt 1 processing CRC for range 060000-07FFFF
[04:58:54:956] Attempt 2 processing CRC for range 060000-07FFFF
[04:58:55:203] Attempt 3 processing CRC for range 060000-07FFFF
[04:58:55:438] Attempt 4 processing CRC for range 060000-07FFFF
[04:58:55:672] Attempt 5 processing CRC for range 060000-07FFFF
[04:58:55:908] Attempt 6 processing CRC for range 060000-07FFFF
[04:58:56:159] Attempt 7 processing CRC for range 060000-07FFFF
[04:58:56:406] Attempt 8 processing CRC for range 060000-07FFFF
[04:58:56:640] Attempt 9 processing CRC for range 060000-07FFFF
[04:58:56:907] Attempt 10 processing CRC for range 060000-07FFFF
[04:58:57:142] Attempt 11 processing CRC for range 060000-07FFFF
[04:58:57:376] Attempt 12 processing CRC for range 060000-07FFFF
[04:58:57:612] Attempt 13 processing CRC for range 060000-07FFFF
[04:58:57:846] Attempt 14 processing CRC for range 060000-07FFFF
[04:58:58:093] Attempt 15 processing CRC for range 060000-07FFFF
[04:58:58:328] Attempt 16 processing CRC for range 060000-07FFFF
[04:58:58:563] Attempt 17 processing CRC for range 060000-07FFFF
[04:58:59:844] Attempt 18 processing CRC for range 060000-07FFFF
[04:59:00:029] 060000-07FFFF 71D2F28E 71D2F28E Same OperatingSystem
[04:59:00:039] Attempt 1 processing CRC for range 040000-05FFFF
[04:59:00:220] Attempt 2 processing CRC for range 040000-05FFFF
[04:59:00:455] Attempt 3 processing CRC for range 040000-05FFFF
[04:59:00:690] Attempt 4 processing CRC for range 040000-05FFFF
[04:59:00:924] Attempt 5 processing CRC for range 040000-05FFFF
[04:59:01:159] Attempt 6 processing CRC for range 040000-05FFFF
[04:59:01:406] Attempt 7 processing CRC for range 040000-05FFFF
[04:59:01:641] Attempt 8 processing CRC for range 040000-05FFFF
[04:59:01:876] Attempt 9 processing CRC for range 040000-05FFFF
[04:59:02:143] Attempt 10 processing CRC for range 040000-05FFFF
[04:59:02:377] Attempt 11 processing CRC for range 040000-05FFFF
[04:59:02:625] Attempt 12 processing CRC for range 040000-05FFFF
[04:59:02:861] Attempt 13 processing CRC for range 040000-05FFFF
[04:59:03:096] Attempt 14 processing CRC for range 040000-05FFFF
[04:59:03:343] Attempt 15 processing CRC for range 040000-05FFFF
[04:59:03:578] Attempt 16 processing CRC for range 040000-05FFFF
[04:59:03:813] Attempt 17 processing CRC for range 040000-05FFFF
[04:59:05:094] Attempt 18 processing CRC for range 040000-05FFFF
[04:59:05:279] 040000-05FFFF 01685589 01685589 Same OperatingSystem
[04:59:05:289] Attempt 1 processing CRC for range 020000-03FFFF
[04:59:05:469] Attempt 2 processing CRC for range 020000-03FFFF
[04:59:05:704] Attempt 3 processing CRC for range 020000-03FFFF
[04:59:05:939] Attempt 4 processing CRC for range 020000-03FFFF
[04:59:06:174] Attempt 5 processing CRC for range 020000-03FFFF
[04:59:06:409] Attempt 6 processing CRC for range 020000-03FFFF
[04:59:06:656] Attempt 7 processing CRC for range 020000-03FFFF
[04:59:06:891] Attempt 8 processing CRC for range 020000-03FFFF
[04:59:07:125] Attempt 9 processing CRC for range 020000-03FFFF
[04:59:07:390] Attempt 10 processing CRC for range 020000-03FFFF
[04:59:07:625] Attempt 11 processing CRC for range 020000-03FFFF
[04:59:07:862] Attempt 12 processing CRC for range 020000-03FFFF
[04:59:08:109] Attempt 13 processing CRC for range 020000-03FFFF
[04:59:08:344] Attempt 14 processing CRC for range 020000-03FFFF
[04:59:08:579] Attempt 15 processing CRC for range 020000-03FFFF
[04:59:08:830] Attempt 16 processing CRC for range 020000-03FFFF
[04:59:09:065] Attempt 17 processing CRC for range 020000-03FFFF
[04:59:10:345] Attempt 18 processing CRC for range 020000-03FFFF
[04:59:10:530] 020000-03FFFF BEE98990 BEE98990 Same OperatingSystem
[04:59:10:540] Attempt 1 processing CRC for range 008000-01FFFF
[04:59:10:721] Attempt 2 processing CRC for range 008000-01FFFF
[04:59:10:956] Attempt 3 processing CRC for range 008000-01FFFF
[04:59:11:190] Attempt 4 processing CRC for range 008000-01FFFF
[04:59:11:437] Attempt 5 processing CRC for range 008000-01FFFF
[04:59:11:672] Attempt 6 processing CRC for range 008000-01FFFF
[04:59:11:907] Attempt 7 processing CRC for range 008000-01FFFF
[04:59:12:142] Attempt 8 processing CRC for range 008000-01FFFF
[04:59:12:377] Attempt 9 processing CRC for range 008000-01FFFF
[04:59:12:640] Attempt 10 processing CRC for range 008000-01FFFF
[04:59:12:875] Attempt 11 processing CRC for range 008000-01FFFF
[04:59:13:109] Attempt 12 processing CRC for range 008000-01FFFF
[04:59:13:344] Attempt 13 processing CRC for range 008000-01FFFF
[04:59:14:625] Attempt 14 processing CRC for range 008000-01FFFF
[04:59:14:812] 008000-01FFFF 45043750 45043750 Same Calibration
[04:59:14:822] Attempt 1 processing CRC for range 006000-007FFF
[04:59:15:000] Attempt 2 processing CRC for range 006000-007FFF
[04:59:16:281] Attempt 3 processing CRC for range 006000-007FFF
[04:59:16:438] 006000-007FFF 85B5BB36 85B5BB36 Same Parameter
[04:59:16:449] Attempt 1 processing CRC for range 004000-005FFF
[04:59:16:626] Attempt 2 processing CRC for range 004000-005FFF
[04:59:17:909] Attempt 3 processing CRC for range 004000-005FFF
[04:59:18:094] 004000-005FFF 603B7F85 603B7F85 Same Parameter
[04:59:18:105] Attempt 1 processing CRC for range 000000-003FFF
[04:59:18:284] Attempt 2 processing CRC for range 000000-003FFF
[04:59:18:532] Attempt 3 processing CRC for range 000000-003FFF
[04:59:19:814] Attempt 4 processing CRC for range 000000-003FFF
[04:59:19:972] 000000-003FFF C534A431 C534A431 Same Boot
[04:59:20:007] All relevant ranges are identical.
[04:59:20:247] Clearing trouble codes.
[04:59:21:317] Elapsed time 00:01:05.8535157


My kernel (Colonel),
[04:59:40:994] PCM Hammer (12/26/2020, 4:44 AM)
[04:59:41:067] Voltage: 13.5V
[04:59:41:072] Elm ID: ELM327 v2.1
[04:59:41:085] All Pro ID: Copyright (c) 2009-2018 ObdDiag.Net This is free software; see the source for copying conditions.
[04:59:41:100] All Pro self test result: PWM wiring is OK VPW wiring is OK ISO9141/14230 wiring is OK CAN wiring is OK
[04:59:41:105] All Pro firmware: 1.22
[04:59:48:671] T:\Automotive\GM_ECU\Testbins\P59\12593058.bin
[04:59:48:701] Validating 1024k file.
[04:59:48:703] Start End Stored Needed Verdict Segment Name
[04:59:48:711] 00000 FFFFD 2C95 2C95 Good Operating system
[04:59:48:715] 08002 15DFF 32FB 32FB Good Engine calibration
[04:59:48:720] 15E02 18F8F 7B0A 7B0A Good Engine diagnostics.
[04:59:48:726] 18F92 1D26F 2923 2923 Good Transmission calibration
[04:59:48:733] 1D272 1DBCF 09C3 09C3 Good Transmission diagnostics
[04:59:48:741] 1DBD2 1F18F 7F69 7F69 Good Fuel system
[04:59:48:750] 1F192 1FB4F 12A5 12A5 Good System
[04:59:48:759] 1FB52 1FD7F 3A6B 3A6B Good Speedometer
[04:59:48:769] Requesting operating system ID...
[04:59:48:833] PCM and file are both operating system 12593058
[04:59:49:017] Unlock succeeded.
[04:59:49:053] Attempting switch to VPW 4x
[04:59:49:119] Module 0x10 (engine controller) has agreed to enter high-speed mode.
[04:59:51:401] Requesting permission to upload kernel.
[04:59:51:443] Upload permission granted.
[04:59:51:773] Kernel upload 8% complete.
[04:59:52:259] Kernel upload 23% complete.
[04:59:52:746] Kernel upload 38% complete.
[04:59:53:228] Kernel upload 54% complete.
[04:59:53:718] Kernel upload 69% complete.
[04:59:54:244] Kernel upload 84% complete.
[04:59:54:730] Kernel upload 100% complete.
[04:59:54:760] Kernel Version: 82400001
[04:59:54:772] Kernel uploaded to PCM succesfully.
[04:59:54:807] PCM and image file are both operating system 12593058
[04:59:54:837] Flash chip: Intel 28F800B, 1mb
[04:59:54:852] Calculating CRCs from file.
[04:59:54:874] Initializing CRC algorithm on PCM, this will take a minute...
[04:59:54:916] Requesting CRCs from PCM.
[04:59:54:934] Range File CRC PCM CRC Verdict Purpose
[04:59:54:951] Attempt 1 processing CRC for range 0E0000-0FFFFF
[04:59:55:125] Attempt 2 processing CRC for range 0E0000-0FFFFF
[04:59:56:406] Attempt 3 processing CRC for range 0E0000-0FFFFF
[04:59:56:564] 0E0000-0FFFFF A873B6D7 A873B6D7 Same OperatingSystem
[04:59:56:581] Attempt 1 processing CRC for range 0C0000-0DFFFF
[04:59:56:765] Attempt 2 processing CRC for range 0C0000-0DFFFF
[04:59:58:046] Attempt 3 processing CRC for range 0C0000-0DFFFF
[04:59:58:177] 0C0000-0DFFFF 807305D6 807305D6 Same OperatingSystem
[04:59:58:192] Attempt 1 processing CRC for range 0A0000-0BFFFF
[04:59:58:377] Attempt 2 processing CRC for range 0A0000-0BFFFF
[04:59:59:659] Attempt 3 processing CRC for range 0A0000-0BFFFF
[04:59:59:814] 0A0000-0BFFFF 807305D6 807305D6 Same OperatingSystem
[04:59:59:827] Attempt 1 processing CRC for range 080000-09FFFF
[05:00:00:001] Attempt 2 processing CRC for range 080000-09FFFF
[05:00:01:284] Attempt 3 processing CRC for range 080000-09FFFF
[05:00:01:411] 080000-09FFFF C96799B4 C96799B4 Same OperatingSystem
[05:00:01:421] Attempt 1 processing CRC for range 060000-07FFFF
[05:00:01:593] Attempt 2 processing CRC for range 060000-07FFFF
[05:00:02:876] Attempt 3 processing CRC for range 060000-07FFFF
[05:00:03:031] 060000-07FFFF 71D2F28E 71D2F28E Same OperatingSystem
[05:00:03:042] Attempt 1 processing CRC for range 040000-05FFFF
[05:00:03:218] Attempt 2 processing CRC for range 040000-05FFFF
[05:00:04:502] Attempt 3 processing CRC for range 040000-05FFFF
[05:00:04:630] 040000-05FFFF 01685589 01685589 Same OperatingSystem
[05:00:04:643] Attempt 1 processing CRC for range 020000-03FFFF
[05:00:04:828] Attempt 2 processing CRC for range 020000-03FFFF
[05:00:06:112] Attempt 3 processing CRC for range 020000-03FFFF
[05:00:06:268] 020000-03FFFF BEE98990 BEE98990 Same OperatingSystem
[05:00:06:281] Attempt 1 processing CRC for range 008000-01FFFF
[05:00:06:455] Attempt 2 processing CRC for range 008000-01FFFF
[05:00:07:736] Attempt 3 processing CRC for range 008000-01FFFF
[05:00:07:865] 008000-01FFFF 45043750 45043750 Same Calibration
[05:00:07:878] Attempt 1 processing CRC for range 006000-007FFF
[05:00:08:063] Attempt 2 processing CRC for range 006000-007FFF
[05:00:08:193] 006000-007FFF 85B5BB36 85B5BB36 Same Parameter
[05:00:08:230] Attempt 1 processing CRC for range 004000-005FFF
[05:00:08:424] Attempt 2 processing CRC for range 004000-005FFF
[05:00:08:553] 004000-005FFF 603B7F85 603B7F85 Same Parameter
[05:00:08:568] Attempt 1 processing CRC for range 000000-003FFF
[05:00:08:752] Attempt 2 processing CRC for range 000000-003FFF
[05:00:08:881] 000000-003FFF C534A431 C534A431 Same Boot
[05:00:08:896] All relevant ranges are identical.
[05:00:09:156] Clearing trouble codes.
[05:00:10:228] Elapsed time 00:00:21.2011719
Windows 10 is like an off idle flat spot ... It stumbles when it's time to go!

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

Re: PCM Hammer Suite development

Postby NSFW » Mon Dec 28, 2020 8:42 am

I don't disagree, but I worry that when someone sees "attempt 1... attempt 2... attempt 3..." they're going to think something isn't working properly. That change had very little to do with what's happening inside the software, it was all about what might happen in our users' heads. :)

What is it that makes your version faster? Did you increase the number of bytes that get CRC'd with each request?
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
Posts: 844
Joined: Sat Dec 15, 2018 7:38 am

Re: PCM Hammer Suite development

Postby Gampy » Mon Dec 28, 2020 10:29 am

I do agree with the negative connotation using 'Attempt', it is what it is ... How about replacing the word 'Attempt' with 'Request'.
So it reads like,
Request X processing CRC for range etc...
or remove the count altogether and just have,
Processing CRC for range etc...

BTW, :thumbup:
logger.AddUserMessage("Initializing CRC algorithm on PCM, this will take a minute...");
I saw the need and brain farted it! :x

The comparison to my kernel (or Colonel as I call it) was not about the speed, it was purely evidence showing the action is an attempt.
It's inelegant, short and simple ... It does the whole sector in one wack!
The first request initiates, the second (or more) returns the value if available. Kinda like a state machine.
Windows 10 is like an off idle flat spot ... It stumbles when it's time to go!

User avatar
Posts: 844
Joined: Sat Dec 15, 2018 7:38 am

Re: PCM Hammer Suite development

Postby Gampy » Mon Dec 28, 2020 11:05 pm

Again, I have spent too many hours trying many different permutations to no avail, nothing else reads, flows and is as accurate to the action.

Sorry, I'm stuck on the original line ...
Attempt X processing CRC for range etc...
It is what it is, and trying to polish a turd just makes it look worse IMO!
(Not calling PcmHammer a turd, if it was I'd clean it up)

So I guess I'm gonna have to suck it up and accept the things I cannot change.
Windows 10 is like an off idle flat spot ... It stumbles when it's time to go!

User avatar
Posts: 2283
Joined: Thu May 17, 2012 8:53 pm
Location: WA

Re: PCM Hammer Suite development

Postby Tazzi » Tue Dec 29, 2020 10:29 am

The app is polling the ECU to see if its finished processing that section, hence attempts can sometimes be more/less depending on how busy the PCM is.
Your Local Aussie Reverse Engineer
Site:www.envyouscustoms.com
Mob:+61406 140 726
Image

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

Re: PCM Hammer Suite development

Postby antus » Wed Dec 30, 2020 6:18 pm

I havnt checked if the code has changed since I last looked, but we did change it to actually CRC a 16k chunk, because the background processing code was too slow and caused other comms issues during the flash because the main loop took too long to run, even when no CRC was happening. 16kb was chosen as a block size because its small enough to be quick enough to execute before any of the supported interfaces time out. It just needs the PC to keep asking so that the kernel enters the CRC code on each message. A tighter ASM kernel might be able to go back to background CRC processing, but the C kernel as it stands cant. The numbers dont add up for 16kb chunks though.
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: 844
Joined: Sat Dec 15, 2018 7:38 am

Re: PCM Hammer Suite development

Postby Gampy » Wed Dec 30, 2020 10:24 pm

Antus, I swear you changed the chunk size to 16384, however the code shows 8192!

[edit] I see NSFW changed 16384->8192 here

Colonel is pure simple C ... I find no issues, what was the issue so I can test for it ??
I wish it was asm, unfortunately oxygen deprivation has put the kabash on that ...
Windows 10 is like an off idle flat spot ... It stumbles when it's time to go!

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

Re: PCM Hammer Suite development

Postby antus » Wed Dec 30, 2020 11:50 pm

The change from background CRC to PC polling to enter the CRC code happened here https://github.com/LegacyNsfw/PcmHacks/ ... 371bfc0698
Have you read the FAQ? For lots of information and links to significant threads see here: viewtopic.php?f=7&t=1396

PreviousNext

Return to GM LS1 512Kbyte and 1Mbyte

Who is online

Users browsing this forum: No registered users and 2 guests