文章目录
前言
在这里使用的是韦东山老师的STM32MP157开发板,接下来我将演示如何移植QT程序到该开发板。
一、Ubuntu操作
1. 安装 Ubuntu 软件
sudo apt-get update
git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git
cd DevelopmentEnvConf
sudo ./Configuring_ubuntu.sh
2. 下载 BSP 及配置工具链
git config --global user.email "user@100ask.com"
git config --global user.name "100ask"
git clone https://e.coding.net/codebug8/repo.git
mkdir -p 100ask_stm32mp157_pro-sdk && cd 100ask_stm32mp157_pro-sdk
../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m stm32mp1/100ask_stm32mp157_pro_release-v2.0.xml --no-repo-verify
../repo/repo sync -j4
3. 设置交叉编译工具链
永久生效:
vim ~/.bashrc
在行尾添加或修改,加上下面几行:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行下面命令使其生效:
source ~/.bashrc
并执行下面命令测试:
arm-buildroot-linux-gnueabihf-gcc -v
4. 编译系统
cd /home/book/100ask_stm32mp157_pro-sdk/Buildroot_2020.02.x
make clean
make 100ask_stm32mp157_pro_ddr512m_systemD_qt5_defconfig
make all -j4
5. 烧写
编译成功后文件输出路径为 output/images
首先我们打开安装好的烧写工具 STM32CubeProgrammer ,设置开发板启动方式为 USB 下载模式启动,连接好 USB OTG 下载线,开启电源,操作方式参考下图:
打开STM32MP157的烧写软件,把刚刚编译好的文件放在软件上,开始烧写,烧写成功后我们先关闭电源开关,然后设置启动方式为 Emmc 启动,打开电源开关即可启动烧写好的 emmc 系统。
6. 开发板测试
上电开发板,输入以下命令,打印出关于当前运行的操作系统的全部信息:
uname -a
配置wifi,输入以下命令:
vi /etc/systemd/network/50-static.network
添加以下内容:
[Match]
Name=eth0
[Network]
Address=192.168.5.9/24
Gateway=192.168.5.1
然后输入以下命令:
systemctl enable systemd-networkd
reboot
挂载NFS目录:
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
Ubuntu输入以下命令,计算文件uImage的MD5哈希值大小:
md5sum uImage
开发板输入以下命令,计算文件uImage的MD5哈希值是否与Ubuntu中的相同:
mount /dev/mmcblk2p2 /boot
md5sum /boot/uImage
二、安装 Qtcreator
QtCreator 下载网址:QtCreator 下载网址
这里我们使用的 qtcreator 版本为 5.12.9:
此安装过程类似 Windows 下应用的安装方法,一路点击下一步即可。
chmod +x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run
安装成功后打开QT,可以直接双击图标打开,也可以通过命令打开,命令如下:
./qtcreator.sh &
这里的“&”符号代表后台运行, 不占用控制命令终端
三、配置 QtCreator 开发环境
在这里我们配置 QtCreator 开发环境主要是为了方便将测试程序移植到我们的开发板上。安装完成后直接双击打开,或者进入目录,运行如下命令启动QtCreator,如图:
1. 打开选项界面
在 QtCreator 界面中,依次点击 tools -> options:
2. 选择编译器
在出现的选项对话框中,在左边点击 Kits,右边选择 Compilers 标签,并点击 Add 选择 Custom->C++:
同理,也在左边点击Kits,右边选择Compilers 标签,并点击Add选择Custom->C。
3. 设置编译器
在弹出的对话框中填写以下内容: Compiler path , Make path 和 ABI; 填写完成后,点击 Apply 进行保存。
同理,也设置Custom->C然后保存,如下图:
同理,也设置一下GDB然后保存,如下图:
最后点Apply保存。
4. 添加 QT 版本
假设你已经按照上面编译出了 QT 的 SDK。 以STM32MP157为例,你已经做了这些事情:
在执行“make 100ask_stm32mp157_pro_ddr512m_systemD_qt5_defconfig”配置后,再执行“make all”可以编译出 QT 的 SDK 包。可以在/home/book/100ask_stm32mp157_pro-sdk 下执行这个命令找到 qmake,记住它的目录:
find -name qmake
在QT设置界面中,选择Qt Version标签,在右侧点击“Add…”,会弹出对话框,切换目录到选择 qmake 文件后,点击 open 按钮,设置完成之后,点击 Apply 按钮保存。
**注意:**qmake文件是buildroot编译根文件系统后生成的,文件在buildroot目录下。
5. 配置 kit 标签
继续选择上边的Kits标签,点击右侧 Add,填写相应内容:
① Name:输入100ask_STM32MP157
② Sysroot:输入交叉编译工具链的目录
③ compiler:c和c++这两个选择框里,都选择Custom
④ Debugger:选择刚刚配置的Debuggers,名称为New Debugger
⑤ Qtversio:选择上图中配置的“Qt5.12.8 (host) ”
配置完成后点击apply,点击OK。
四、移植QT程序到开发板
第1步 新建项目:
运行QtCreator后,在菜单栏选择 File -> New File or Project
选择项目类型:
在打开的对话框中,依次选择 Application -> Qt Widgets Application ,点击 Choose… , 如下图所示:
第2步 输入项目名字、设置保存位置:
在弹出的Qt Widgets Application对话框中,设置项目名称为STM32MP157_hello_and_button,Create in一栏填写项目的存储路,点击Next。如下:
第3步 设置构建系统,然后点击 Next 进入下一步,如下:
第4步 选择基类:
当前的的应用继承自哪种Widget,默认选择QMainWindow,然后点击 Next 进入下一步。
第5步 默认none,继续点击next:
第6步 选择之前添加好的 Kits(100ask_STM32MP157),继续点击next:
第7步 完成项目创建:
以上信息填写完后,点击Finish,完成STM32MP157_hello_and_button项目的创建。
五、编译QT程序
第1步 修改界面:
双击左侧的 Forms 里的 mainwindow.ui 文件,打开 Design 视图。
然后如下图所示,从左侧Display Widgets 栏目下,拖动 Label 和 PushPutton到中间的区域。
最后双击中间区域的Label还有Push Button 修改内容如下图:
第2步 添加测试代码:
第3步 构建:
点击菜单栏Build -> Build Project STM32MP157_hello_and_button,开始编译、构建项目。
在构建过程中,会在左下侧是“Compile Output”窗口打印构建信息。如果有错误,请根据提示出错信息修改,然后重新构建。
第4步 查看构建结果:
STM32MP157_hello_and_button项目构建成功后,编译好的二进制文件存放在刚刚设置的目录中,可以使用 file 命令查看该 APP 是否被编译为 ARM 架构:
六、在开发板上运行QT程序
输入以下命令,关闭原有的QT界面:
systemctl stop myir
使用 ssh 远程登陆开发板,将生成的 QT 程序的可执行文件 STM32MP157_hello_and_button拷贝到开发板上:
然后执行该文件:点击按钮然后显示文本 test OK
开发板显示如下: