Introduction to the bootstrap mode of the SBEC3 PCM

The prerequisite of re-programming an SBEC3 PCM is to be able to put the PCM in bootstrap mode. This is fairly simple. All you need to do is to jump battery voltage to the SCI-RX pin while key is off, turn key on and remove jumper wire.

GitHub repository for bootstrap and bootloader source files and more technical information: SBEC3Library

Before attempting to follow the examples below make sure that the scanner firmware and GUI versions are up to date.

Enter bootstrap mode

  1. Turn key off, connect power supply / battery, disconnect scanner.
  2. Jump battery voltage to SCI-RX pin (OBD2 pin 16 to 6 for SCI-A config).
  3. Turn key on.
  1. Remove jumper wire.
  2. Connect scanner.
  3. Start GUI.

At this point the PCM is not able to execute any engine controller functions so don’t try to start the engine.

The new scanner version (V2.0.0) will perform these steps automatically while connected to the OBD2 port. Turning key off and on at request will be still necessary.

Upload bootloader

In bootstrap mode communication takes place at 62500 baud speed. Change it manually and not with the SCI ID 12 command. Next, open the Bootstrap tools form with the Tools / Bootstrap tools menu.

Select the appropriate bootloader according to the flash memory size. When in doubt select SBEC3 (256k). Next, click on the Bootstrap button. Unlocking the PCM and uploading the bootloader takes only a moment.

The scanner reports success if it doesn’t encounter errors along the process. The uploaded bootloader resides in the PCM’s RAM. When key is turned off the bootloader is naturally erased. Flash memory content is safe.

Upload worker functions

The bootloader’s sole purpose is to configure the microcontroller inside the PCM and to be able to download worker functions that are actually performing different tasks. These functions are the extensions of the bootloader. To keep the occupied space in RAM small only one worker function can run at any given time. Every new upload overwrites the previous worker function.

Read part number

Let’s try to read the PCM part number. Select the "P/N read" function and click on the Upload button. Ideally the scanner reports success.

Next, click on the Start button to execute the function.

The function returns a 30 bytes long message.

21 
04 60 61 13 0A 04 60 61 13 0A C4 FF FF FF FF FF FF FF FF FF 
FF FF FF FF FF FF FF FF AA

First byte is always 21 indicating that the worker function has been started. Next 20 bytes are read from the flash memory. Last 9 bytes are read from EEPROM. It depends on the PCM which memory contains the part number. Sometimes both, sometimes EEPROM only.

In this case the same part number (04606113) is repeated twice in the flash memory and EEPROM has it blanked out.

In the example below a different part number is contained in both memories (56041539AE):

21 
56 04 15 39 41 45 00 56 04 15 39 41 45 00 5A 42 5A 41 42 00
56 04 15 39 41 45 FF FF FF

Read flash memory

Select the "Flash read" function and click on the Upload button.

Next, open the Read memory form with the Tools / Read memory menu. Select SCI-bus (PCM) tab and change the parameters like shown below.

The read flash memory command is 20.
Due to the bootloader not mounting the flash memory to zero offset the "Start offset" must always be "04 00 00".

End offset depends on the chip size.
For 128 kB (1 Mb): "05 FF FF".
For 256 kB (2 Mb): "07 FF FF".

Increment should be "00 00 80" to read 128 bytes in one go.
This value must be a power of 2 and no greater than 128.

Click on the "Initialize session" button and then on the Start button.

Compared to the conventional low-speed SCI ID 26 reading method this process is lightning fast. It takes only a few minutes to read the whole flash memory.

Exit bootstrap mode

Turn key off and then on. The PCM will start up normally.

Upcoming worker functions

More functions are coming to be able to erase and re-program flash memory. However, this won’t be possible with scanner versions V1.5.0 and below.

Erasing and re-programming requires precise pulsing of 20 volts to the SCI-RX pin. This feature will be added to the next scanner version (V2.0.0).

Leave a comment