AR# 66846

Method to boot from SD or eMMC from QSPI

Description

I have my SD on SD1, not SD0, so I cannot boot from it.

How can I get the FSBL to hand off to the SD.

Solution

SD:

1) In the FSBL main.c file, you can force the value of the BootModeRegister at line 376 to be SD_MODE by making the following change:

/*
* Read bootmode register
*/
// comment out these two lines
//BootModeRegister = Xil_In32(BOOT_MODE_REG);
//BootModeRegister &= BOOT_MODES_MASK;

//add this line
BootModeRegister = SD_MODE;

2) Create a boot.bin with this image, and program it into the QSPI.

3) Program the same FSBL with the rest of the boot image (bitstream, uBoot, Linux, etc.) on the SD card. 

4) Boot from QSPI. The FSBL will start from QSPI, then move to the SD card when it reaches the above line.

It will then ignore the setting of the Boot Mode pins.

eMMC:

eMMC has not been tested for this, but the same method should work to hand off to eMMC with the following changes:

1) Edit the system.mss and select to modify the BSP settings.

2) In the Board Support package Settings window, select xilffs and set "enable_mmc" to true.

3) Re-generate the BSP source.

4) Edit the main.c of the FSBL to select the MMC_MODE with this line:

BootModeRegister = EMMC_MODE;

AR# 66846
Date 02/28/2019
Status Active
Type General Article
Devices