Any matching SC900684AAF dump, pin trace, MON08 work or additional SPI command information would be very useful (its WIP here with low rate of success as far as I can tell)
# Hardware
#########
1. The main processor is a GM-marked SGMPPC6230F7MVR, effectively a Freescale/NXP MPC5566 with an e200z6 PowerPC core:
Code: Select all
| 3 MiB main flash: 0x00000000–0x002FFFFF
\___ L0 0x00000000–0x00003FFF: NVM bank A
L1 0x00004000–0x0000FFFF: boot/low software
L2 0x00010000–0x0001BFFF: boot/low software
L3 0x0001C000–0x0001FFFF: NVM bank B
L4–H19 0x00020000–0x002FFFFF: MOD02–06 and MOD01
| 128 KiB SRAM: 0x40000000–0x4001FFFF
| 1 KiB shadow flash: 0x00FFFC00–0x00FFFFFF2. There are also two identical Freescale SC900684AAF 80-pin QFP devices. Static analysis from MOD07/08 files identifies them as custom CPU08/HC908-family derivatives:
- One contains the MOD07/MOD08 second-MPU software and communicates on MPC5566 DSPI-A/PCS0.
- The other is the external watchdog/safety companion on DSPI-A/PCS1.
- Which physical QFP is PCS0 and which is PCS1 is currently unknown to me (pending tracing)
# Software
########
The resident MPC5566 boot software is part of the low 3 MiB main-flash array. The chip reports Boot Software as part no 12653997, but normal SPS does not provide this as a separate file.
SPS' 12639160.bin (MOD00) is a temporary RAM programming utility used by SPS.
The known programming path is:
- Physical CAN IDs 0x7E0/0x7E8
- GMLAN SecurityAccess algorithm 0xDC
- Enter programming state and unlock
- $34 RequestDownload, using 34 00 <size:u24>
- $36 transfers the RAM routine
- $36 80 executes it
MOD07 contains a duplicated/non-physical 0x80-byte PMF header followed by the real 0x2C00-byte subordinate image. The second-MPU map currently looks like this:
- 0xBE00–0xBFFF: MOD07 tables/header
- 0xC000–0xE9FF: MOD07 application
- 0xEA00–0xEBFF: MOD08 calibration
- 0xEC00–0xFFFF: resident boot/programming API, security bytes and vectors — missing from SPS
+---------------------
| SPS product distribution
+---------------------
Code: Select all
MOD Part number Function Physical destination
━━━━━━━ ━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MOD01 12658499 Primary operational software 0x80000–0x2FFFFF, plus reconstructed PMF header
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD02 12652313 Vehicle-system calibration 0x20000–0x21C37
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD03 12660444 Fuel-system calibration 0x21C38–0x25F87
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD04 12652319 Vehicle-speed calibration 0x25F88–0x26407
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD05 12660217 Engine-diagnostic calibration 0x26408–0x3422F
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD06 12663071 Engine calibration 0x34230–0x7FFFF
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD07 12638535 Second-MPU operational software HC08 0xBE00–0xE9FF
─────── ───────────── ───────────────────────────────── ─────────────────────────────────────────────────
MOD08 12652302 Second-MPU calibration HC08 0xEA00–0xEBFF#########
A RAM kernel must service two independent MPC-side watchdog paths:
1. MPC5566 core watchdog: clear TSR[ENW] using mtspr 336,0x80000000
2. External companion on DSPI-A/PCS1 using 16-bit odd-parity commands
The companion is first probed with 0x0000. Depending on response bit 15, the keepalive pair is:
- Bit 15 clear: D401, then DC00
- Bit 15 set: DE01, then D600
.


