文章目录
前言
在这里使用的是韦东山老师的IMX6ULL_Pro开发板,接下来我将演示如何移植QT程序到该开发板。
一、编译系统
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_imx6ull-sdk && cd 100ask_imx6ull-sdk
../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.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_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行下面命令使其生效:
source ~/.bashrc
并执行下面命令测试:
arm-buildroot-linux-gnueabihf-gcc -v
4. 编译系统
cd /home/book/100ask_imx6ull-sdk/Buildroot_2020.02.x
make clean
make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig
make all -j4
编译成功后文件输出路径为 output/images
5. 烧写
把上面编译出来的 100ask-imx6ull-pro512d-systemv-v1.img重命名为emmc.img(或sdcard.img),把emmc.img(或sdcard.img) 放到“100ask_imx6ull 烧写工具”的 files 目录里,就可以使用工具烧写到 EMMC(或 SD/TF 卡)。
连接 USB OTG 线,设置USB启动:
打开烧写工具烧写整个系统:
二、Linux中下载QT
1. 安装 Qtcreator
QtCreator 下载网址:https://download.qt.io/official_releases/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 &
这里的“&”符号代表后台运行, 不占用控制命令终端
2. 创建第一个程序
测试成功:
3. 配置 QtCreator 开发环境
在这里我们配置 QtCreator 开发环境主要是为了方便将测试程序移植到Linux开发板上。
(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。 以 IMX6ULL 为例,你已经做了这些事情: 在执行“make 100ask_imx6ull-qt_defconfig”配置后,再执行“make all”可以编译出 QT 的 SDK 包。
可以在/home/book/100ask_imx6ull-sdk 下执行这个命令找到 qmake,记住它的目录:
find -name qmake
添加qmake路径:在 QT 设置界面中,选择 Qt Version 标签,在右侧点击“Add…”,会弹出对话框,切换目录到选择 qmake 文件后,点击 open 按钮,设置完成之后,点击 Apply 按钮保存。
注意:qmake 文件是 buildroot 编译根文件系统后生成的,文件在 buildroot 目录下。
(5)配置 kit 标签
继续选择上边的Kits标签,点击右侧 Add,填写相应内容:
① Name:输入100ask_imx6ull
② Sysroot:输入交叉编译工具链的目录
③ compiler:c和c++这两个选择框里,都选择Custom
④ Debugger:选择刚刚配置的Debuggers,名称为New Debugger
⑤ Qtversio:选择上图中配置的“Qt5.12.8 (host) ”
配置完成后点击apply,点击OK。
三、移植第一个QT程序到IMX6ULL开发板
1. 创建第一个移植程序
第1步 新建项目:
运行QtCreator后,在菜单栏选择 File -> New File or Project
选择项目类型:
在打开的对话框中,依次选择 Application -> Qt Widgets Application ,点击 Choose… , 如下图所示:
第2步 输入项目名字、设置保存位置:
在弹出的Qt Widgets Application对话框中,设置项目名称为imx6ull_hello_and_button,Create in一栏填写项目的存储路,点击Next。如下:
第3步 设置构建系统,然后点击 Next 进入下一步,如下:
第4步 选择基类:
当前的的应用继承自哪种Widget,默认选择QMainWindow,然后点击 Next 进入下一步。
第5步 默认none,继续点击next:
第6步 选择之前添加好的 Kits(100ask_imx6ull),继续点击next:
第7步 完成项目创建:
以上信息填写完后,点击Finish,完成imx6ull_hello_button项目的创建。
2. 编译QT程序
第1步 修改界面:
双击左侧的 Forms 里的 mainwindow.ui 文件,打开 Design 视图。
然后如下图所示,从左侧Display Widgets 栏目下,拖动 Label 和 PushPutton到中间的区域。
最后双击中间区域的Label还有Push Button 修改内容如下图:
第2步 添加测试代码:
第3步 构建:
点击菜单栏Build -> Build Project imx6ull_hello_button,开始编译、构建项目。
在构建过程中,会在左下侧是“Compile Output”窗口打印构建信息。如果有错误,请根据提示出错信息修改,然后重新构建。
第4步 查看构建结果:
imx6ull_hello_and_button 项目构建成功后,编译好的二进制文件存放在刚刚设置的目录中,可以使用 file 命令查看该 APP 是否被编译为 ARM 架构:
四、在开发板上运行QT程序
使用 ssh 远程登陆开发板,将生成的 QT 程序的可执行文件 imx6ull_mini_hello_and_button 拷贝到开发板上:
具体可看:开发板挂载 Ubuntu 的 NFS 目录
上电开发板,开发板使用了Qt默认基于libinput插件,所以我们用手指点击按钮没有反应,输入以下命令:
vi /etc/profile
在开发板这个目录里面修改环境变量,每次打开都默认使用在里面加上下面这一句,这样子就支持了触摸功能。
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
然后执行该文件:点击按钮然后显示文本 test OK
开发板显示如下: