If an end-user orders a SOM together with a HummingBoard carrier board, the shipping department is notified that the boot configuration needs to be set on the SOM. A SOM which does not undergo this process (for example, if one is ordered by itself) will need to have an appropriate configuration completed to tell the processor where to look for the start of the boot process.
This tutorial provides the information on blowing the i.MX6 eFuses on the SoC integrated on the SOM in order to boot from the Micro-SD cart.
Please note that this operation is irreversible.
USB host to host cable preparation
Use these instructions as a “getting started” step if you do not already have an appropriate USB OTG cable.
Get two usb cables.
Cut them in the middle or where ever it’s convenient by leaving enough length to the USB host connectors
Bridge the black, white and green wires of each cable directly to each other.
Bridge the red (vbus) wire with a 10 ohm resistor in the middle. Notice that there were reports that 10 ohm is too high and 1 ohm would do better.
USB host to host cable is ready.
Notice – the reason for the 10 ohm resistor is to protect the CuBox-i/HummingBoard power supply or PC power supply from shortening each other since in some point (when u-boot is loaded) then the vbus of both ports is active (i.e. drive 5V).
Run MFGTool to Blow the eFuses
Some key notes to keep in mind:
This is an irreversible process. The eFuses in the i.MX6 System on Chip application processors are set by running an electrical signal through them. This process can happen exactly once. By sending the signal through these paths, they are “fused” to a specific setting.
This is a process for advanced users and is not typically supported by Solid Run personnel. For those users ordering standalone SOM devices, this process documentation has been provided as an informational starting point.
If you use a USB OTG cable without a custom resistor, you are operating without a safety. Initially, both the Hummingboard USB and the host USB of your Windows PC will be carrying an electrical charge. If you are plugged into the wrong port, or are otherwise connected with this dual-power mode for too long, you may damage your device.
The MFGTool provided by Freescale requires a Windows based PC, prefereably with an intel based chipset. (Freescale’s detection routines in the MFGTool can be picky when it comes to chipsets.)
In the previous section the value 0x2840 was written to address 0x5; which states booting from SD1.
Looking at the i.MX6 solo/dual lite or i.MX6 dual/code reference manual, chapter 5 (Fusemap) Table 5-7 (SD/eSD Boot Fusemap) explains what this boot source means.
When writing the value 0x2840 then BOOT_CFG1=0x40 and BOOT_CFG2=0x28.
BOOT_CFG1[7:3] decides the boot type (Table 5-1) and BOOT_CFG1[2:0] and BOOT_CFG2[7:0] desribes the details on that boot.
In this case BOOT_CFG1[7:3] = 1b01000, which means boot from SD/eSD (eMMC)
BOOT_CFG1[2:0] doesn’t set anything
BOOT_CFG2[7:0] says no SD calibration steps, 4bit bus width and use USDHC2 controller (i.e. SD1 when counting from 0) to boot.
In order to boot from SATA port 0x2840 becomes 0x0020. Look for BOOT_CFG2 in this case (i.e. table 5-5) if more bits needs to be set.
Setting a bit in the fusemap will phyiscally modify the processor and this can’t be modified.
Look at BOOT_CFG3 and BOOT_CFG4 where the user can deploy a SPI flash as secondary boot in case the primary boot (i.e. what is set in BOOT_CFG1) fails.
Forcing eMMC reset
In case you use i.MX6 uSOM rev 1.5 with eMMC and you set fuses to boot from eMMC and want to fallback to USB OTG; there is an option (in development mode) to keep eMMC in reset by putting a tweezer on this –
Thats a 0402 resistor that is not assembled that when the upper pad is short to the lower pad which is the GND signal then it keeps eMMC in reset.