C
在NXP平台上开始使用
概述
本主题提供了在Qt Quick Ultralite支持下的NXP平台上开始使用的所有必要信息。
注意:在设置开发环境之前,请确保已经安装了所有先决条件。
设置开发环境
配置Qt Creator IDE
要使用Qt Creator IDE开发MCU,需要MCU插件。当您安装Qt for MCUs SDK时,Qt在线安装器默认启用它。
要构建和运行应用程序在MCU上,您必须创建一个套件
- 选择 编辑 > 偏好设置 > 设备 > MCU。
注意:如果您看不到MCU选项卡,选择 帮助 > 关于插件,启用 McuSupport 插件,然后重启Qt Creator以应用更改。
- 如果尚未设置,请提供Qt for MCUs安装目录的路径。
- 选择由Qt for MCUs SDK支持的目标。例如,Qt for MCUs 2.8.0 - MIMXRT1170-EVKB-FREERTOS 32BPP。
- 在需求部分,确保满足特定平台的需求。
- 选择启动时自动创建所有可用目标的套件以自动创建套件。
- 如果您选择自动创建套件,选择应用并重启Qt Creator。
配置CMake变量
您还可以从命令提示符设置开发环境。有关在使用Qt Quick Ultralite开发NXP板应用程序时如何使用CMake的更多信息,请参阅NXP板CMake手册。
烧录固件
烧录和调试NXP板需要有OpenSDA固件。如果烧录了错误的固件,工具可能无法与设备建立连接。
要检查固件,将您的设备连接到您的开发主机并打开提供的USB存储设备。在DETAILS.TXT
文件中,查找以"USB Interfaces"开头的行。它必须列出"CDC"和"HID"。如果这些缺失,您可能使用了错误的固件。
NXP提供了下载固件。在下载页面,选择您的板型,然后下载“默认固件应用,DAPLink”。按照NXP的说明将该固件闪存到您的板上后,CDC和HID接口应会被列出。
使用预构建的Qt Quick Ultralite库构建应用程序
使用Qt Creator IDE构建应用程序
- 打开您要构建的示例的CMake项目文件。
- 在配置项目窗口中
- 选择您之前创建的工具包。例如,Qt for MCUs 2.8.0 - MIMXRT1170-EVKB-FREERTOS 32BPP。
- 选择配置项目。
项目配置完成后,选择运行或按键盘上的Ctrl+r键以构建并将二进制文件闪存到目标。
使用命令提示符构建应用程序
您还可以从命令提示符构建应用程序。以下示例演示了如何为MIMXRT1170-EVKB构建minimal
示例。
QUL_ROOT
和QUL_TOOLS
在以下命令行示例中用作环境变量。例如
export QUL_ROOT=$HOME/Qt/QtMCUs/2.8.0 export QUL_TOOLS=$HOME/Qt/Tools/QtMCUs
set QUL_ROOT=C:\Qt\QtMCUs\2.8.0 set QUL_TOOLS=C:\Qt\Tools\QtMCUs
cd $QUL_ROOT/examples/minimal mkdir build cd build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=$QUL_ROOT -DCMAKE_TOOLCHAIN_FILE=$QUL_ROOT/lib/cmake/Qul/toolchain/armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=$QUL_TOOLS/arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=$QUL_TOOLS/NXP/SDK_2_15_0_MIMXRT1170-EVKB -DQUL_PLATFORM=MIMXRT1170-EVKB-freertos -DMCUXPRESSO_IDE_PATH=/path/to/the/MCUXpressoIDE -DFREERTOS_DIR=$QUL_TOOLS/NXP/SDK_2_15_0_MIMXRT1170-EVKB/rtos/freertos/freertos-kernel cmake --build .
cd %QUL_ROOT%\examples\minimal mkdir build cd build cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQul_ROOT=%QUL_ROOT% -DCMAKE_TOOLCHAIN_FILE=%QUL_ROOT%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_TARGET_TOOLCHAIN_DIR=%QUL_TOOLS%\arm_gcc_12_3_1 -DQUL_BOARD_SDK_DIR=%QUL_TOOLS%\NXP\SDK_2_15_0_MIMXRT1170-EVKB -DQUL_PLATFORM=MIMXRT1170-EVKB-freertos -DMCUXPRESSO_IDE_PATH=C:\path\to\the\MCUXpressoIDE -DFREERTOS_DIR=%QUL_TOOLS%\NXP\SDK_2_15_0_MIMXRT1170-EVKB\rtos\freertos\freertos-kernel cmake --build .
成功构建minimal
示例应用程序后,使用以下命令闪存它
cmake --build . --target flash_minimal
相同的步骤适用于任何其他应用程序。
调试
读取调试信息
默认情况下,printf
调用的输出被重定向到虚拟串行端口,该端口通过USB在主机机器上暴露。
通过JTag进行调试
为了调试应用程序代码,可以将硬件调试器连接到板卡的JTag端口,并从此处安装J-Link软件。
注意:以下命令示例中使用了MIMXRT1170-EVKB板。有关其他NXP板的详细信息,请参阅板级信息下的链接。
当通过JTag进行调试时,必须启用跳线JP5。
警告:启用跳线JP5会阻止通过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。打开一个终端窗口并运行以下命令。
注意:以下命令示例中使用了MIMXRT1170-EVKB板。有关其他NXP板的详细信息,请参阅板级信息下的链接。
$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
%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
特定于板的信息
硬件板 | MCU | 编译器 | 操作系统 |
---|---|---|---|
MIMXRT1050-EVKB | MIMXRT1052DVL6B | GNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40 | 裸机,FreeRTOS |
MIMXRT1064-EVK | MIMXRT1064DVL6A | GNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40 | 裸机,FreeRTOS |
MIMXRT1170-EVKB | MIMXRT1176DVMAA | GNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40 | FreeRTOS |
资源缓存策略
默认情况下,应用资源数据在启动时被复制到 SDRAM。为了保留这些资源在闪存中,并在启动时不将它们加载到 RAM,请将以下 QmlProject 选项添加到您的 qmlproject 文件中
MCU.Config { resourceCachePolicy: "NoCaching" }
或者,它也可以仅用于单个图像,如下所示
ImageFiles { files: "big/button.png" MCU.resourceCachePolicy: true }
注意: 在 ImageFiles.files 条目之前设置这些 CMake 选项。
在特定的 Qt 许可证下可用。
了解更多信息。