7.4 Functional Description

The bootloader loads the program from an external host to the internal memory of the PL460. The external host can access the instruction memory, data memory and registers through SPI. The bootloader only works in SPI Mode 0 (CPHA=1 and CPOL=0). The basic data transfer is:

The basic frame sent from the host through the MOSI signal is composed as shown in the following table:

Address Command Data
32-bit block 16-bit block n blocks of 32 bits

All the blocks in the basic frame sent by MOSI use little-endian format.

Each frame received from the host will be acknowledged with a 32-bit signature through the MISO signal.

There is a series of SPI commands supported by the bootloader. The commands are:

Command Description addr(31:0) data(n*32-1:0)
0x0000 Write word on one address 0xAAAAAAAA(1) 0xDDDDDDDD(2)
0x0001 Write words on consecutive addresses 0xAAAAAAAA(1) 0xDDD…DDD(2) (3)
0x0002 Read words on consecutive addresses 0xAAAAAAAA(1) 0x000…000(4)
0x0003 Read word on one address 0xAAAAAAAA(1) 0x00000000
0x0004 Write number of decryption packets 0x00000000 0x0000DDDD(2)
0x0005 Write decryption initial vector 0x00000000 0xDDD…DDD(2) (3)
0x0006 Write decryption signature 0x00000000 0xDDD…DDD(2) (3)
0x0007 Write 128 bit fuses value to Buffer register 0x00000000 0xDDD…DDD(2) (3)
0x0008 Write Buffer register to Tamper register for KEY_ENC_FUSES 0x00000000 0x00000000
0x0009 Write Buffer register to Tamper register for KEY_TAG_FUSES 0x00000000 0x00000000
0x000B Write Buffer register to Tamper register for CONTROL_FUSES 0x00000000 0x00000000
0x000C Blow desired fuses 0x00000000 0x00000000
0x000D Write KEY_ENC_FUSES to the corresponding Tamper register 0x00000000 0x00000000
0x000E Write KEY_TAG_FUSES to the corresponding Tamper register 0x00000000 0x00000000
0x0010 Write CONTROL_FUSES to the corresponding Tamper register 0x00000000 0x00000000
0x0011 Read Tamper register 0x00000000 0x000…000(4)
0x0012 Read bootloader status 0x00000000 0x00000000
0x0013 Start Decryption 0x00000000 0x00000000
0x0014 Start/Stop BOOTLOADER access window in Host mode 0x00000000 0x00000000
0x0015 Start Decryption Plus 0x00000000 0x00000000
0xA55A Control of MISO signal transferred to M7-SPI 0x00000000 0x00000000
0xA66A Control of MISO signal transferred to M7-SPI and Bootloader clock disabled 0x00000000 0x00000000
0xDE05 Unblock bootloader 0x00000000 0xDDDDDDDD(2)
Notes:
  1. ‘AA’ is an address byte.
  2. ‘DD’ is a data byte.
  3. Command contains as many bytes as needed to send.
  4. Command contains as many ‘00’s as bytes wanted to be read.

The figure below shows the structure of the registers and data transfers for fuses and their control logic.