MR-NAVQ95

Tags: chip:imx9 chip:imx95 vendor:nxp

The MR-NAVQ95 is an open-source development board designed for mobile robotics applications. It is built around the i.MX 95 automotive applications processor. Its heterogeneous processing cores make it well-suited for running both real-time tasks and compute-intensive workloads.

Features

  • Multicore Processing [1]
    • 1x Arm Cortex-M7

    • 6x Arm Cortex-A55 multicore complex

    • 1x Arm Cortex-M33

  • Memory
    • On-Chip Memory
      • 1376KiB SRAM (ECC)

    • External Memory
      • 16 GiB LPDDR5 (Up to 6.4GT/s, with Inline ECC & Inline Encryption)

      • 64 MiB MX25UM51345G (Octal SPI)

  • Connectivity

    The MR-NAVQ95 is composed of a main board as its base and can be extended with optional add-on modules.

../../../../../_images/mr-navq95b-overview.png

SD-card image

The simplest way to run NuttX on the MR-NAVQ95’s M7 core is to use the standard SD-card image. You can find the instructions for creating this image here.

Serial Console

By default the console is set to UART2. The most convenient method to connect to the serial console is through the USB-C port on the I/O expansion board (J10). The integrated FT2232HQ enables access to UART1 and UART2. UART2 is additionally exposed on the main board at connector J2, which uses a JST-GH connector and therefore requires a special cable.

Firmware location

Flash

The external MX25UM51345G NOR flash on the MR_NAVQ95 is reserved for the M7 firmware. In the standard SD-card image, the System Manager (M33) loads MCUBoot into ITCM. After initialization, MCUBoot checks the external flash for a valid firmware image and, if one is found, executes it directly in place (XIP). To allow MCUBoot to authenticate the firmware properly, the binary must include a valid MCUBoot header. This header can be added using the imgtool.py utility provided with MCUBoot.

Use the following commands to create the binary with header and to program it using pyocd:

./imgtool.py sign --version 1.0.0 --header-size 0x800\
    --slot-size 0x700000 --pad-header nuttx.bin\
    nuttx.mcuboot.bin

pyocd flash -t mimx95_cm7_mx25um nuttx.mcuboot.bin

Instruction Tightly Coupled Memory (ITCM)

The purpose of the Tightly-Coupled Memory (TCM) is to provide low-latency memory that the processor can use without the unpredictability that is a feature of caches. By default the firmware will be located in this area (256K).

pyocd flash -t mimx95_cm7 nuttx.bin

Note

Please be aware that the standard SD-card uses the ITCM section to run MCUboot

DDR

DDR memory can be used in case the code memory footprint becomes bigger than the ITCM size. Using this configuration implies that other cores should be aware of this. The standard SD-card image for the MR-NAVQ95 allocates the 0x90000000-0x90400000 memory region exclusively to the M7 core. The A55 subsystem is configured to avoid this range.

Configurations

nsh

Configures the NuttShell (nsh) located at examples/nsh. This NSH configuration is focused on low level, command-line driver testing. Built-in applications are supported, but none are enabled. This configuration does not support a network.

rpmsg

This configuration is similar to nsh but in addition it offers the Remote Processing Messaging (RPMsg) service to enable heterogeneous inter-core communication. A virtual UART (CONFIG_RPMSG_UART) is made available on which an OS running on the A55 cores can connect. There is also an option to use the filesystem client feature in which a remote directory can be mounted to a local directory (CONFIG_FS_RPMSGFS).

The default sd-card image has made the RPMsg UART driver and the RPMsg FS driver available who are compatible to NuttX.