NXP MCIMX93-EVK
This article describes specifics for the NXP MCIMX93-EVK evaluation board.
Preparing for J-Link
To have all cores up and running at the same time, the board must contain a boot image with firmware application for Cortex-M33 and Linux/other OS for Cortex-A55.
If SW1301 boot switch is set to "Cortex-M Download mode" only Cortex-M33 core will be booted.
If SW1301 boot switch is set to "Cortex-A Download mode" only Cortex-A55 core 0 will be booted.
- Connect the J-Link to JTAG connector (J1405).
- Connect the onboard USB-UART debug interface to host computer (J1401).
- Open a serial interface communication via terminal application (PuTTY).
- Power the board via USB Type-C Power connector (J301).
- Turn on the power switch (SW301).
- Wait until the bootloader is started and interrupt the loading of the operating system(Linux Kernel). The output should look as follows:
- Verify the Connection with e.g. J-Link Commander. The output should look as follows:
- Cortex-M33 connection:
- Cortex-A55 connection:
Example Project
The following example project was created with the SEGGER Embedded Studio project wizard and runs out-of-the-box on the NXP MCIMX93-EVK.
It is a simple Hello World sample linked into the internal flash.
Cortex-M33
SETUP
- Embedded Studio: V8.10
- Hardware: NXP MCIMX93-EVK
- Link: File:NXP MCIMX93-EVK M33 TestProject ES V810.zip
Cortex-A55
SETUP
- Embedded Studio: V8.22
- Hardware: NXP MCIMX93-EVK
- Link: File:NXP MCIMX93EVK A55 TestProject ES V822.zip
Tracing on NXP iMX93
This section describes how to get started with trace on the NXP iMX93 MCUs. This section assumes that there is already a basic knowledge about trace in general (what is trace, what different implementations of trace are there, etc.). If this is not the case, we recommend to read Trace chapter in the J-Link User Manual (UM08001).
Some of the examples are shipped with a compiled .JLinkScriptfile (extension .pex), should you need the original source, please get in touch with SEGGER directly via our support system: https://www.segger.com/ticket/.
To create your own .JLinkScriptfile you can use the following guide as reference: How_to_configure_JLinkScript_files_to_enable_tracingMinimum requirements
In order to use trace on the NXP iMX93 MCU devices, the following minimum requirements have to be met:
- J-Link software version V9.60 or later
- Ozone V3.40j or later (if streaming trace and / or the sample project from below shall be used)
- J-Link Plus V12 or later for buffer (on-chip) trace
To rebuild the project our IDE Embedded Studio can be used. The recommended version to rebuild the projects is V8.28. But the examples are all prebuild and work out-of-the box with Ozone, so rebuilding is not necessary.
Cortex-A55_0
The project below has been tested with the minimum requirements mentioned above and a MCIMX93-EVK.
- Example project: NXP_IMX93_A55_0_TraceExample.zip
Trace buffer
Open the *_TraceBuffer.jdebug project contained in the example project in Ozone.
Cortex-A55_1
The project below has been tested with the minimum requirements mentioned above and a MCIMX93-EVK.
- Example project: NXP_IMX93_A55_1_TraceExample.zip
Trace buffer
Open the *_TraceBuffer.jdebug project contained in the example project in Ozone.
Cortex-M33
The project below has been tested with the minimum requirements mentioned above and a MCIMX93-EVK.
- Example project: NXP_IMX93_M33_TraceExample.zip
Trace buffer
Open the *_TraceBuffer.jdebug project contained in the example project in Ozone.
Running the Examples
Before running the examples, a few initialization steps need to be performed to ensure that debugging with buffer trace is possible for both Cortex-A55 cores and the Cortex-M33 core. Each core which should be traced needs to be powered up and released before launching a debug session. The easiest way to achieve this, is using the U-Boot cpu command, which can control individual cores. As this command is not included in the U-Boot build shipped with the default NXP Linux image, the Real-Time Edge Software for NXP MCIMX93-EVK should be flashed to the SD-Card.
- Insert an SD-Card into the SD Card slot of the EVK.
- Set the board to Cortex-A55 serial downloader boot mode (SW1301: 0b1100).
- Connect a USB cable to USB1
- Install uuu and run following command:
uuu.exe -b sd_all ./Real-time_Edge_v2.6_IMX93EVK/real-time-edge/nxp-image-real-time-edge-imx93evk.wic.zst
- Wait for uuu to flash SD card.
- Set board to Cortex-A55 SD Card boot mode (SW1301: 0b0100).
- Connect a USB cable to the USB DBG port.
- Open a serial terminal and connect to the EVK UART interface.
- Wait for U-Boot to boot and interrupt the Linux boot flow by pressing a key when prompted to do so:
BuildInfo: - ELE firmware version 0.0.10-af252062 switch to partitions #0, OK mmc1 is current device flash target is MMC:1 Net: eth0: ethernet@42890000, eth1: ethernet@428a0000 [PRIME] Fastboot: Normal Normal Boot Hit any key to stop autoboot: 0 u-boot=>
- Check if the cpu command is implemented. The output should look as follows:
u-boot=> cpu cpu - Multiprocessor CPU boot manipulation and release Usage: cpu <num> reset - Reset cpu <num> cpu status - Status of all cpus cpu <num> status - Status of cpu <num> cpu <num> disable - Disable cpu <num> cpu <num> release <addr> [args] - Release cpu <num> at <addr> with [args] u-boot=>
- Configure U-Boot to release A55_1 on boot instead of bootling Linux:
u-boot=> setenv boot_a55_1 "mw 0xA0000000 14000000; dcache flush; icache flush; cpu 1 release 0xA0000000" u-boot=> setenv bootcmd "run boot_a55_1" u-boot=> saveenv Saving Environment to MMC... Writing to MMC(1)... OK u-boot=>
- Reboot the board and wait for U-Boot to finish the boot process. After this, you should be able to debug and trace both Cortex-A55 cores and the Cortex-M33 core after each power-up without any further initialization steps.