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