Boot u-boot from SD on Verdin iMX8MP and ivy dev board

Hello,

I have built a kernel, rootfs, and U-Boot using Buildroot, based on Yocto’s configurations. The kernel and rootfs work fine.

Now I want to test my custom U-Boot build. I flashed U-Boot onto the SD card following NXP’s recommendations, inserted the SD card into the SD slot, and held the recovery button while powering on the Ivy board.

However, booting my custom U-Boot from the SD card fails. It seems that the SD card power supply is not being enabled. This might be related to the SD1_PWR_EN signal, so I modified the hardware (moved resistor R155 to R154) to ensure the SD card is powered continuously. Despite this change, the board still does not boot from SD, and there is no observable activity on the SD interface.

My questions are:

  1. Is booting U-Boot from an SD card supported on the Verdin iMX8MP?

  2. Are the SD card signals from the i.MX8MP directly connected to the Verdin interface?

Thanks in advance for your help.

Best regards,

BartT

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


SD Card Boot Support and Interface Configuration

Based on the Toradex documentation, I can address your questions about the Verdin iMX8M Plus SD card boot functionality:

1. SD Card Boot Support

Yes, booting U-Boot from an SD card is supported on the Verdin iMX8M Plus. The module features three SDIO interfaces, with USDHC2 specifically designated as the “Always Compatible” Verdin SD interface that supports SD Memory Cards (1).

2. SD Card Signal Connections

The SD card signals from the i.MX8MP are directly connected to the Verdin interface through USDHC2. According to the Verdin iMX8M Plus V1.1 datasheet, the SD card interface signals are mapped as follows (1):

X1 Pin Verdin Standard Function i.MX 8MP Ball Name i.MX 8MP Function I/O Voltage Description
74 SD_1_CMD SD2_CMD USDHC2_CMD I/O 3.3/1.8 V Command, enable SoC pull-up resistor
80 SD_1_D0 SD2_DATA0 USDHC2_DATA0 I/O 3.3/1.8 V Serial Data 0, enable SoC pull-up resistor
82 SD_1_D1 SD2_DATA1 USDHC2_DATA1 I/O 3.3/1.8V Serial Data 1, enable SoC pull-up resistor
70 SD_1_D2 SD2_DATA2 USDHC2_DATA2 I/O 3.3/1.8 V Serial Data 2, enable SoC pull-up resistor
72 SD_1_D3 SD2_DATA3 USDHC2_DATA3 I/O 3.3/1.8V Serial Data 3, enable SoC pull-up resistor
78 SD_1_CLK SD2_CLK USDHC2_CLK O 3.3/1.8V Serial Clock
84 SD_1_CD# SD2_CD_B USDHC2_CD_B I 3.3/1.8V Card Detect, enable SoC pull-up resistor
76 SD_1_PWR_EN SAI2_RXC GPIO4_IO22 O 1.8 V Enable pin for SD card power rail

Power Supply Configuration

Regarding the SD1_PWR_EN signal, the documentation indicates that this is a regular GPIO pin (GPIO4_IO22) that controls the SD card power rail and does not change IO voltage level with the rest of the SD card signal pins (1). The IO voltage of the USDHC2 interface is provided by the LDO5 output of the power management IC (PMIC), and the voltage level is controlled by the dedicated VSELECT output located on the GPIO1_IO04 ball of the SoC (1).

U-Boot Build Process

For building U-Boot specifically for the Verdin iMX8M Plus, you should follow the upstream U-Boot documentation referenced in our build guide (2). The module uses the upstream U-Boot version, and specific instructions are available for the Verdin iMX8M Plus in the U-Boot documentation.

Troubleshooting Recommendations

Since you’ve modified the hardware to provide continuous power to the SD card, ensure that:

  • Your custom U-Boot binary is properly formatted for the i.MX8M Plus boot requirements
  • The SD card is formatted correctly with the proper boot partition structure
  • The boot mode configuration is set correctly for SD card boot

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Thanks.

I understand that SD card booting is supported and that the SD-card signals from the i.MX8MP SoC are directly connected to the Verdin interface.

I modified the board so that the SD card is powered all the time—I assume this does not require a U-Boot patch.

When booting into the Toradex Easy Installer (which is the regular boot from eMMC), I can mount and access the SD card. Hence, the hardware seems to be OK.

When I monitor the SD-card signals with an oscilloscope, I see activity when I access the SD card.

However, I do not see any activity on the SD-card lines when powering/booting the board into recovery mode.

Finally, I tried flashing the U-Boot built by Yocto onto the SD card, but it still does not boot—I do not see any output on UART3.

Any further ideas?

Regards,

BartT

Hello,

After some digging, I found that the boot mode is selected by the BOOT_PINS (BOOT_MODE[0] = 0) eFuses or the USB Serial Loader (BOOT_MODE[0] = 1). The eFuses boot mode uses the GPIO BT_FUSE_SEL. Could you tell me how that GPIO is used on the Verdin iMX8M Plus?

Furthermore, the iMX8MP reference manual does not state that the USB Serial Loader automatically falls back to the uSD card. The iMX8MM reference manual does mention this explicitly. Can I therefore assume that the iMX8MP SoC will never attempt to boot from uSD? If that is the case, uSD boot would not be supported.

I look forward to any comments.

Best regards,
BartT

Hey @bartt,

From what I understood, you are trying to boot from the U-Boot inside the SD Card, bypassing the U-Boot from the image flashed onto the board, is that correct?

This could only be modified by the SoC fuses, and we do not support it. We do support booting an image from an SD Card using the U-Boot already flashed onto the board, but if you want the module to use the U-Boot inside the SD Card from the start, I’m afraid we can not help you with that.

Best regards,

Hi Leonardo,

Yes, I want to boot from U-Boot on the SD card. Thanks for confirming that this is not supported.

I guess we will have to use the USB Loader or the Toradex Easy Installer for our manufacturing programming.

Thanks,
BartT

Hi,

I have the USB loader working with our own build u-boot image. Writing out u-boot image to eMMC and booting from u-boot is OK.

This issue has been resolved. Thanks for the support.

1 Like