NXP i.MX RT1170 (MIMXRT1170-EVK) Evaluation Kit

This topic provides board-specific information about for NXP's i.MX RT1170. Assuming that you have set up the development environment as per the intructions in getting started.

Board features

  • MIMXRT1176DVMAA MCU featuring 1GHz ARM® Cortex®-M7 core and 400Mhz Cortex®-M4 core
  • 5.5” 720x1280 TFT LCD Touch Display
  • 2 MB Internal SRAM with 512 KB of TCM for Cortex-M7 and 256 KB of TCM for Cortex-M4
  • 16 MB Hyper Flash
  • 512 MB External SDRAM
  • 2 x Gb ENET with AVB and TSN

Hardware layers support

The NXP i.MX RT1170 Evaluation Kit comes with support for graphical hardware layers. Although Qt for MCUs supports hardware layers on this board, ensure that the following requirements are met to get the desired results.

  • A layer must not exceed display boundaries. If invalid position is requested, the closest possible position is calculated and used instead. Qt for MCUs uses the following formulas to ensure that layers are within the display boundaries.
    • 0 < x + layer.width < display.width
    • 0 < y + layer.height < display.height

    Note: If layer size exceeds display size in at least one direction, it will not be initialized and shown. In such a case, memory is not allocated for frame buffers to avoid consuming rendering resources.

In addition, the hardware layer support on this platform comes with the following limitations:

  • A layer's size and z order is constant after initialization and can not be changed at runtime.
  • If the requested z order is already used, the next available higher value is taken. Qt for MCUs will search for next available value starting from 0, if a higher value is not available.
  • If maximum number of layers (8) is exeeded, the additional layers are not initialized to avoid consuming resources.
  • Global opacity for layers is not supported right now. Use alpha channel from layer's frame buffer to change layer's opacity,
  • NXP i.MX RT1170 does not support hardware sprites. To overcome this limitation, Qt for MCUs offers a software implementation for SpriteLayer. It provides an offset position to the SpriteLayer's children and propogates opacity and enabled properties to them.
  • The SpriteLayer's width, height, and z properties are ignored.

Prebuilt demos and examples

The package for NXP i.MX RT1170 Evaluation Kit board comes with the following prebuilt demos and examples:

You can find these in the demo_images directory.

Reading debug messages

By default, the output of printf calls are redirected to a virtual serial port, which is exposed on the host machine via USB.

Debugging via JTag

In order to debug application code on MIMXRT1170-EVK, a hardware debugger can be connected to the board's JTag port, and J-Link software must be installed from here

The J5-J8 pins (under the JTag socket) must be disabled.

Warning: Disabling J5-J8 pins prevents flashing via DAP-Link. Those pins must be re-enabled before using DAP-Link again.

  • Start the gdb server
    JLinkGDBServer -endian little -noir -speed auto -port 2331 -vd -device MIMXRT1176xxxA_M7 -if SWD -halt -reportuseraction -JLinkScriptFile evkmimxrt1170_connect_cm4_cm7side.jlinkscript
  • Run arm-none-eabi-gdb in a separate console
    $ARMGCC_DIR/bin/arm-none-eabi-gdb path/to/compiled.elf -ex "target remote localhost:2331"
    (gdb) monitor reset halt
    (gdb) continue

    Note: If the monitor reset gdb command does not reset the device, use the load command. JLink script file is delivered with SDK package.

Note: This method requires MCUXpresso IDE v11.3.0 or newer.

For convenience, you can set an environment variable that points to the Redlink tool, which is part of the MCUXpresso IDE.

Linux host:

export REDLINK=$MCUXpressoIDE_PATH/ide/binaries/crt_emu_cm_redlink

Windows host:

set REDLINK=%MCUXpressoIDE_PATH%\ide\binaries\crt_emu_cm_redlink

Where, MCUXpressoIDE_PATH is an environment variable pointing to the MCUXpresso IDE installation directory.

  • Connect a USB cable to the board (to J11) and to the host PC. Open a terminal window and run the following command:
    %REDLINK% --server :50032 --mi -2 -vc -p MIMXRT1176xxxxx --ConnectScript RT1170_connect_M7_wake_M4.scp --resetscript RT1170_reset.scp -x %Qul_DIR%\platform\boards\nxp\mimxrt1170-evk-freertos\cmake

    GDB Server is now listening for TCP connections on port, 50032.

    Note: To change TCP port used by redlink_server, change --server :50032 to different value.

  • Run arm-none-eabi-gdb in a separate console

    Linux host:

    $ARMGCC_DIR/bin/arm-none-eabi-gdb.exe <PATH_TO>/your_app.elf

    Windows host:

    %ARMGCC_DIR%\bin\arm-none-eabi-gdb.exe <PATH_TO>\your_app.elf
  • Connect to the target via the gdbserver in the arm-none-eabi-gdb console using
    (gdb) target remote :50032
  • Alternatively, flash the target device from the arm-none-eabi-gdb console using the following command:
    (gdb) load

Available under certain Qt licenses.
Find out more.