BOOT_MODE + BT_FUSE_SEL confusion on imx6s

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

BOOT_MODE + BT_FUSE_SEL confusion on imx6s

4,617 Views
trycatch
Contributor II

In the IMX6SDLRM, table 8-4 on page 392 says:

BOOT_MODE[1:0] BT_FUSE_SEL ValueBoot Options Controlled By
000eFUSEs
001eFUSEs
010GPIO pins

01

1eFUSEs
100GPIO pins
101eFUSEs

What I take from this is that regardless of the boot mode, eFUSES should be used if either of the two conditions are true:

- the boot mode is 00 (Boot from Fuses)

- the BT_FUSE_SEL fuse has been set

Thus, I *should* be able to boot from fuses on a board by setting the BOOT_MODE to 00 and leaving BT_FUSE_SEL intact, however I am not finding this to be the case in the test boards I am working on.  I have jumper pins for the BOOT_MODE, and have set BOOT_CFG1 to 0x00005068 (booting from MMC on SD3), however until I burn BT_FUSE_SEL, I *cannot* boot the board, even in BOOT_MODE 00.  Could someone explain what I'm missing?  I really need the ability to go back and forth between boot modes 00 and 01...

Thank you in advance for your help!

Tags (3)
7 Replies

2,602 Views
peteramond
Contributor V
Hi All,
This is regarding i.MAX6Q based custom hardware design and I'm having timing margin issues in I/O interface between chipset and dram. If I/O interface margin is poor by routing issue or layout, it may cause failure depending on noise pattern ( different application make different noise  level). So to solve this issue what do you suggest ?
1) Can we do this using chipset design option to control this kind of timing like phase shift  for tDQS and tDQ.? Can you explain how to do this ?
2) Is it possible to down operating frequency ( ex 2400Mbps --> 2133Mbps ) How can we do this in uboot level ?
3) If it is related to clock timing, We can add capacitance or change termination resistance on CLK and CLK/. To do this what we should do ? Which parameter should I change in DDR initialization script before do memory calibration ?
 
4)How can I set BT_FREQ=1 value ? Is that in U-boot DCD configuration files ? Could you please tell me the method ?
Regards,
Peter.
0 Kudos

2,602 Views
GarySegal
NXP Employee
NXP Employee

In Boot_From_Fuses mode (00b), BT_FUSE_SEL is used by the boot ROM to control the boot flow.  With BT_FUSE_SEL=0, the boot ROM goes straight into the serial downloader.  With BT_FUSE_SEL=1, the boot ROM attempts to boot from the boot device selected in the boot config fuses.

The intent is to allow a board to be built with a blank i.MX6(x) and blank memory.  With the board strapped to boot from fuses mode, the device will go straight into serial downloader mode the first time it is booted.  Production equipment would then use this mode to load an image into memory and burn BT_FUSE_SEL.  The next time the board boots, it will run the image.

Note that in serial downloader mode (10b), BT_FUSE_SEL is not used.

This behavior is documented in section 8.2.3 of the i.MX6 S/DL reference manual.

2,602 Views
trycatch
Contributor II

Gary Segal wrote:

In Boot_From_Fuses mode (00b), BT_FUSE_SEL is used by the boot ROM to control the boot flow.  With BT_FUSE_SEL=0, the boot ROM goes straight into the serial downloader.  With BT_FUSE_SEL=1, the boot ROM attempts to boot from the boot device selected in the boot config fuses.

The intent is to allow a board to be built with a blank i.MX6(x) and blank memory.  With the board strapped to boot from fuses mode, the device will go straight into serial downloader mode the first time it is booted.  Production equipment would then use this mode to load an image into memory and burn BT_FUSE_SEL.  The next time the board boots, it will run the image.

Note that in serial downloader mode (10b), BT_FUSE_SEL is not used.

This behavior is documented in section 8.2.3 of the i.MX6 S/DL reference manual.

What about Internal Boot mode (01b) ?  According to the table, BT_FUSE_SEL is used in all three modes (00b, 01b, and 10b).  I'm trying to work out how to get the ability to switch back and forth from one boot medium to another using a button at power-on to switch from 00b to 01b.  If I *must* burn BT_FUSE_SEL to use Boot From Fuses mode (00b), then that prohibits use of Internal Boot mode (01b) if BT_FUSE_SEL overrides the GPIO pins.  This is the situation that lead me to attempting to boot in 00b without burning BT_FUSE_SEL...

0 Kudos

2,602 Views
GarySegal
NXP Employee
NXP Employee

If you want to change the boot device, select internal boot mode (BOOT_MODE=01b) and use GPIO overrides by keeping BT_FUSE_SEL at 0 (don't burn it). This is how the Freescale Sabre manages boot device selection.

Enjoy.

2,602 Views
gusarambula
NXP TechSupport
NXP TechSupport

I understand the confusion in this regard, unfortunately as Gary Segal mentioned you would need to blow the BT_FUSE_SEL value in order to boot accordingly to the eFuse options, otherwise you would jump into serial download mode when Booting from Fuses (00b).

You may have multiple booting options (as in Freescale’s SABRE board for example) but it’s usually the final booting configuration what’s blown into the fuses in manufacturing. In this stage it’s desirable to lock the booting options to the wanted setting.

0 Kudos

2,602 Views
saurabh206
Senior Contributor III

Hi,

Send your post to imx community (e.g. i.MX Community ) to get it visible for active members.

Saurabh

0 Kudos

2,602 Views
trycatch
Contributor II

Whoops, I thought I had posted it there in the first place.  My mistake, thanks for pointing that out.  :smileyhappy:

0 Kudos