Qt for MCUs 1.7
官网资料 https://doc.qt.io/QtForMCUs/index.html
一、概述
Qt Quick Ultralite概述
Qt Quick Ultralite图形框架提供了丰富的QML API集,用于构建流畅的GUI和渲染引擎。它还提供了一组代码生成器和图形运行时,用于呈现基于Qt Quick的图形用户界面(GUI)。
该框架的设计和开发旨在帮助为由微控制器单元(MCU)供电的设备创建丰富的用户界面。开发该应用程序是为了使您的应用程序在可用资源的情况下达到最佳性能。它利用可用的硬件加速来进行图形操作,并意识到MCU平台上的有限资源,例如内存占用量和CPU处理周期。
二、受支持的目标板和开发主机
恩智浦支持的主板
开发板 | MCU | 编译器 | 操作系统) |
---|---|---|---|
NXP MIMXRT1050-EVKB | MIMXRT1052DVL6B | 适用于Arm V8.50的GNU Arm 8,IAR生成工具 | 裸机,FreeRTOS(技术预览) |
NXP MIMXRT1060-EVK | MIMXRT1060DVL6A | 适用于Arm V8.50的GNU Arm 8,IAR生成工具 | 裸机 |
NXP MIMXRT1064-EVK | MIMXRT1064DVL6A | 适用于Arm V8.50的GNU Arm 8,IAR生成工具 | 裸机,FreeRTOS(技术预览) |
NXP MIMXRT1170-EVK | MIMXRT1176DVMAA | GNU Arm 8 | FreeRTOS(技术预览) |
开发平台
Windows 10 64位
三、Qt Quick Ultralite平台移植指南
官网资料 https://doc.qt.io/QtForMCUs/platform-porting-guide-introduction.html
四、以NXP i.MX RT1050为例的开发环境搭建
先决条件
-
Qt for MCUs SDK
-
Qt Creator v4.12.4 or newer
-
CMake 3.15 or newer
-
Ninja 1.10.0 or newer
注意:Ninja是一个可选的构建工具,可以用JOM或NMake等其他工具替换。使用Qt Creator时不需要。
-
ARM Toolchain 8-2019-q3-update or IAR Build Tools for Arm V8.50, depending on which toolchain you are using
-
EVKB-IMXRT1050 SDK 2.7.0 or newer
-
NXP MCUXpresso IDE
注意: MCUXpresso IDE提供了用于刷新和板上调试的工具。
安装链接
- Qt: https://account.qt.io/downloads
- CMake: https://cmake.org/download/
- Python 2.7 32-bit: https://www.python.org/downloads/release/python-2716/
- Arm GCC: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnutoolchain/gnu-rm/downloads
- J-Link Software Pack: https://www.segger.com/downloads/jlink/JLink_Windows.exe
- J-Link OpenSDA Firmware: https://www.segger.com/downloads/jlink/OpenSDA_MIMXRT1050-EVKHyperflash
- STM32CubeProgrammer: https://www.st.com/en/development-tools/stm32cubeprog.html
- STM32 ST-LINK Utility: https://www.st.com/en/development-tools/stsw-link004.html
- MSVC compiler v19.16:在线安装器 vs_community__100178205.1592971373.exe
官网下载安装器 [https://my.visualstudio.com/Downloads?q=Visual%20Studio%202017](https://my.visualstudio.com/Downloads?q=Visual Studio 2017)
4.1 官网下载
购买qt后,登陆 https://account.qt.io/downloads;
下载得到在线安装包 qt-unified-windows-x86-4.0.1-1-online.exe
4.2 在线安装
运行安装包,安装提示一步步安装。
安装后文件目录
4.3 命令行编译demo win版本
- 从命令行进入目录 C:\Custom\Qt\QtMCUs\1.7.0\demos\thermo
- 设置临时环境变量
SET PATH=%PATH%;C:/Custom/Qt/Tools/CMake_64/bin;
SET Qul_DIR=C:/Custom/Qt/QtMCUs/1.7.0
构建(假设你已经安装vs)
cd 项目目录
mkdir build
cd build
cmake .. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release -DQUL_GENERATORS=%Qul_DIR%/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM="Qt"
cmake --build .
4.4 命令行编译mimxrt1050版本
设置要构建的平台
-DQUL_PLATFORM = mimxrt1050-evk-baremetal
armgcc工具链
-DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%\lib\cmake\Qul\toolchain\armgcc.cmake
Qul_DIR
是 Qt for MCUs SDK 安装目录
该平台支持的颜色深度为16位
-DQUL_COLOR_DEPTH = 16
构建命令
cd 项目目录
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal
cmake --build .
得到 build/MinSizeRel/thermo_small.elf
调试
工具MCUXpresso IDE
,连接远程端口
五、从源代码构建Qt Quick Ultralite
先决条件
- Qt for MCUs SDK
- Qt Creator v4.12.4 or newer
- CMake 3.15 or newer
- Ninja 1.10.0 or newer
从修改后的源代码构建Qt Quick Ultralite
cd %Qul_DIR%
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=..\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=MIMXRT1050-EVK-baremetal -DQUL_BUILD_DEMOS=off -DQUL_BUILD_EXAMPLES=off -DQUL_BUILD_FRAMEWORK=off
cmake --build .
mkdir some\path\custom_builds\qul
cd some\path\custom_builds\qul
mkdir qul-build
cd qul-build
set QUL_SDK_PATH=<PATH_TO_INSTALLED_QT_SDK>\QtMCUs\<VERSION>
cmake %QUL_SDK_PATH% -G "Ninja" -DCMAKE_INSTALL_PREFIX=some\path\custom_builds\qul -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=%QUL_SDK_PATH%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=<PLATFORM_NAME> -DQUL_BUILD_TESTS=OFF -DQUL_BUILD_DEMOS=OFF -DQUL_BUILD_EXAMPLES=OFF -DQUL_GENERATORS=%QUL_SDK_PATH%\lib\cmake\Qul\QulGenerators.cmake
ninja install
六、 使用自定义SDK构建 windows版
设置环境变量(临时)
SET Qul_DIR=C:/Custom/Qt/QtMCUs/1.7.0
构建
cd 项目目录
mkdir build
cd build
cmake .. -G "NMake Makefiles JOM" -DCMAKE_BUILD_TYPE=Release -DQUL_GENERATORS=%Qul_DIR%/lib/cmake/Qul/QulGenerators.cmake -DQUL_PLATFORM="Qt" -DCMAKE_C_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe" -DCMAKE_CXX_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe" -DCMAKE_MAKE_PROGRAM=C:/Custom/Qt/Tools/QtCreator/bin/jom.exe -DOS=Qt -DUSE_PLATFORM_WIN32=ON
cmake --build .
七、 构建 mimxrt1050 版
设置环境变量(临时)
SET Qul_DIR=C:/Custom/Qt/QtMCUs/1.7.0
SET IMXRT1050_SDK_DIR=C:/Custom/Qt/Tools/QtMCUs/NXP/SDK_2.8.2_EVKB-IMXRT1050
SET IMXRT1050_FREERTOS_DIR=C:/Custom/Qt/Tools/QtMCUs/NXP/SDK_2.8.2_EVKB-IMXRT1050/rtos/freertos/freertos_kernel
SET MCUXpressoIDE_PATH=C:/nxp/MCUXpressoIDE_11.2.0_4120/ide
SET COMPILER_FOLDER_NAME=armgcc
SET ARMGCC_DIR="C:/Program Files (x86)/GNU Tools ARM Embedded/8 2019-q3-update"
构建
cd 项目目录
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQUL_PLATFORM=MIMXRT1050-EVK-freertos -DQUL_COLOR_DEPTH=16 -DQUL_COMPILER_NAME=armgcc -DQUL_GENERATORS=%Qul_DIR%/lib/cmake/Qul/QulGenerators.cmake -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%/lib/cmake/Qul/toolchain/armgcc.cmake -DOS=FreeRTOS
cmake --build .
八、 构建 mimxrt1170 版
设置环境变量(临时)
SET Qul_DIR=C:/Custom/Qt/QtMCUs/Qul_dev
SET EVK_MIMXRT1170_SDK_PATH=C:/Custom/Qt/Tools/QtMCUs/NXP/SDK_2.8.0_MIMXRT1170_EVK-EAR3
SET EVK_MIMXRT1170_FREERTOS_PATH=C:/Custom/Qt/Tools/QtMCUs/NXP/SDK_2.8.0_MIMXRT1170_EVK-EAR3/rtos/freertos/freertos_kernel
SET MCUXpressoIDE_PATH=C:/nxp/MCUXpressoIDE_11.2.0_4120/ide
SET COMPILER_FOLDER_NAME=armgcc
SET ARMGCC_DIR="C:/Program Files (x86)/GNU Tools ARM Embedded/8 2019-q3-update"
构建
cd 项目目录
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=MinSizeRel -DQUL_PLATFORM=MIMXRT1170-EVK-freertos -DQUL_COLOR_DEPTH=32 -DQUL_COMPILER_NAME=armgcc -DQUL_GENERATORS=%Qul_DIR%/lib/cmake/Qul/QulGenerators.cmake -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%/lib/cmake/Qul/toolchain/armgcc.cmake -DOS=FreeRTOS -DQUL_DEFAULT_SCREEN_WIDTH=1920 -DQUL_DEFAULT_SCREEN_HEIGHT=720
cmake --build .
QUL_PLATFORM可能的值
MIMXRT1050-EVKB-baremetal
MIMXRT1050-EVKB-freertos
MIMXRT1060-EVK-baremetal
MIMXRT1064-EVK-baremetal
MIMXRT1064-EVK-freertos
MIMXRT1170-EVK-freertos
九、 烧写到板子上
官网资料 https://doc.qt.io/QtForMCUs/qtul-flashinginstructions-nxp.html
命令行方式
首先确保安装 MCUXpresso IDE,这个在安装qtformcu时候可以从第三方工具中安装。
板子SW1设置0001 SDP MODE
设置Redlink 工具的环境变量
set REDLINK=%MCUXpressoIDE_PATH%/binaries/crt_emu_cm_redlink.exe
用USB线连接单板,打开终端窗口
%REDLINK% --flash-load-exec "C:/Custom/Qt/QtMCUs/Qul_dev/demos/thermo/build2/MinSizeRel/motor_cluster.elf" -p MIMXRT1176xxxxx --ConnectScript RT1170_connect.scp --flash-driver= -x %Qul_DIR%/platform/boards/nxp/mimxrt1170-evk-freertos/cmake
烧写完板子SW1设置0010 ,正常上电启动
刷新固件方式
闪烁和调试NXP单板需要有DAPLINK固件。如果固件刷新不正确,工具可能无法与设备建立连接。
NXP提供下载固件。在下载页面,选择单板类型,下载“Default firmware application, DAPLink”。
安装DAPLink后,按照以下说明来刷新固件:
- 关闭单板电源
- 上电时,长按SW3
- 连接一根USB线到DAPLink USB端口,它将显示为一个名为“MAINTENANCE”的新磁盘。现在,SW3可以释放了。
- 将DAP LINK FW二进制文件拷贝到维护磁盘上,用于编写新的DAP LINK固件。
- 闪光完成后,驱动器被标记为“RT1170-EVK”。
指定程序生成bin
修改文件 “C:\Custom\Qt\QtMCUs\Qul_dev\lib\cmake\Qul\toolchain\armgcc.cmake”
macro(add_convert_elf_to_hex name)
set_target_properties("${name}" PROPERTIES SUFFIX ".elf")
#add_custom_command(TARGET "${name}" POST_BUILD COMMAND ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy${TOOLCHAIN_EXT}
#-O ihex "$<TARGET_FILE:${name}>" "$<TARGET_FILE_DIR:${name}>/${name}.hex")
add_custom_command(TARGET "${name}" POST_BUILD COMMAND ${TOOLCHAIN_BIN_DIR}/${TARGET_TRIPLET}-objcopy${TOOLCHAIN_EXT}
-O binary "$<TARGET_FILE:${name}>" "$<TARGET_FILE_DIR:${name}>/${name}.bin")
endmacro()