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 + 层的高度 < 显示的高度
注意:如果层的大小在至少一个方向上超过了显示大小,则不会对其进行初始化并显示。在这种情况下,为了避免消耗渲染资源,不会为帧缓冲区分配内存。
此外,此平台上的硬件层支持具有以下限制
- 层的
size
和z
轨序在初始化后是恒定的,无法在运行时更改。 - 如果请求的
z
轨序已经被使用,则采用下一个可用的更高值。如果不可用,Qt for MCUs将从 0 开始搜索下一个可用的值。 - 可以创建的最大层数为 8 层。
- 目前不支持层的全局
opacity
。请使用层的帧缓冲区的航向通道来更改层的透明度。 NXP i.MX RT1170
不支持硬件精灵。为了克服这一限制,Qt for MCUs提供了用于 SpriteLayer 的软件实现。它为 SpriteLayer 的子项提供了一个偏移位置,并将opacity
和enabled
属性传播给它们。《a href="qml-qtquickultralite-layers-spritelayer.html" translate="no">SpriteLayer 的width
、height
和z
属性将被忽略。
旋转图像的优化
要在 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评估套件
板提供的包包含以下预构建演示和示例
- FreeRTOS
这些可以在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包中。
通过DAP-Link进行调试
注意:此方法需要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许可证下可用。
了解更多信息。