iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等
第五部分 Qt应用开发
第十四章 QtE5.12应用开发
14.1 安装QtCreator
注意,如果使用我们已经搭建好的ubuntu系统,不再需要安装QtCreator,安装目录路径为/opt/Qt5.12.10(但是14.5小节直接编译ARM架构程序需要自行配置)。
注意在使用安装好的QtCreator时可能会有以下报错:
需要使用以下命令来安装对应的库。
sudo apt-get install libxcb-xinerama0
将“iTOP-STM32MP157开发板网盘资料汇总\03_文件系统源码和镜像\03_QT5.12文件系统\04_qtcreater软件\qt-opensource-linux-x64-5.12.10.run”拷贝到ubunt18.04虚拟机任意文件夹下,使用命令 “chmod 777 qt-opensource-linux-x64-5.12.10.run”赋予其可执行权限,之后直接使用命令 “./qt-opensource-linux-x64-5.12.10.run”,按提示安装即可。
安装步骤如下:
点击“Next”。
我们登录自己的账号或者注册新的账号,如上图所示,填写完成之后点击Next。(这里注册页面可能会出现问题,Next不成功可能需要先点击Back,再点击Next才能进入下一步)
点击“Next”。
选择安装的路径,点击“Next”。
尽可能的够勾选上,点击“Next”。
点击同意协议,然后点击“Next”。
等待安装完成。
点击“完成”。
14.2在PC上运行Helloworld
在使用qtcreater软件之前,需要使用以下命令安装几个依赖包,否则可能在接下来的过程中会出现一些问题:
sudo apt-get install g++ build-essential mesa-common-dev libxcb-xinerama0 libglu1-mesa-dev
使用如下命令进入qtcreator安装目录:
cd Qt5.7.0S/Tools/QtCreator/bin/
然后使用命令“./qtcreator”运行qtcreater :
如下图所示,弹出编译环境。
进行如下的选择新建一个工程,如下图所示:
按上图选择,点击“choose”。
如上工程命名为“helloworld”,重新定义了工程存储目录(用户根据个人习惯设置工程目录)。然后单击“Next”,继续。
默认为qmake,不用修改,点击Next
如上图所示,填写对应的信息,然后点击Next/
如上图所示,不用进行任何修改,直接点击Next下一步即可。
如上图所示,选择支持 Ubuntu 的 GCC 64 位编译器。单击“下一步”,继续。
点击“完成”后如下图,新建工程完成。
点击“mainwindow.ui”,开始设计UI
Qtcreater的使用可以参考B站视频 【北京迅为】嵌入式学习之QT学习篇_哔哩哔哩_bilibili
我们在设计界面使用“lable”,输入helloworld 并调整到合适大小。
做好之后保存,点击运行如下图:
14.3 命令行交叉编译Helloworld
qte 的应用移植使用 qmake 前需要先编译 qte 源码,参考第十三章。
接上一小节,如下图,在工程目录下有两个文件夹,一个是直接在 PC 上运行的代码以及应用程序,另外一个是源码。
现在进入如上右边的源码文件夹进行下面几步,就容易理解“为什么 Qt 跨平台非常方便”。
这个 helloworld 应用相当于已经在 PC 机上调试通过了,现在我们只需要做简单的几步就可以将其移植到开发板iTOP_STM32MP157平台上。
如下图,在第十二章中我们编译生成了“/opt/qt-5.12.10-arm”,这个文件夹包含了移植所需要的最重要的工具 qmake。进入“/opt/qt-5.12.10-arm/bin”,可以看到 qmake 文件。
查看了 qt-5.12.10-arm 的 qmake 之后,再进入 helloworld 的源码文件夹,如下图所示。
然后,在该文件夹中运行 qmake 使用“ /opt/qt-5.12.10-arm/bin/qmake”,如下图所示。
如下图,多了一个 Makefile 文件。
然后,执行编译命令“ make”,如下图所示。
生成了“helloworld”。
然后,使用 file 命令测试一下。如下图,“ file helloworld”,可以看到 helloworld 应用文件的基本信息,它是属于 ARM 平台的。
然后,测试一下 X86 上位机平台的文件,如下图所示,可以观察到明显的不同。
14.4 开发板运行Helloworld
下面介绍一下如何在开发板上运行 编译好的helloworld。
开发板烧写好QtE5.12文件系统,通过nfs或者U盘将helloworld 拷贝到开发板。
然后,如下图所示,在超级终端中,先修改权限“ chmod 777 helloworld”
然后再运行“ ./helloworld -qws”。
开发板的屏幕显示如下所示,helloworld 程序就可以开发板上运行了。
14.5 QtCreator直接编译ARM架构程序
除了通过上一小节通过命令行的操作来编译在开发板上运行的程序, 还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行。
如下图所示,打开 qtcreater 如下图操作。
添加 GCC 编译器,如下图所示。
添加编译器路径,点击 apply 如下图。编译器选择,QTE5.12.10的编译器gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf。
选择 Qt 版本,如下图。
选择 qt5.12.10 的 qmake 路径点击 apply,如下图。
选择构建套件,如下图。
配置 QT5.12.10如下图。
到此配置完成,下面举例。新建工程,起名helloqt
如下图选择 Qt5.12.10。
编辑并运行:
新建终端打开工程目录,ls 查看如下图:
输入“file untitled”查看文件属性,如图:
使用nfs或者U盘拷贝到开发板如下图:
使用命令“./untitled”,运行结果如下所示:
14.6 Qt5.7测试例程
应用源码请参考网盘“ iTOP-STM32MP157开发板网盘资料汇总\04_测试例程\02_QtE5.12应用例程”中的压缩包。
QtE5.12 例程源码如下:
压缩包“iTOP-STM32MP157-QtE5.12-adc 模数转换_V1.0.zip”,ADC 模数转换测试的例程。
压缩包“iTOP-STM32MP157-QtE5.12-audio 声卡_V1.0.zip”,声卡测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-can 总线_V1.0.zip”,can 总线测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-helloworld_V1.0.zip”,helloworld 测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-photo2 相册_V1.0.zip”,数码相册测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-QTcalculator 计算器_V1.0.zip”,计算器测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-qtclock 时钟_V1.0.zip”,时钟测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-QTsnakegame 贪吃蛇_V1.0.zip”,游戏贪吃蛇测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-QTtextedit 文本阅读器_V1.0.zip”,文本阅读器测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-rtc 实时时钟_V1.0.zip”,实时时钟测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-TCP 通信例程_V1.0.zip”,网络 TCP 通信测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-testfonts 中文字体_V1.0.zip”,中文字体显示测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-Timer 定时器_V1.0.zip”,定时器测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-tuixiangzi 推箱子_V1.0.zip”,游戏推箱子测试例程。
压缩包“iTOP-STM32MP157-QtE5.12-uart 串口_V1.0.zip”,串口测试例程。