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:

AddressCommandData
32-bit block16-bit blockn 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:

CommandDescriptionaddr(31:0)data(n*32-1:0)
0x0000Write word on one address0xAAAAAAAA(1)0xDDDDDDDD(2)
0x0001Write words on consecutive addresses0xAAAAAAAA(1)0xDDD…DDD(2) (3)
0x0002Read words on consecutive addresses0xAAAAAAAA(1)0x000…000(4)
0x0003Read word on one address0xAAAAAAAA(1)0x00000000
0x0004Write number of decryption packets0x000000000x0000DDDD(2)
0x0005Write decryption initial vector0x000000000xDDD…DDD(2) (3)
0x0006Write decryption signature0x000000000xDDD…DDD(2) (3)
0x0007Write 128 bit fuses value to Buffer register0x000000000xDDD…DDD(2) (3)
0x0008Write Buffer register to Tamper register for KEY_ENC_FUSES0x000000000x00000000
0x0009Write Buffer register to Tamper register for KEY_TAG_FUSES0x000000000x00000000
0x000BWrite Buffer register to Tamper register for CONTROL_FUSES0x000000000x00000000
0x000CBlow desired fuses0x000000000x00000000
0x000DWrite KEY_ENC_FUSES to the corresponding Tamper register0x000000000x00000000
0x000EWrite KEY_TAG_FUSES to the corresponding Tamper register0x000000000x00000000
0x0010Write CONTROL_FUSES to the corresponding Tamper register0x000000000x00000000
0x0011Read Tamper register0x000000000x000…000(4)
0x0012Read bootloader status0x000000000x00000000
0x0013Start Decryption 0x000000000x00000000
0x0014Start/Stop BOOTLOADER access window in Host mode0x000000000x00000000
0x0015Start Decryption Plus0x000000000x00000000
0xA55AControl of MISO signal transferred to M7-SPI0x000000000x00000000
0xA66AControl of MISO signal transferred to M7-SPI and Bootloader clock disabled0x000000000x00000000
0xDE05Unblock bootloader0x000000000xDDDDDDDD(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.