i.MX8MQ – Initial code loading without USB/UUU using

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

i.MX8MQ – Initial code loading without USB/UUU using

726 Views
ayse-yilmaz
Contributor II

Hello,

We are developing a custom embedded system using the NXP i.MX8MQ processor. Due to strict space constraints in our hardware design, we cannot expose a USB port in the final product.

System Summary:

Processor: i.MX8MQ

RAM: 4GB DDR4

Storage: External eMMC

Intended OS: Yocto Linux running on Cortex-A53

No initial bootloader or software flashed yet (fully blank system)

Available debug interface: JTAG (SEGGER J-Link)

Our main question is:

Can we use JTAG (via J-Link) to initialize DDR and load and execute code (such as U-Boot) in RAM without using USB or the internal boot ROM boot process (i.e., bypassing UUU tool)?

Or is it mandatory to use the USB OTG + UUU serial downloader at least once to load initial code to the system before we can boot from eMMC?

Thank you very much for your help.

0 Kudos
Reply
5 Replies

718 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

Yes you can use jtag or you can program the eMMC or SDcard separately.

regards

0 Kudos
Reply

699 Views
ayse-yilmaz
Contributor II

Hello,

Thank you for your support.

I found documentation related to loading firmware via JTAG on the M4 core, but I could not find similar documentation for the Cortex-A53 core.

Could you please provide or point me to any official documentation or resources about loading and running code on the Cortex-A53 core (i.MX8MQ) using JTAG (e.g., with SEGGER J-Link)?

Best regards,

 

650 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

one can look on

IDE - Debug, Compile and Build Tools (2)
SDK_2.3_MX8MQ_Beta_Patch(REV SDK2.3_MX8MQ_Beta)
(NXP provided IAR and Segger tool patch to support i.MX8MQuad device)

i.MX 8M Evaluation Kit|NXP 

for A53 supported  Lauterbach and ARM DS-5, for OpenOCD one can look at a53 support on

Programming Guide: OpenOCD + Eclipse + Jtag debug on Uboot & Linux 

 

Regards

0 Kudos
Reply

589 Views
ayse-yilmaz
Contributor II

Hello,

Thank you for the references.

I have checked the SDK and toolchain patch links as well as the OpenOCD documentation you mentioned, but I could not find a clear and complete example or guide showing how to:

      * Initialize DDR from JTAG on i.MX8MQ (Cortex-A53),

      * Load and execute U-Boot or any custom binary directly into A53 RAM via JTAG (e.g., with SEGGER J-Link),

      * Do this entirely without using the internal boot ROM mechanisms (i.e., without USB/Serial Downloader Mode).

Most available documentation seems to either:

     *  Target the Cortex-M4 core,

     *  Assume a bootloader is already present, or

     *  As in the reference you provided, demonstrate debugging U-Boot and kernel via JTAG only after they have been loaded through USB and the UUU tool, rather than performing a full bring-up from a blank device.

Could you please clarify if it is officially supported to boot Cortex-A53 code via JTAG (without USB), and if so, could you provide:

      * a direct application note, app guide, or example script (J-Link, Lauterbach, DS-5, or OpenOCD)

      * or any steps regarding DDR training, code upload, and A53 startup via JTAG?

This would be very helpful for bringing up our custom hardware which currently has no pre-flashed bootloader and no USB access.

Thank you again for your support.

Best regards,

Tags (1)
0 Kudos
Reply

573 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi,

For JTAG and JLink scripts supporting Cortex-A53, may be recommended to apply to segger directly:

https://forum.segger.com/index.php/Thread/4447-SOLVED-Cortex-A53-support/
NXP uses Lauterbach Trace32 as debugger tool for Cortex-A53 cores.

 

Regards

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2130958%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2130958%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%3CP%3EWe%20are%20developing%20a%20custom%20embedded%20system%20using%20the%20NXP%20i.MX8MQ%20processor.%20Due%20to%20strict%20space%20constraints%20in%20our%20hardware%20design%2C%20we%20cannot%20expose%20a%20USB%20port%20in%20the%20final%20product.%3C%2FP%3E%3CP%3ESystem%20Summary%3A%3C%2FP%3E%3CP%3EProcessor%3A%20i.MX8MQ%3C%2FP%3E%3CP%3ERAM%3A%204GB%20DDR4%3C%2FP%3E%3CP%3EStorage%3A%20External%20eMMC%3C%2FP%3E%3CP%3EIntended%20OS%3A%20Yocto%20Linux%20running%20on%20Cortex-A53%3C%2FP%3E%3CP%3ENo%20initial%20bootloader%20or%20software%20flashed%20yet%20(fully%20blank%20system)%3C%2FP%3E%3CP%3EAvailable%20debug%20interface%3A%20JTAG%20(SEGGER%20J-Link)%3C%2FP%3E%3CP%3EOur%20main%20question%20is%3A%3C%2FP%3E%3CP%3ECan%20we%20use%20JTAG%20(via%20J-Link)%20to%20initialize%20DDR%20and%20load%20and%20execute%20code%20(such%20as%20U-Boot)%20in%20RAM%20without%20using%20USB%20or%20the%20internal%20boot%20ROM%20boot%20process%20(i.e.%2C%20bypassing%20UUU%20tool)%3F%3C%2FP%3E%3CP%3EOr%20is%20it%20mandatory%20to%20use%20the%20USB%20OTG%20%2B%20UUU%20serial%20downloader%20at%20least%20once%20to%20load%20initial%20code%20to%20the%20system%20before%20we%20can%20boot%20from%20eMMC%3F%3C%2FP%3E%3CP%3E%3CSPAN%3EThank%20you%20very%20much%20for%20your%20help.%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2137507%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2137507%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3EFor%20JTAG%20and%26nbsp%3BJLink%20scripts%20supporting%20Cortex-A53%2C%20may%20be%20recommended%26nbsp%3Bto%20apply%20to%20segger%20directly%3A%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fforum.segger.com%2Findex.php%2FThread%2F4447-SOLVED-Cortex-A53-support%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fforum.segger.com%2Findex.php%2FThread%2F4447-SOLVED-Cortex-A53-support%2F%3C%2FA%3E%3CBR%20%2F%3ENXP%20uses%20Lauterbach%20Trace32%20as%20debugger%20tool%20for%20Cortex-A53%20cores.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ERegards%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2137090%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2137090%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%3CP%3EThank%20you%20for%20the%20references.%3C%2FP%3E%3CP%3EI%20have%20checked%20the%20SDK%20and%20toolchain%20patch%20links%20as%20well%20as%20the%20OpenOCD%20documentation%20you%20mentioned%2C%20but%20I%20could%20not%20find%20a%20clear%20and%20complete%20example%20or%20guide%20showing%20how%20to%3A%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%20Initialize%20DDR%20from%20JTAG%20on%20i.MX8MQ%20(Cortex-A53)%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%20Load%20and%20execute%20U-Boot%20or%20any%20custom%20binary%20directly%20into%20A53%20RAM%20via%20JTAG%20(e.g.%2C%20with%20SEGGER%20J-Link)%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%20Do%20this%20entirely%20without%20using%20the%20internal%20boot%20ROM%20mechanisms%20(i.e.%2C%20without%20USB%2FSerial%20Downloader%20Mode).%3C%2FP%3E%3CP%3EMost%20available%20documentation%20seems%20to%20either%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B*%26nbsp%3B%20Target%20the%20Cortex-M4%20core%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B*%26nbsp%3B%20Assume%20a%20bootloader%20is%20already%20present%2C%20or%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B*%26nbsp%3B%20As%20in%20the%20reference%20you%20provided%2C%20demonstrate%20debugging%20U-Boot%20and%20kernel%20via%20JTAG%20only%20after%20they%20have%20been%20loaded%20through%20USB%20and%20the%20UUU%20tool%2C%20rather%20than%20performing%20a%20full%20bring-up%20from%20a%20blank%20device.%3C%2FP%3E%3CP%3ECould%20you%20please%20clarify%20if%20it%20is%20officially%20supported%20to%20boot%20Cortex-A53%20code%20via%20JTAG%20(without%20USB)%2C%20and%20if%20so%2C%20could%20you%20provide%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%20a%20direct%20application%20note%2C%20app%20guide%2C%20or%20example%20script%20(J-Link%2C%20Lauterbach%2C%20DS-5%2C%20or%20OpenOCD)%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20*%20or%20any%20steps%20regarding%20DDR%20training%2C%20code%20upload%2C%20and%20A53%20startup%20via%20JTAG%3F%3C%2FP%3E%3CP%3EThis%20would%20be%20very%20helpful%20for%20bringing%20up%20our%20custom%20hardware%20which%20currently%20has%20no%20pre-flashed%20bootloader%20and%20no%20USB%20access.%3C%2FP%3E%3CP%3EThank%20you%20again%20for%20your%20support.%3C%2FP%3E%3CP%3EBest%20regards%2C%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2133384%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2133384%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%0A%3CP%3Eone%20can%20look%20on%3C%2FP%3E%0A%3CP%3EIDE%20-%20Debug%2C%20Compile%20and%20Build%20Tools%20(2)%3CBR%20%2F%3ESDK_2.3_MX8MQ_Beta_Patch(REV%20SDK2.3_MX8MQ_Beta)%3CBR%20%2F%3E(NXP%20provided%20IAR%20and%20Segger%20tool%20patch%20to%20support%20i.MX8MQuad%20device)%3C%2FP%3E%0A%3CP%3E%3CA%20class%3D%22link-titled%22%20title%3D%22https%3A%2F%2Fwww.nxp.com%2Fsupport%2Fdeveloper-resources%2Frun-time-software%2Fi.mx-developer-resources%2Fevaluation-kit-for-the-i.mx-8m-applications-processor%3AMCIMX8M-EVK%3Ftab%3DDesign_Tools_Tab%22%20href%3D%22https%3A%2F%2Ftranslate.google.com%2Fwebsite%3Fsl%3Den%26amp%3Btl%3Des%26amp%3Bhl%3Des%26amp%3Bclient%3Dsrp%26amp%3Bu%3Dhttps%3A%2F%2Fwww.nxp.com%2Fsupport%2Fdeveloper-resources%2Frun-time-software%2Fi.mx-developer-resources%2Fevaluation-kit-for-the-i.mx-8m-applications-processor%3AMCIMX8M-EVK%3Ftab%253DDesign_Tools_Tab%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ei.MX%208M%20Evaluation%20Kit%7CNXP%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Efor%20A53%20supported%20%26nbsp%3BLauterbach%20and%20ARM%20DS-5%2C%20for%20OpenOCD%20one%20can%20look%20at%20a53%20support%20on%3C%2FP%3E%0A%3CP%3E%3CA%20class%3D%22link-titled%22%20title%3D%22http%3A%2F%2Ffatalfeel.blogspot.com%2F2015%2F12%2Fopenocd-with-eclipse-debug-kernel-of.html%22%20href%3D%22https%3A%2F%2Ftranslate.google.com%2Fwebsite%3Fsl%3Den%26amp%3Btl%3Des%26amp%3Bhl%3Des%26amp%3Bclient%3Dsrp%26amp%3Bu%3Dhttp%3A%2F%2Ffatalfeel.blogspot.com%2F2015%2F12%2Fopenocd-with-eclipse-debug-kernel-of.html%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EProgramming%20Guide%3A%20OpenOCD%20%2B%20Eclipse%20%2B%20Jtag%20debug%20on%20Uboot%20%26amp%3B%20Linux%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ERegards%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2132594%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2132594%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%3CP%3EThank%20you%20for%20your%20support.%3C%2FP%3E%3CP%3EI%20found%20documentation%20related%20to%20loading%20firmware%20via%20JTAG%20on%20the%20M4%20core%2C%20but%20I%20could%20not%20find%20similar%20documentation%20for%20the%20Cortex-A53%20core.%3C%2FP%3E%3CP%3ECould%20you%20please%20provide%20or%20point%20me%20to%20any%20official%20documentation%20or%20resources%20about%20loading%20and%20running%20code%20on%20the%20Cortex-A53%20core%20(i.MX8MQ)%20using%20JTAG%20(e.g.%2C%20with%20SEGGER%20J-Link)%3F%3C%2FP%3E%3CP%3EBest%20regards%2C%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2130999%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i.MX8MQ%20%E2%80%93%20Initial%20code%20loading%20without%20USB%2FUUU%20using%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2130999%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%0A%3CP%3EYes%20you%20can%20use%20jtag%20or%20you%20can%20program%20the%20eMMC%20or%20SDcard%20separately.%3C%2FP%3E%0A%3CP%3Eregards%3C%2FP%3E%3C%2FLINGO-BODY%3E