Dear team,
I would like to ask about boot switching of i.MX6SoloX.
My customer wants to switch boot media below.
BOOT_MODE[1:0] can be configured by DIPS switch on their board.
When BOOT_MODE[1:0] = 10, i.MX6X on their board acts as Boot from SD card.
When BOOT_MODE[1:0] = 00, i.MX6X acts as Boot from eFuse mode.
And because eFuse parameters (except BT_FUSE_SEL bit) are configured as ‘Boot from QSPI’, then i.MX6SX boot from QSPI ROM when BOOT_MODE[1:0] is set to 00.
As a result, boot from QSPI/SD card can be switched by using BOOT_MODE[1:0] setting.
Is above scenario reasonable?
Thanks,
Miyamoto
Solved! Go to Solution.
Hi,
Once you blow BT_FUSE_SEL only the internal eFuses will be used to select the boot device, so you are fixed to a single boot device (there is a BOOT lock fuse that can also be blown to prevent any further tampering with the BOOT_CFG eFuses, if this is not blown then eFuses not already blown ("1") can still be blown to change from 0 to 1, but there is no way to go back from 1 to 0).
The summary here is using eFuses is intended to support one boot device only.
If you wish to support two (or more) different boot devices you need to boot from the BOOT_CFG pins and select BOOT_MODE 0b10.
To allow multiple boot sources -
Regards
Ross
Hello Ross,
Thanks a lot for your kindly explanation!
BR,
Miyamoto
Dear Igor-san,
Thanks for your answer.
Could you tell us any good ways to switch the following options by setting CPU external pins with fixed BT_FUSE_SEL ?
option 1 : Boot from GPIO setting.
option 2 : Boot from eFuse mode.
Best regards,
Hi Tomohiro
sorry, I am not aware of other boot options except
described in RM.
Best regards
igor
Hi Igor,
As the result, I understand that blowing out BT_FUSE_SEL(BT_FUSE_SEL=1) is needed to use FUSE parameters for selecting boot media.
Correct?
BR,
Miyamoto
Hi Miyamoto
yes blowing BT_FUSE_SEL=1 selects boot mode from fuses.
Best regards
igor
Hi,
Once you blow BT_FUSE_SEL only the internal eFuses will be used to select the boot device, so you are fixed to a single boot device (there is a BOOT lock fuse that can also be blown to prevent any further tampering with the BOOT_CFG eFuses, if this is not blown then eFuses not already blown ("1") can still be blown to change from 0 to 1, but there is no way to go back from 1 to 0).
The summary here is using eFuses is intended to support one boot device only.
If you wish to support two (or more) different boot devices you need to boot from the BOOT_CFG pins and select BOOT_MODE 0b10.
To allow multiple boot sources -
Regards
Ross
Dear igor-san and Ross-san,
Thank you so much for your kind reply!
Hi Miyamoto
yes this is reasonable but depends on BT_FUSE_SEL fuse:
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for your support.
Actually, the customer tried to let i.MX6X go to boot from QSPI with BT_FUSE_SEL=0 and BOOT_MODE[1:0]=00. But it could not work.
And they saw Boot from QSPI was achieved by setting BT_FUSE_SEL=1.
They now think BT_FUSE_SEL=1 is needed to achieve boot from QSPI.
Is it true?
I think BOOT_MODE[1:0]=00 is enough for boot from QSPI if the other EFUSE parameters are set correctly for QSPI boot.
And they can change QSPI/SD boot by setting only BOOT_MODE[1:0] pads setting.
Could you tell me which is right?
Thanks,
Miyamoto
Hi Miyamoto
>Actually, the customer tried to let i.MX6X go to boot from QSPI with BT_FUSE_SEL=0
>and BOOT_MODE[1:0]=00. But it could not work.
this behaviour is described in sect.8.2.3 Boot From Fuses mode (BOOT_MODE[1:0] = 00b)
i.MX6SX Reference Manual
http://cache.freescale.com/files/32bit/doc/ref_manual/IMX6SXRM.pdf
"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."
Best regards
igor
Dear Igor-san,
I am the customer of Miyamoto-san.
Thank you very much for your support.
We want to switch boot mode as Miyamoto-san said,
When BOOT_MODE[1:0] = 10, i.MX6X on their board acts as Boot from SD card.
When BOOT_MODE[1:0] = 00, i.MX6X acts as Boot from eFuse mode (we have set to QSPI).
However, if BT_FUSE_SEL = 1, we can not switch the modes by setting BOOT_MODE[1:0] because
BOOT_MODE[1:0] = 10 -> Boot from eFuse mode (QSPI), not from the board settng (SD card)
BOOT_MODE[1:0] = 00 -> Boot from eFuse mode (QSPI)
Moreover, if BT_FUSE_SEL = 0, we can not switch too.
BOOT_MODE[1:0] = 10 -> Boot from serial downloader, not from the board settng (SD card)
BOOT_MODE[1:0] = 00 -> Boot from eFuse mode (QSPI).
It seems there is no way to switch the modes by setting BOOT_MODE[1:0].
Is it right? If so, could you tell us another way to switch the modes by CPU external pins?
Best regards,
Hi Tomohiro
for case BT_FUSE_SEL = 1 all boot options are summarized in sect.8.2.3, 8.2.5 RM:
In Internal Boot mode (BOOT_MODE[1:0] = 0b10):
If BT_FUSE_SEL = 1, all boot options are controlled by the eFUSEs
In Boot From Fuses mode (BOOT_MODE[1:0] = 00b):
if BT_FUSE_SEL is blown (BT_FUSE_SEL = 1) ROM code performs an
internal boot according to eFUSE settings.
Best regards
igor
Hi Igor,
Does it mean that setting eFuse BT_FUSE_SEL into 1 is needed to achieve Boot from QSPI?
BR,
Miyamoto