C

NXP i.MX RT1170 (MIMXRT1170-EVKB) 评估套件

本主题提供了有关 NXP 的 i.MX RT1170 的特定于板的信息。假设您已根据 入门 中的说明设置了开发环境。

板功能

  • MIMXRT1176DVMAA MCU 拥有 1GHz ARM® Cortex®-M7 内核和 400Mhz Cortex®-M4 内核
  • 5.5” 720x1280 TFT LCD 触摸显示屏
  • 内嵌 2 MB SRAM,Cortex-M7 使用 512 KB TCM,Cortex-M4 使用 256 KB TCM
  • 16 MB Hyper Flash
  • 512 Mbit 外部 SDRAM
  • 2 x Gb ENET 支持 AVB 和 TSN

支持的颜色深度

本板的参考端口支持 32bpp 颜色深度。该板还支持 16bpp 和 24bpp(使用 ItemLayer API),但不支持 QUL_COLOR_DEPTH。更多详细信息请参阅 颜色深度

支持的显示

参考端口支持两个显示:`RK055HDMIPI4M` 和 `RK055HDMIPI4MA0`。`RK055HDMIPI4MA0` 显示屏是较新的型号,目前由 NXP 销售,而 `RK055HDMIPI4M` 已不再提供。尽管这些显示屏的规格大致相同,但其关键组件,如 TFT 驱动器,是不同的,因此需要它们自己的初始化值和函数调用。

预编译库和二进制文件默认启用 `RK055HDMIPI4MA0`。如果您有旧型号的显示屏并且想使用它,您需要将 `QUL_DIR/platform/boards/nxp/mimxrt1170-evkb-freertos/display/platform_display.h` 中的 `USE_MIPI_PANEL` 定义更改为 `MIPI_PANEL_RK055AHD091` 并重新编译 Qt Quick Ultralite(平台)库。要恢复对新显示屏模型的支持,将 `USE_MIPI_PANEL` 定义更改为 `MIPI_PANEL_RK055MHD091` 并重新编译库。

硬件层支持

NXP i.MX RT1170 Evaluation Kit 提供对图形硬件层的支持。虽然 Qt for MCUs 在该板上支持硬件层,但请确保满足以下要求以获得所需结果。

  • 层的区域不能超出显示边界。如果请求的位置无效,将计算最近的可用位置并使用该位置。Qt for MCUs使用以下公式来确保层位于显示边界内。
    • 0 < x + 层的宽度 < 显示的宽度
    • 0 < y + 层的高度 < 显示的高度

    注意:如果层的大小在至少一个方向上超过了显示大小,则不会对其进行初始化并显示。在这种情况下,为了避免消耗渲染资源,不会为帧缓冲区分配内存。

此外,此平台上的硬件层支持具有以下限制

  • 层的 sizez 轨序在初始化后是恒定的,无法在运行时更改。
  • 如果请求的 z 轨序已经被使用,则采用下一个可用的更高值。如果不可用,Qt for MCUs将从 0 开始搜索下一个可用的值。
  • 可以创建的最大层数为 8 层。
  • 目前不支持层的全局 opacity。请使用层的帧缓冲区的航向通道来更改层的透明度。
  • NXP i.MX RT1170 不支持硬件精灵。为了克服这一限制,Qt for MCUs提供了用于 SpriteLayer 的软件实现。它为 SpriteLayer 的子项提供了一个偏移位置,并将 opacityenabled 属性传播给它们。《a href="qml-qtquickultralite-layers-spritelayer.html" translate="no">SpriteLayer 的 widthheightz 属性将被忽略。

旋转图像的优化

要在 Vivante Imaging Engine 上利用优化的缓存使用,可以通过 ImageFiles.MCU.resourceOptimizeForRotation 属性为旋转图像启用瓦片格式。使用瓦片格式可以显着减少单个纹理的渲染时间。

将对属于资源的所有纹理在运行时进行格式转换。转换后的纹理存储在 SDRAM 中的“预处理缓存”部分。

缓存的最小大小是优化旋转的最大图像的大小。缓存的最佳大小是能够同时存储所有旋转优化图像的大小。如果缓存满了,则会释放最老访问时间的纹理。

设置纹理预处理器缓存大小

使用 CMake

缓存大小通过 QUL_PREPROCESS_CACHE_SIZE 属性设置。

cmake [...] -DQUL_PREPROCESS_CACHE_SIZE=1M

不使用 CMake

缓存大小通过创建全局链接符号来设置。

GCC
--config_def __qul_preprocess_cache_size__=1M
IAR
-Xlinker --defsym=__qul_preprocess_cache_size__=1M

使用 Monotype Spark 字体引擎

利用矢量字体渲染

如果使用 Monotype Spark 字体引擎,则可以启用实验性的 Qt Quick Ultralite 功能,以使用文本渲染的矢量轮廓。这将利用矢量硬件加速来绘制字体。

使用 MCU.Config.fontVectorOutlinesDrawing QmlProject 选项启用矢量轮廓。有关如何使用 Monotype Spark 字体引擎的更多信息,请参阅文本渲染和字体

注意:此平台需要文本缓存以支持矢量字体渲染。它已在 QUL_DIR/platform/boards/nxp/mimxrt1170-evkb-freertos/cmake/coreLibrary.cmake 中默认配置。

性能考虑

为了最佳性能,建议配置MCU.Config.fontCacheSize

预构建演示和示例

NXP i.MX RT1170评估套件板提供的包包含以下预构建演示和示例

这些可以在demo_images目录中找到。

读取调试消息

默认情况下,printf调用输出的结果被重定向到虚拟串行端口,该端口通过USB在主机机器上公开。

通过JTag进行调试

为了在MIMXRT1170-EVKB上调试应用程序代码,可以连接到板的JTag端口,并且必须从此处安装J-Link软件。

必须禁用J5-J8引脚(位于JTag插座下方)。

警告:禁用J5-J8引脚会阻止通过DAP-Link进行编程。在再次使用DAP-Link之前,必须重新启用这些引脚。

  • 启动gdb服务器
    JLinkGDBServer -endian little -noir -speed auto -port 2331 -vd -device MIMXRT1176xxxA_M7 -if SWD -halt -reportuseraction -JLinkScriptFile evkbmimxrt1170_connect_cm4_cm7side.jlinkscript
  • 在单独的终端中运行arm-none-eabi-gdb
    c:\path\to\bin\arm-none-eabi-gdb.exe path\to\compiled.elf -ex "target remote localhost:2331"
    (gdb) monitor reset halt
    (gdb) continue

    注意:如果monitor reset gdb命令没有重置设备,请使用load命令。JLink脚本文件包含在SDK包中。

注意:此方法需要MCUXpresso IDE v11.8.0或更高版本。

为了方便,您可以设置一个环境变量,使其指向MCUXpresso IDE的一部分Redlink工具。

export REDLINK=$MCUXPRESSO_IDE_PATH/ide/LinkServer/binaries/crt_emu_cm_redlink
set REDLINK=%MCUXPRESSO_IDE_PATH%\ide\LinkServer\binaries\crt_emu_cm_redlink

其中,MCUXPRESSO_IDE_PATH是一个环境变量,它指向MCUXpresso IDE的安装目录。

注意:在MCUXpresso IDE 11.8及之前版本中,crt_emu_cm_redlink可执行文件安装在IDE本身中,并通过<MCUXPRESSO_IDE_PATH>/ide/binaries/crt_emu_cm_redlink访问。

  • 将USB电缆连接到板(到J11)和主PC。打开终端窗口并运行以下命令
    %REDLINK% --server :50032 --mi -2 -vc -p MIMXRT1176xxxxx --ConnectScript RT1170_connect_M7_wake_M4.scp --resetscript RT1170_reset.scp -x .\platform\boards\nxp\mimxrt1170-evkb-freertos\cmake

    现在GDB服务器正在监听端口的TCP连接,50032

    注意:要更改redlink_server使用的TCP端口,将--server :50032更改为新值。

  • 在单独的终端中运行arm-none-eabi-gdb
    /path/to/bin/arm-none-eabi-gdb <PATH_TO>/your_app.elf
    C:\path\to\bin\arm-none-eabi-gdb.exe <PATH_TO>\your_app.elf
  • 使用以下命令通过arm-none-eabi-gdb控制台连接到目标设备
    (gdb) target remote :50032
  • 或者,使用以下命令从arm-none-eabi-gdb控制台对目标设备进行编程
    (gdb) load

在某些Qt许可证下可用。
了解更多信息。