MCU (iMX7ULP) does not boot after burning fuses for boot configuration

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

MCU (iMX7ULP) does not boot after burning fuses for boot configuration

337件の閲覧回数
HenrikZ
Contributor III

The custom board with an iMX7ULP that working on, is using USDHC1 for there SD card (the EVK is using USDHC0). I have configured the boot pins BT1_CFG8 to "1" such that the SD card is used and the BT1_CFG11, BT1_CFG10 and BT1_CFG9 to "001" to select the USDHC1 and finally BT0_CFG0 to "1" to select dual boot. This works fine, and the MCU is booting as expected.

Now I set the fuses accordingly, and the MCU will not boot.

fuse prog 2 4 0x03000002

Where the hex value above has the following bit pattern:

0000 0011 0000 0000 0000 0000 0000 0010

Bit 2 -> Duel Boot (Boot from A7/eMMC and M4/QSPI)

Bit 24 -> USDHC device type (1 - SD)

Bit 25 -> A7 Boot interface (001 - USDHC1)

After having burned the fuses as described above, the Boot mode is set to "00 - boot from fuses". Now the processor is not showing the u-boot in the terminal (nothing is shown in the terminal). If I'm using an analyzer to see what is going on, on the data0, clock and cmd pins for the SD card (SDHC1), there is communication once the power is turned on, and compared to the communication on the EVK board, the communication looks very similar, without  diving into the bit stream. If I change to back to "Internal boot (Development)" is works fine again. The only difference is the switch between the two boot modes.

Why is the MCU not booting after having burned the boot config fuses and set boot mode to "boot from fuses"?

Which other sittings could prevent the MCU from booting when switching from "Internal boot" to "Boot from fuses"?

Regards

Henrik

 

 

ラベル(1)
タグ(3)
0 件の賞賛
返信
4 返答(返信)

312件の閲覧回数
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

Could you please confirm if the board enters to serial download mode when you boot from fuses?

Best regards.

0 件の賞賛
返信

289件の閲覧回数
HenrikZ
Contributor III

Hi

Yes, after having checked, the board does go into download mode, when booting from fuses.

This is confusing, since the reference manual (IMX7ULPRMB2, Rev. 0, 09/2020) chapter 35.2.9 says that uSDHC0 and uSDHC1 is canned and if a valid boot image is found, that image will be loaded:

In manufacture mode, SD or MMC card will be scanned on uSDHC0 and uSDHC1. If
card is detected and valid boot image is found in card, then the boot image will be loaded and then executed. Pad of SD1_CD is used to detect whether card is inserted.

I didn't see that the MCU started booting from the SD card even though there was a valid boot image on the card, that worked fine for "Internal boot" but not for " Boot from fuses". In chapter 35.2.2.1.1 i found the following:

Setting BT_FUSE_SEL=0 in Boot From Fuse Mode forces the ROM code to jump
directly to the Serial Downloader. This allows a bootloader to be downloaded which can then provision the boot device with a Program Image and blow the BT_FUSE_SEL and the other boot configuration eFUSEs.

This seems a little contradictory to the first quote, since manufacturing mode is enabled as default, when no fuses are configured, but here it says that with BT_FUSE_SEL=0, the MCU will always jump to "Serial Downloader mode".

However I burned the  "BT_FUSE_SEL" and the MCU booted correctly, but leads to another questions - would have achieved the same by "Disable SDMMC Manufacture mode"? And in which cases would you prefer to set "Disable SDMMC Manufacture mode" instead of BT_FUSE_SEL?

Regards Henrik

 

0 件の賞賛
返信

233件の閲覧回数
edwardtyrrell
Senior Contributor I

Hi @HenrikZ,

I've just cracked a similar issue, here are my findings if they help..

1) Guarantee your uboot is outputting debug to the correct peripheral. The latest Yocto 6.12.20 defaults to HDMI and has disabled the usual uart output. I ended up using the imx7s-warp as a known uart serial output. Whatever the case, verify uboot on something else.

2) Read you fuses in uboot: 

=> fuse read 1 0 4  (imx7s - imx7d)
Reading bank 1:
Word 0x00000000: 20000200 10220000 00000000 10002820

The fuse banks are described in the RM for your specific chip.

3) If you have no OS or uboot in eMMC, your device will revert back to serial mode, check you have the correct images (fuse and IO dependant).

edwardtyrrell_0-1757411043300.png

 

 4) Re the above, check your eMMC etc.

uboot=> mmc info

uboot=> mmc parts

My issue was the imx couldn't find the uboot image in flash so it reverted back to serial download mode. With the new unprogrammed eMMC (or whatever you use) make the necessary partitions, make one partition bootable (flags 0x0c) for uboot, the others for the kernel, dtb and FS. For that I used a variety of Linux tools such as dd, disks, gparted, mkfs etc together with some uboot commands. Most of the Linux desktop commands I robbed from a old MFGTool xml script. Once the image was on board it worked. 

4) If using an EVK the boot dip switches can override booting and will put you back into serial download mode - which is useful for reflashing. Make sure they are correct. 

Hope some of this may help.

0 件の賞賛
返信

264件の閲覧回数
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

1. No, those functions have different applications.

2. Disable SDMMC Manufacture mode needs to be used when one boot option is not available and needs to use an alternative.

Best regards. 

0 件の賞賛
返信