Visible to Intel only — GUID: sfo1410070149016
Ixiasoft
Visible to Intel only — GUID: sfo1410070149016
Ixiasoft
1.3.1. Boot Select
The boot select (BSEL) pins offer multiple methods to obtain the second-stage boot image. On a cold reset, the boot source is determined by a combination of secure boot fuses and BSEL pins. These fuse values and BSEL pin values are sent to the Security Manager module of the HPS when the cold reset occurs. When the HPS is released from reset, the boot ROM reads the bootinfo register of the System Manager to determine the source of the boot.
BSEL[2:0] Value | Flash Device |
---|---|
0x0 | Reserved |
0x1 | FPGA (HPS-to-FPGA bridge) |
0x2 | 1.8 V NAND flash memory |
0x3 | 3.0 V NAND flash memory |
0x4 | 1.8 V SD/MMC flash memory with external transceiver |
0x5 | 3.0 V SD/MMC flash memory with internal transceiver |
0x6 | 1.8 V quad SPI flash memory |
0x7 | 3.0 V quad SPI flash memory |
The typical boot flow is for the boot ROM code to find the second-stage boot loader image on a flash device, load that into on-chip RAM and execute it. After a warm reset, the boot ROM code can be instructed to find the image in RAM and execute that.
The HPS flash sources can store various file types, such as:
- FPGA programming files
- Second-stage boot loader binary file (up to four copies)
- Operating system binary files
- Application file system
The second-stage boot loader image in flash can be authenticated and decrypted by the HPS. A boot directly from the HPS on-chip RAM is always unauthenticated and in clear text, although it may have an optional CRC if required.
When the BSEL value is 0x1, the FPGA is selected as the boot source for that boot. This selection is not permanent as it is when the fpga_boot_f fuse is enabled. In both cases, the CSEL fuses are also ignored and the HPS must be held in reset until the FPGA is powered on and programmed to prevent the boot ROM from misinterpreting the boot source.
If an HPS flash interface has been selected to load the boot image, then the boot ROM enables and configures that interface before loading the boot image into on-chip RAM, verifying it and passing software control to the second-stage boot loader.
If the FPGA fabric is the boot source, the boot ROM code waits until the FPGA portion of the device is in user mode, and is ready to execute code and then passes software control to the second-stage boot loader in the FPGA RAM.