Good day,
Have you managed to solve your e-Fuse boot problem?
I'm successfully using the Super Root Key to boot a signed u-boot. I'm trying to lock down the boot sequence to only use the eMMC. There's also a fallback to SD if the DISABLE_SDMMC_MFG bit is left at 0.
Before setting the fuses I've used the development kits external boot select switches to successfully boot from SD and eMMC.
The iMX 8M Mini application processor reference manual was used to look up the
meaning of the register definitions.
OCOTP_HW_OCOTP_BOOT_CFG0 register:
3035_0470 Value of OTP Bank1 Word3
Register fields defined on page 823 & p824
[15: 0] BOOT_CFG
Page 816: Boot fusemap : eMMC
[0] - IO voltage selection (Manufacture mode) : 0=3V3
[1] - IO voltage selection (Normal boot mode) : 0=3V3
[3:2] - Speed : 00=Normal
[6:4] - Bus width : 010=8-bit
[7] - Fast boot: 0=Regular
[8] - SD loopback : 0=Through SD pad
[9] - Power cycle : 0=Disable
[11:10]- Port select : 10=uSDHC3
[14:12]- Boot device select : 010=eMMC (According to p815, Table 6-41)
[15] - Reserved
[24:16] Reserverd
[25] SEC_CONFIG[1] : 1x - Closed (HAB Security On)
[27:26] Reserved
[28] BT_FUSE_SEL : 1=Boot config from eFuses
[29] FORCE_COLD_BOOT : 1=Always cold boot. Higher security
[31:30] Reserved
The programmed fuse value:
u-boot=> fuse sense 1 3 1
Sensing bank 1:
Word 0x00000003: 0x32002820
When u-boot is programmed into eMMC, it boots it regardless of the external bootpin settings.
If I wipe the u-boot from eMMC, it will load the u-boot on the SD card if the external boot pins are
set to Mode0=1, Mode1=0
I expect the boot ROM is falling back to SD due to SDMMC_MFG (manufacture mode) still being active.
Page 824 defines further boot config registers:
3035_0480 Value of OTP Bank2 Word0 (OCOTP_HW_OCOTP_BOOT_CFG1)
3035_0490 Value of OTP Bank2 Word1 (OCOTP_HW_OCOTP_BOOT_CFG2)
3035_04A0 Value of OTP Bank2 Word2 (OCOTP_HW_OCOTP_BOOT_CFG3)
3035_04B0 Value of OTP Bank2 Word3 (OCOTP_HW_OCOTP_BOOT_CFG4)
Page 817 -- 819 covers the register fields. The registers were not altered. The default values are:
u-boot=> fuse sense 2 0 4
01000010 00000000 00000000 00000000
I didn't use the FastBoot option.
Regards,
Frikkie