how to build uboot to boot from emmc

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

how to build uboot to boot from emmc

3,317 Views
asmaalekar90
Contributor I

Hello Everyone,

   I am a newbie to i.MX world. We have developed a customized board for our product in our company similar to IMX6ULEVK. IC used is a little different it is mcimx6g3cvm05ab. We dont have SD card support on our board but instead eMMC Flash. My questions are:

1. How should I build uboot to boot from eMMC, do I have to change configuration in uboot code to burn fuses, if so how? Any example please.

2. Do we have any uboot binaries or .imx file  that I can use directly, as our board is same as IMX6ULEVK.( we dont support sd card on our board and we dont have anything for dip switches, I somehow have to burn fuses as well. so uboot binary with fuses burnt for booting through eMMC).

Thanks & Regards,

Asma

Labels (2)
Tags (1)
0 Kudos
5 Replies

2,549 Views
radhikasomaiya
Senior Contributor II

Hi, Asma A

One can follow the below steps to build U-boot for eMMC(refer section 5.5 of Linux User's Guide).

  • Add  UBOOT_CONFIG = "emmc" in <yocto_build>/conf/local.conf file.
  • $ MACHINE=<machine name> bitbake -c deploy u-boot-imx
    • eg. MACHINE=imx6ulevk bitbake -c deploy u-boot-imx           

Please make sure that your UART (debug) cable is working properly. If UART cable is proper then you should get the flash logs while flashing through MFGTool because you are able to flash minimal uboot, kernel and rootfs in your board.

And if you are still not able to get the logs then you should verify your DDR initializations/changes.

Regards,

Radhika Somaiya

0 Kudos

2,549 Views
xuxw360730
Contributor I

I did these for imx8mmevk but it didn't work. There were  not any other imx-boot files in <tmp>/deploy/images/imx8mmevk directory expcet for imx-boot-imx8mmevk-sd.bin and  imx-boot-imx8mmevk-sd.bin-flash_evk .

0 Kudos

2,549 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

 

No you don't need to, but you can do use it (u-boot) to burn eFuses, please take a look to this:

i.mx6 eFUSE Burning

 

Also please take a look to the reference manual chapter 5 "Fusemap" & 8 "System Boot"

i.MX6UL RM

 

Hope this helps,

Best regards,
Aldo.

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

2,549 Views
asmaa
Contributor V

On our board, I am not able to download uboot through mfgtool. it loads uboot, kernel, rootfs , go to Jump OS Image and then gives No device connected and stops there. I get the notification from windows that USB device is corrupted. And because of that I think it is not able to find eMMC. 

Note: I have updated DDR changes according to our board. So I am just not getting how can it find my eMMC. We are using UART1 as debug and I am not getting any output there as well.

Mfgtool log:

ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\asmaa\Desktop\Original_QT850\Profiles\nexus\OS Firmware\mfg\u-boot.imx
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is C:\Users\asmaa\Desktop\Original_QT850\Profiles\nexus\OS Firmware\mfg\zImage, address is 0x80800000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is C:\Users\asmaa\Desktop\Original_QT850\Profiles\nexus\OS Firmware\mfg\rootfs.cpio.gz.u-boot, address is 0x83800000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is C:\Users\asmaa\Desktop\Original_QT850\Profiles\nexus\OS Firmware\mfg\zImage.dtb, address is 0x83000000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: ExecuteCommand--Jump[WndIndex:0]
ModuleID[2] LevelID[10]: *********MxHidDevice[069F6838] Jump to Ramkernel successfully!**********
ModuleID[2] LevelID[10]: CmdOperation[0], current state command has been finished and the last command is successful, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, _devices.size: 1
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, devInstPathToFind: USB\VID_15A2&PID_007D\5&182CD075&0&2, _deviceInstanceID: USB\VID_15A2&PID_007D\5&182CD075&0&2
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, Find the device
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT,[MxHidDeviceClass] vid_15a2&pid_007d, Hub:2-Port:2
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT, Notify
ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume Arrive/Remove or Device Arrive/Remove
ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, m_p_usb_port is not NULL, so only refresh
ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume/Device Remove
ModuleID[2] LevelID[1]: CmdOpreation[0]--set m_hDeviceRemoveEvent.
ModuleID[2] LevelID[10]: CmdOpreation[0]--WaitforEvents device remove1
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent()-DEVICE_REMOVAL_EVT, hDevCanDeleteEvent has been set
ModuleID[2] LevelID[10]: delete MxHidDevice[069F6838]
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_ARRIVAL_EVT(\\?\USB#VID_0000&PID_0002#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_ARRIVAL_EVT(\\?\USB#VID_0000&PID_0002#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_REMOVAL_EVT(\\?\USB#VID_0000&PID_0002#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT(\\?\USB#VID_0000&PID_0002#5&182cd075&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed.

So I have 3 questions now:

  1. Does the above highlight means my uboot is loaded successfully in RAM?
  2. If yes, then why does it not give any output on serial terminal?
  3. We are using MCIMX6G3 not G2 as IMX6ULEVK, so are the above addresses highlighted for loading are correct or not?

Thanks,

Asma

0 Kudos

2,549 Views
azmatliu
Contributor III

Hi Asma,

   I think you should verify two things:

   1. DDR calibration and stress test.

   2. The iomux for debug console is correct or not.

Regards,

Azmat

0 Kudos