Boot from fuses for eMMC

cancel
Showing results for 
Search instead for 
Did you mean: 

Boot from fuses for eMMC

1,586 Views
jsmith883
Contributor III

Hello,

I am trying to boot from fuses on an eMMC, but something is not working right.  The eMMC is is on SD4, 8-bit bus width.  Before blowing the fuses, I was booting from GPIOs on the same eMMC.  The SBMR register was reading 0x5870.  I then set the fuses by the following command:

echo 0x5870 > /sys/fsl_otp/HW_OCOTP_CFG5

echo 0x10 > /sys/fsl_otp/HW_OCOTP_CFG6

Once  I reset the board, the board no longer boots.  When I look at the registers now the SBMR is reading 0x0, and the OCOTP_CFG5 is reading 0x5870.  OCOTP_CFG6 is reading 0x10.  SBMR2 is reading 0x71.

However, if I plug in the OTG USB, the manufacturing tool will boot the board immediately, as if it's configured for serial download.  Any idea why this is not working correctly?

Labels (4)
Tags (4)
0 Kudos
7 Replies

689 Views
joshbarnheiser
Contributor I

jsmith883,

You may be able to do the same as the echo commands using the mmc command in the initramfs.

For your configuration try:

mmc bootpart enable 1 1 /dev/mmcblk1

mmc bootbus set single_hs x1 x8 /dev/mmcblk1

Embedded Linux Boot Scenarios 

Cheers,

Josh

0 Kudos

689 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi jsmith883 

what processor used in the case, in particular for example for i.MX6DQ behaviour

is described in sect.8.2.3 Boot From Fuses mode (BOOT_MODE[1:0] = 00b)

i.MX6DQ Reference Manual :

If set to Boot From Fuses, the boot flow is controlled by the BT_FUSE_SEL eFUSE
value. If BT_FUSE_SEL = 0, indicating that the boot device (for example, flash, SD/
MMC) was not programmed yet, the boot flow jumps directly to the Serial Downloader.

https://www.nxp.com/docs/en/reference-manual/IMX6DQRM.pdf 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

689 Views
jsmith883
Contributor III

@igorpadykov,

I have an i.MX6 DUAL/QUAD processor.  I'm reading BT_FUSE_SEL = 1, so it should be booting from fuses.  It was able to boot from the eMMC using the GPIO pins, so I know that it's already flashed and can boot from this device.  Then when I blew the fuses so that it would boot from fuses, it does not boot.  Is there something else I need to do to the eMMC or some other fuse/register that I need to set?

0 Kudos

689 Views
jsmith883
Contributor III

igorpadykov‌,

Any thoughts?  Is there something else I need to do to the eMMC or some other fuse/register that I need to set for it to properly boot?

0 Kudos

689 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi jsmith883 

could you read back fuses and verify that they are programmed correctly.

Q&A: How to program i.MX6 eFUSE? 

Fuse API - Boundary Devices 

Best regards
igor

0 Kudos

689 Views
jsmith883
Contributor III

igorpadykov‌,

The fuses are reading back correctly.  Here is what I read via JTAG: OCOTP_CFG5 is reading 0x5870.  OCOTP_CFG6 is reading 0x10.  Before I always had to set the boot_config and boot_bus_config for the eMMC to boot, but I can't do this with the manufacturing tool.

echo 8 > /sys/bus/mmc/devices/mmc1\:0001/boot_config
echo 2 > /sys/bus/mmc/devices/mmc1\:0001/boot_bus_config

Is there a way to set this with the manufacturing tool?

0 Kudos

689 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi jsmith883 

I believe it may be supported by mfg tool, please check ucl2.xml file

  <LIST name="eMMC" desc="Choose eMMC as media">

in mfg tool package on link below

i.MX Software|NXP 

Best regards
igor

0 Kudos