Question, i.MX6SX boot mode switching

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Question, i.MX6SX boot mode switching

Jump to solution
1,894 Views
Aemj
Contributor IV

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

Labels (1)
0 Kudos
1 Solution
1,390 Views
RossMcLuckie
NXP Employee
NXP Employee

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 -

  • Use BOOT_MODE 0b10
  • Don't blow BT_FUSE_SEL
  • Use GPIO to set required BOOT_CFG settings

Regards

Ross

View solution in original post

0 Kudos
13 Replies
1,390 Views
Aemj
Contributor IV

Hello Ross,

Thanks a lot for your kindly explanation!

BR,

Miyamoto

0 Kudos
1,390 Views
tomohirokawachi
Contributor II

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,

0 Kudos
1,390 Views
igorpadykov
NXP Employee
NXP Employee

Hi Tomohiro

sorry, I am not aware of other boot options except

described in RM.

Best regards
igor

0 Kudos
1,390 Views
Aemj
Contributor IV

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

0 Kudos
1,390 Views
igorpadykov
NXP Employee
NXP Employee

Hi Miyamoto

yes blowing BT_FUSE_SEL=1 selects boot mode from fuses.

Best regards
igor

0 Kudos
1,391 Views
RossMcLuckie
NXP Employee
NXP Employee

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 -

  • Use BOOT_MODE 0b10
  • Don't blow BT_FUSE_SEL
  • Use GPIO to set required BOOT_CFG settings

Regards

Ross

0 Kudos
1,390 Views
tomohirokawachi
Contributor II

Dear igor-san and Ross-san,

Thank you so much for your kind reply!

0 Kudos
1,390 Views
igorpadykov
NXP Employee
NXP Employee

Hi Miyamoto

yes this is reasonable but depends on BT_FUSE_SEL fuse:

pastedImage_1.jpg

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

0 Kudos
1,390 Views
SLICE
Contributor IV

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

0 Kudos
1,390 Views
igorpadykov
NXP Employee
NXP Employee

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

0 Kudos
1,390 Views
tomohirokawachi
Contributor II

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,

0 Kudos
1,390 Views
igorpadykov
NXP Employee
NXP Employee

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

0 Kudos
1,390 Views
Aemj
Contributor IV

Hi Igor,

Does it mean that setting eFuse BT_FUSE_SEL into 1 is needed to achieve Boot from QSPI?

BR,

Miyamoto

0 Kudos