Intel® Arria® 10 Hard Processor System Technical Reference Manual

ID 683711
Date 8/28/2023
Public
Document Table of Contents

7.1.3.7.1. Boot Configuration

Booting configuration is provided from a combination of the BSEL pins and the boot mode fuses. The BSEL pins indicate if the boot source is the FPGA or one of the HPS flash interfaces. If the fpga_boot_f fuse is blown, it overrides these pin values. The fpga_boot_f fuse value can be read from the hps_fusesec register.

Table 34.  BOOTSEL Field Values and Flash Device Selection

BOOTSEL Field 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

Within the device, there are fuses that provide some of the boot mode configuration information. The fuse values can be read through the HPS_fusesec register:

Table 35.   HPS_fusesec Register Description

Bits

Name

Description

31:27 Reserved

Bit values in this field are undefined.

26:23 csel_f

This field indicates the value of the clock select fuses that are available for configuring the clock for the boot interface and for the PLLs. Refer to the Clock Configuration section for more information on CSEL encodings.

22 dbg_access_f This fuse determines the initial state of the debug access domains.
21 dbg_lock_JTAG This field indicates if the HPS JTAG access level can be changed through software when the HPS is released from reset.
  • 0x0= HPS JTAG access level can be changed through the sec_jtagdbg register.
  • 0x1= HPS JTAG access level cannot be changed (locked).
20 dbg_lock_DAP This field indicates if the DAP access level can be changed through software when the HPS is released from reset.
  • 0x0= The DAP access level can be changed through the sec_dapdbg register.
  • 0x1= The DAP access level cannot be changed (locked).
19 dbg_lock_CPU0 This field indicates if the CPU0 debug access level can be changed through software when the HPS is released from reset.
  • 0x0= CPU0 debug access level can be changed through the sec_cpu0dbg register.
  • 0x1= CPU0 debug access level cannot be changed (locked).
18 dbg_lock_CPU1 This field indicates if the CPU1 debug access level can be changed through software when the HPS is released from reset.
  • 0x0= The CPU1 debug access level can be changed through the sec_cpu1dbg register.
  • 0x1= The CPU1 debug access level cannot be changed (locked).
17 dbg_lock_CS This field indicates if the CoreSight debug access level can be changed through software when the HPS is released from reset.
  • 0x0= The CoreSight debug access level can be changed through the sec_csdbg register.
  • 0x1= The CoreSight debug access level cannot be changed (locked).
16 dbg_lock_FPGA This field indicates if the FPGA debug access level can be changed through software when the HPS is released from reset.
  • 0x0= The FPGA debug access level can be changed through the sec_fpgadbg register.
  • 0x1= The FPGA debug access level cannot be changed (locked).
15:12 Reserved

Bit values in this field are undefined.

11 clr_ram_order_f

This fuse value determines how RAMs are cleared during a tamper event.

  • 0x0= All RAMs are cleared in parallel.
  • 0x1= All RAMs are cleared in series.
10 clr_ram_cold_f

This fuse value indicates what happens to the RAM on a cold reset.

  • 0x0= All RAMs are not cleared on a cold reset.
  • 0x1= All RAMs are cleared on a cold reset.
9 clr_ram_warm_f

This fuse value indicates what happens to the RAMs on a warm reset.

  • 0x0= All RAMs are not cleared on a warm reset.
  • 0x1= All RAMs are cleared on a warm reset.
8 oc_boot_f

This fuse value determines if the second-stage boot code is allowed to boot from on-chip RAM.

  • 0x0= Second-stage boot can be from on-chip RAM if enabled by the System Manager.
  • 0x1= Second-stage boot is not from on-chip RAM.
7 hps_clk_f

This fuse value selects the clock used for the boot process and in the case of a tamper event, memory scrambling.

  • 0x0= The external oscillator, HPS_CLK1, is used for boot.
  • 0x1= The internal oscillator, cb_intosc_ls_clk, is used for boot.
6 fpga_boot_f

If blown, this fuse value allows the FPGA to configure independently and allows the HPS to boot from an encrypted next-stage boot source that was decrypted into the FPGA.

  • 0x0= Booting is dependent on the BSEL pins.
  • 0x1= HPS only boots from the FPGA; BSEL options are ignored and CSEL fuse options are ignored.
5 aes_en_f

This fuse value indicates if a decryption of the flash image is always performed.

  • 0x0= An AES decryption of the flash image is determined from the second stage boot loader header.
  • 0x1= An AES decryption of the flash image is always performed.
4:2 kak_src_f

This bit field indicates the source of the Key Authorization Key (KAK) which can be in:

  • Proprietary ROM
  • FPGA logic elements
  • User fuses
1 kak_len_f

This fuse value indicates the Key Authorization Key (KAK) length:

  • 0x0= 256 bits
  • 0x1= 384 bits
0 authen_en_f

This fuse value determines whether authentication of flash images is required prior to execution.

  • 0x0= No authentication of the flash image is required prior to execution.
  • 0x1= HPS authentication of all flash images is required prior to execution.