NXP MCIMX93-EVK

From SEGGER Knowledge Base
Jump to navigation Jump to search

This article describes specifics for the NXP MCIMX93-EVK evaluation board.
NXP MCIMX93-EVK board.jpg

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:

NXP MCIMX93-EVK M33 boot.png

  • Verify the Connection with e.g. J-Link Commander. The output should look as follows:
  • Cortex-M33 connection:

NXP MCIMX93-EVK M33 connect.png

  • Cortex-A55 connection:

NXP MCIMX93-EVK A55 connect.png

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

Cortex-A55

SETUP

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).

Note:

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_tracing

Minimum 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.

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.

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.

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.