C

在NXP平台上开始使用

概述

本主题提供了在Qt Quick Ultralite支持下的NXP平台上开始使用的所有必要信息。

注意:在设置开发环境之前,请确保已经安装了所有先决条件

设置开发环境

配置Qt Creator IDE

要使用Qt Creator IDE开发MCU,需要MCU插件。当您安装Qt for MCUs SDK时,Qt在线安装器默认启用它。

要构建和运行应用程序在MCU上,您必须创建一个套件

  1. 选择 编辑 > 偏好设置 > 设备 > MCU

    注意:如果您看不到MCU选项卡,选择 帮助 > 关于插件,启用 McuSupport 插件,然后重启Qt Creator以应用更改。

  2. 如果尚未设置,请提供Qt for MCUs安装目录的路径。

    {MCU preferences}

  3. 选择由Qt for MCUs SDK支持的目标。例如,Qt for MCUs 2.8.0 - MIMXRT1170-EVKB-FREERTOS 32BPP
  4. 需求部分,确保满足特定平台的需求。
  5. 选择启动时自动创建所有可用目标的套件以自动创建套件。

    注意:您还可以使用创建套件更新套件手动创建/更新套件。

  6. 如果您选择自动创建套件,选择应用并重启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构建应用程序

  1. 打开您要构建的示例的CMake项目文件。
  2. 配置项目窗口中
    1. 选择您之前创建的工具包。例如,Qt for MCUs 2.8.0 - MIMXRT1170-EVKB-FREERTOS 32BPP
    2. 选择配置项目

{MCU project configuration}

项目配置完成后,选择运行或按键盘上的Ctrl+r键以构建并将二进制文件闪存到目标。

使用命令提示符构建应用程序

您还可以从命令提示符构建应用程序。以下示例演示了如何为MIMXRT1170-EVKB构建minimal示例。

QUL_ROOTQUL_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包中。

注意:此方法需要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-EVKBMIMXRT1052DVL6BGNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40裸机,FreeRTOS
MIMXRT1064-EVKMIMXRT1064DVL6AGNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40裸机,FreeRTOS
MIMXRT1170-EVKBMIMXRT1176DVMAAGNU Arm GCC 12.3.rel1, IAR Build Tools for Arm V9.40FreeRTOS

资源缓存策略

默认情况下,应用资源数据在启动时被复制到 SDRAM。为了保留这些资源在闪存中,并在启动时不将它们加载到 RAM,请将以下 QmlProject 选项添加到您的 qmlproject 文件中

MCU.Config {
    resourceCachePolicy: "NoCaching"
}

或者,它也可以仅用于单个图像,如下所示

ImageFiles {
    files: "big/button.png"
    MCU.resourceCachePolicy: true
}

注意: ImageFiles.files 条目之前设置这些 CMake 选项。

在特定的 Qt 许可证下可用。
了解更多信息。