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.
- 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 Mbit External SDRAM
- 2 x Gb ENET with AVB and TSN
The reference port supports two displays,
RK055HDMIPI4MA0 display is the newer one and is currently sold by NXP, whereas
RK055HDMIPI4M is not available anymore. While the specifications of these displays are mostly the same, some critical components, such as the TFT driver, are different and therefore need their own initialization values and function calls.
The pre-built library and binaries have
RK055HDMIPI4MA0 enabled by default. If you have the older display model and wish to use it, you'll need to change
USE_MIPI_PANEL definition in
MIPI_PANEL_RK055AHD091 and recompile Qt Quick Ultralite (Platform) library. To restore the support for the new display model, change the
USE_MIPI_PANEL definition back to
MIPI_PANEL_RK055MHD091 and recompile the library.
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
zorder is constant after initialization and can not be changed at runtime.
- If the requested
zorder 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.
opacityfor layers is not supported right now. Use alpha channel from layer's frame buffer to change layer's opacity,
NXP i.MX RT1170does 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
enabledproperties to them.
- The SpriteLayer's
zproperties are ignored.
To utilize optimized cache usage on the Vivante Imaging Engine a tiled format can be enabled for the rotated images with ImageFiles.MCU.resourceOptimizeForRotation property. Using tiled format for the rotated images can significantly reduce the rendering time for a single texture.
Format conversion is done during runtime for all textures that belong to the resource. Converted textures are stored in SDRAM in section named preprocess cache.
Minimum size for the cache is the size of the biggest image that has been optimized for the rotations. Optimal size for the cache is such that it is able to hold all rotation optimized images that are visible at the same time. Texture(s) with the oldest access time are freed if the cache gets full.
Cache size is set with
cmake [...] -DQUL_PREPROCESS_CACHE_SIZE=1M
Cache size is set by creating a global linker symbol.
If using the Monotype Spark font engine, it's possible to enable an experimental Qt Quick Ultralite feature in order to use vector outlines for text rendering. This will utilize vector hardware acceleration to draw fonts.
Note: This platform requires text cache to support vector font rendering. It's configured by default in
For the best performance it's recommended to configure MCU.Config.fontCacheSize.
The package for
NXP i.MX RT1170 Evaluation Kit board comes with the following prebuilt demos and examples:
You can find these in the
By default, the output of
printf calls are redirected to a virtual serial port, which is exposed on the host machine via USB.
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
arm-none-eabi-gdbin a separate console
c:\path\to\bin\arm-none-eabi-gdb.exe 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.6.0 or newer.
For convenience, you can set an environment variable that points to the Redlink tool, which is part of the MCUXpresso IDE.
MCUXPRESSO_IDE_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 .\platform\boards\nxp\mimxrt1170-evk-freertos\cmake
GDB Server is now listening for TCP connections on port,
Note: To change TCP port used by
--server :50032to different value.
arm-none-eabi-gdbin a separate console
- Connect to the target via the gdbserver in the
(gdb) target remote :50032
- Alternatively, flash the target device from the
arm-none-eabi-gdbconsole using the following command:
Available under certain Qt licenses.
Find out more.