Startup vs Runtime Firmware Integrity Checks in ISO 26262 Powertrain Controllers
Under ISO 26262 (Road Vehicles — Functional Safety, ASIL-C / ASIL-D), an Engine Control Unit cannot permit unverified flash memory bits—whether caused by cosmic-ray bit flips, aging flash charge leakage, voltage brownouts during programming, or corrupted calibration edits—to alter torque delivery. Consequently, every OEM ECU executes a two-tier integrity pipeline:
- Bootloader Pre-Run Check: Within the first 80–250 ms after Terminal 15 (Ignition ON), the Secondary Bootloader (SBL) walks a table of address-range descriptors (
[start_addr, end_addr, expected_crc]). If any calibration block fails verification, the ECU halts main application execution, stays in programming session (UDS 0x10 0x02), and illuminates the MIL / glow-plug indicator with fault codeP0601(Internal Control Module Memory Check Sum Error). - Background Cyclic Runtime Monitor: While the engine is running, a low-priority OS task hashes 4 KB slices of PFlash every 100 ms. An unpatched runtime monitoring checksum causes delayed limp-home shutdowns 5 to 30 minutes after initial engine start.
Mathematical Formulation of Additive Sums and Reflected IEEE 802.3 CRC-32
Across 12V passenger and 24V heavy-duty controllers, three deterministic mathematical primitives account for over 95% of non-cryptographic block checks:
- 32-Bit Little-Endian Modular Sum with Complement: Common in Bosch EDC16/EDC17 regional headers, where 32-bit words
W[i]across[A..B]satisfy(Sum(W[i]) + CheckWord + ComplementWord) mod 2^32 == 0xFFFFFFFF. Storing both sum and bitwise ones'-complement detects all-zero and all-FF flash erasure faults. - Reflected IEEE 802.3 CRC-32 (
0xEDB88320): Used extensively in Bosch MEDC17, MD1/MG1, Delphi DCM6.2/DCM7.1, and Continental SID/EMS blocks. Initialized with0xFFFFFFFFand final-XORed with0xFFFFFFFF, flipping even a single map cell alters all 32 output bits via Galois FieldGF(2)polynomial division. - CRC-16-CCITT (
0x1021): Standard inside EEPROM / DFlash adaptation blocks (injector trim codes, DPF ash counters, throttle learned stops, and VIN records).
When calibrating a binary in Softechpro Solutions v2.0.6, the engine parses the exact descriptor table inside the virgin stock binary, recalculates every affected inner and outer umbrella block checksum, and validates block alignment prior to file export.
Understanding OBD-II Mode $09 PID $06 Calibration Verification Numbers (CVN)
Under SAE J1979 / ISO 15031-5, OBD-II Service $09 InfoType $04 reports the ASCII Calibration ID (CALID), while InfoType $06 reports the 4-byte hexadecimal Calibration Verification Number (CVN). Diagnostic scan tools query Mode $09 during technical inspections to confirm firmware consistency against OEM reference databases. Proper engineering documentation always records both stock CALID and stock CVN before bench testing or motorsport calibration work.