i.MX95 Boot ROM: Configuring eMMC Boot0/Boot1 as Primary/Secondary and FlexSPI NOR as Recovery Hello Experts, I am trying to understand how the i.MX95 Boot ROM handles the Primary, Secondary, and Recovery boot stages. I have gone through the Reference Manual and some of the U-Boot spl source code, but I am still not clear on how the Recovery boot mechanism is intended to work. My goal is to implement the following boot architecture: Primary boot: eMMC Boot0 Secondary boot: eMMC Boot1 Recovery boot: FlexSPI NOR flash (Golden Recovery Image) While looking through arch/arm/mach-imx/image-container.c, I noticed the following code: printf("Boot stage: ");
if (rom_data.boot_stage == 0x6)
printf("Primary\n");
else if (rom_data.boot_stage == 0x9)
printf("Secondary\n");
else if (rom_data.boot_stage == 0xa)
printf("Recovery\n");
else
printf("USB Serial Download\n"); Based on this, it appears that the Boot ROM supports four boot stages: Primary, Secondary, Recovery, and USB Serial Download. However, I could not find sufficient information explaining how the Recovery stage is selected or configured. I would appreciate some guidance on the following questions: Is it possible to configure FlexSPI NOR flash as the Recovery boot device while using eMMC Boot0 and Boot1 as the Primary and Secondary boot partitions? If this configuration is supported, what is the recommended way to configure it? What is the sequence followed by the Boot ROM when selecting between the Primary, Secondary, and Recovery boot stages? If both Primary and Secondary boot attempts fail, what conditions trigger the Recovery boot stage? What failure conditions can be intentionally reproduced to simulate Recovery mode during development and validation? Is there any documentation or application note that describes the Boot ROM boot selection algorithm and Recovery boot flow in detail? Does the boot device fuse configuration (Fuse Mode) play any role in selecting the Recovery boot device? Is the Recovery device determined by the boot device fuses? Or can the Boot ROM automatically switch to a different boot device (such as FlexSPI NOR) even when the boot device is fused to eMMC? Ultimately, my objective is to have the system normally boot from eMMC Boot0, fall back to eMMC Boot1 if necessary, and finally boot a Golden Recovery Image stored in FlexSPI NOR if both eMMC boot partitions are unavailable or invalid. If anyone has implemented a similar boot architecture or can point me to the relevant documentation or application notes, I would really appreciate your guidance. Thank you in Advance ! BR, Arun Kumar
View full article