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.
Hello,
Yes you can use jtag or you can program the eMMC or SDcard separately.
regards
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,
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)
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
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,
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