Selecting the Active Boot Chain by BootROM
The BootROM, which is the root boot chain, is responsible for selecting the Active Boot Chain after the system powers up. The selection sequence is as follows:
- Read
bf_bl_gpio_select_boot_chain_1b,u32_num_boot_chainsandu32_non_gpio_select_boot_chaininformation from BR BCT. - If
bf_bl_gpio_select_boot_chain_1bis enabled, read the value ofu32_num_boot_chains.If
u32_num_boot_chainsis less than 3, then read onlySOC_GPIO31and use the input value as a Boot Chain. A GPIO value of 0 sets Boot Chain A as an Active Boot Chain, while a GPIO value of 1 sets Boot Chain B as an Active Boot Chain.If
u32_num_boot_chainsis 3, then readSOC_GPIO31for bit 0 andSOC_GPIO41for bit 1 of chain selection. For GPIOs value of 00b sets Boot Chain A as an Active Boot Chain, for GPIOs value of 01b sets Boot Chain B as an Active Boot Chain, and for GPIOs value of 10b sets Boot Chain C as an Active Boot Chain. - If
bf_bl_gpio_select_boot_chain_1bis not enabled and it is a cold boot, BootROM usesu32_non_gpio_select_boot_chainvalue in BR BCT as an Active Boot Chain. Value 0 sets Boot Chain A, value of 1 sets Boot Chain B as Active Boot Chain, and value of 2 set Boot Chain C if supported. - If
bf_bl_gpio_select_boot_chain_1bis not enabled and it is not a cold boot, BootROM uses the active boot chain defined in theSCRATCHrregister.
The flow is as follows: