imx6ul BOOT mode problem

cancel
Showing results for 
Search instead for 
Did you mean: 

imx6ul BOOT mode problem

180 Views
lance_lau
Contributor I
imx6ul BOOT mode problem, IMX6UL I designed, the storage selection is EMMC, BOOT is set to LCD_DATA11, LCD_DATA6, LCD_DATA5, LCD_DATA1 is high level, after power on, no matter BOOT_MODE1, BOOT_MODE0 is (1,0) or (0 , 1), the boards are all HID-compliant devices, and the USB devices are not recognized after an abnormal interruption in the programming process.
Using the NXP official DDR test tool, read out SRC_SBMR1 (0X020d8004) = 0x00000862, SRC_SBMR2 (0X020d801c) = 0x02000041, but the default SRC_SBMR2 (0X020d801c) = 0x02000001 in the specification, compared with the IMX6UL development board that can be burned, its SRCXdB801 ) = 0x02000001 or SRC_SBMR2(0X020d801c) = 0x01000001.

At present, the level status measurement of the BOOT configuration item meets the programming requirements. The DDR stress test can pass, but the programming still cannot be performed normally. Please help, thank you.
0 Kudos
5 Replies

97 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi 辉 刘 

may be suggested to check with oscilloscope boot configuration

and after boot fail, attach jtag and check registers SRC_SBMR1,2 -

they should correspond to choosen boot configuration, description

can be found in sect.8.3.2 GPIO boot overrides

i.MX 6UltraLite Applications Processor Reference Manual

Just for test try to extend POR up to 1 sec.

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

0 Kudos

97 Views
lance_lau
Contributor I

The read SRC_SBMR1(0x020d8004) = 0x00000862, corresponding to the selection of EMMC mode, the BOOT configuration item was also read with an oscilloscope at power up, which is consistent with the software read, but it is always a HID-compliant device, use Mfgtool to download The program will fail.

0 Kudos

97 Views
igorpadykov
NXP TechSupport
NXP TechSupport

suggest to check emmc boot flow with oscilloscope and test its signals,

then check with logic analyzer where exactly boot fails: which emmc command fails.

Best regards
igor

0 Kudos

97 Views
lance_lau
Contributor I

HI igor:

   Thank you for your answer, we shouldn't enter the program startup yet, it just went wrong during the boot process,

the relevant log is as follows:

MfgTool log:

DLL version: 2.7.0
Tuesday, June 16, 2020 14:41:40 Start new logging
ModuleID[2] LevelID[10]: CMyExceptionHandler thread is running
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: Device Manager thread is running
ModuleID[2] LevelID[1]: Can't set m_hStopEvent before it initialized or it already stop

ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_ARRIVAL_EVT(\\?\USB#VID_15A2&PID_007D#5&14a73d14&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_ARRIVAL_EVT(\\?\USB#VID_15A2&PID_007D#5&14a73d14&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, _devices.size: 0
ModuleID[2] LevelID[1]: DeviceClass::FindDeviceByUsbPath() - DeviceListType_New--index: 0
ModuleID[2] LevelID[1]: DeviceClass::FindDeviceByUsbPath() - DeviceListType_New--devPath: \\?\hid#vid_093a&pid_2510#6&9697651&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
ModuleID[2] LevelID[1]: DeviceClass::FindDeviceByUsbPath() - DeviceListType_New--index: 1
ModuleID[2] LevelID[1]: DeviceClass::FindDeviceByUsbPath() - DeviceListType_New--devPath: \\?\hid#vid_15a2&pid_007d#6&15a42e55&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
ModuleID[2] LevelID[10]: new MxHidDevice[0598CA38]
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_New, devInstPathToFind: USB\VID_15A2&PID_007D\5&14A73D14&0&5, _deviceInstanceID: USB\VID_15A2&PID_007D\5&14A73D14&0&5
ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_New, Find the device, Port: 5
ModuleID[2] LevelID[10]: DeviceClass::AddUsbDevice() successful USB#VID_15A2&PID_007D#5&14A73D14&0&5#{A5DCBF10-6530-11D2-901F-00C04FB951ED} add to current list, retrycount: 0
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_ARRIVAL_EVT,[MxHidDeviceClass] vid_15a2&pid_007d, Hub:1-Port:5
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_ARRIVAL_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 Arrive
ModuleID[2] LevelID[1]: CmdOpreation[0]--set m_hDeviceArriveEvent.
ModuleID[2] LevelID[10]: CmdOpreation[0]--WaitforEvents device arrive1
ModuleID[2] LevelID[10]: CmdOperation[0] device chagned and reset to state 0
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is E:\lance\SOFT\mfgtools-without-rootfs\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is E:\lance\SOFT\mfgtools-without-rootfs\mfgtools\Profiles\Linux\OS Firmware\firmware\zImage, address is 0x80800000
ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f.
ModuleID[2] LevelID[1]: Download(): TransData(0x80800000, 0x200000, 0x0, 0x4320000) failed.
ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x57.
ModuleID[2] LevelID[1]: Download(): TransData(0x80800000, 0x200000, 0x0, 0x4320000) failed.
ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x57.
ModuleID[2] LevelID[1]: Download(): TransData(0x80800000, 0x200000, 0x0, 0x4320000) failed.
ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Load excute failed, retry count: 3
ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#5&14a73d14&0&5#{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&14a73d14&0&5#{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&14A73D14&0&5, _deviceInstanceID: USB\VID_15A2&PID_007D\5&14A73D14&0&5
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:1-Port:5
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]: Can't set m_hDeviceRemoveEvent before it initialized

ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent()-DEVICE_REMOVAL_EVT, hDevCanDeleteEvent has been set
ModuleID[2] LevelID[10]: delete MxHidDevice[0598CA38]
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - EVENT_KILL
ModuleID[2] LevelID[10]: CMyExceptionHandler::OnMsgExceptionEvent() - KillExceptionHandlerThread
ModuleID[2] LevelID[10]: Exception Handler thread is closed
ModuleID[2] LevelID[1]: delete MxHidDeviceClass
ModuleID[2] LevelID[10]: Device Manager thread is closed

0 Kudos

97 Views
lance_lau
Contributor I

pastedImage_2.png

Boot Configuration
SRC_SBMR1(0x020d8004) = 0x00000862
SRC_SBMR2(0x020d801c) = 0x01000041

0 Kudos