工控网首页
>

应用设计

>

嵌入式Linux基于Qt开发GPIO应用

嵌入式Linux基于Qt开发GPIO应用

1). 简介

基于Embedded Linux系统的嵌入式设备使用跨平台GUI开发工具Qt来开发嵌入式应用已经非常普遍,本文就以GPIO应用为示例演示下如何通过Qt的集成开发环境Qtcreator来开发嵌入式Linux应用.

本文所采用的硬件平台来自与Toradex发布的基于NXPiMX7 SoCColibriiMX7 ARM计算机模块配合ColibriEva Board.

2). 准备

a).Toradex ColibriiMX7S (基于NXPiMX7S SoC)计算机模块配合ColibriEva Board开发载板.

b). EmbeddedLinux 使用基于OpenEmbedded框架重新编译的集成Qt5.5Toradex Linux imagereleaseV2.6.1版本以及对应的SDK.这个可以结合这里的说明自己进行编译,也可以通过这里直接下载编译好的imageSDK文件.

c).合适的Qtcreator版本,本文使用为3.1.1版本.

3). 软硬件安装

a).由于只是简单展示利用Qt开发GPIO应用,本文只使用一个GPIO来驱动ColibriEva Board上面自带的LED.

b).硬件连接,将ColibriEva载板X10连接器SODIMM_127 X21连接器LED1连接,并去掉对应的X11跳线帽。其他就是标准的串口网口等连接用于调试程序.

c).将上面准备好Linux image (Colibri_iMX7_LinuxImageV2.6.1_20170220.tar.bz2)按照这里的说明更新到ColibriiMX7计算机模块上面.

d).安装Qtcreator, 具体方法这里不赘述.

e).Ubuntu开发主机上面,运行下面命令安装SDK, 安装位置默认为”/usr/local/oecore-x86_64”,当然也可以自行设置, 本文保留默认选项.

------------------------------

toradex@toradex-ubuntu:chmod a+xangstrom-glibc-x86_64-armv7at2hf-vfp-neon-v2015.12-toolchain.sh

toradex@toradex-ubuntu:./angstrom-glibc-x86_64-armv7at2hf-vfp-neon-v2015.12-toolchain.sh

------------------------------

4).Qtcreator配置

a).打开Ubuntu开发主机命令行,通过下面命令启动Qtcreator

------------------------------

toradex@toradex-ubuntu: source/usr/local/oecore-x86_64/environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi

toradex@toradex-ubuntu: $ echo$OE_QMAKE_CXX

arm-angstrom-linux-gnueabi-g++-march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard--sysroot=/usr/local/oecore-x86_64/sysroots/armv7at2hf-neon-angstrom-linux-gnueabi

toradex@toradex-ubuntu:qtcreator

------------------------------

b).qtcreator界面下,进入Tools->Options选项菜单,进入Device选项

./点击”Add”, 并选择”Generic Linux Device”添加新设备,设置好设备名字和IP地址,用户名默认为”root”,密码空.

c). 进入Build & Run菜单选项

./首先进入Qt Versions, 点击”Add”添加,指定SDK qmake, 其位置位于”/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/qt5/qmake”.

./进入Compilers, 点击”Add”添加GCCC++编译器,其位置位于”usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-g++”,不过更新版本的Qtcreator下这里还需要添加C编译器,也在同一目录下,”arm-angstrom-linux-gnueabi-gcc”. 另外其他配置上Platform codegenflags”设置为”‘${CFLAGS}’”,“Platform linker flags”设置为”‘${LDFLAGS}’”.

./进入Debuggers, 点击”Add”添加GDB,其位置位于”/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-gdb”

./进入Kits, 点击”Add”添加,如下讲上述设定的内容适配,新版本QtcreatorCompiler这里会分开CC++分别设定.

5). Qtcreator GPIO应用开发

a). Qtcreator 创建一个新项目, New Project-> Applications -> QtWidgets Application -> Location (任意)-> Kit (指定上面创建的kit)-> Class Information (默认).

b). qtcreator项目下新建GPIO操作相关的headersource文件

./ Header 文件代码如下,主要定义一些全局环境变量和声明GPIO基本的操作函数

https://github.com/simonqin09/QtGPIOProject/blob/master/GPIOSet.h

./ source文件代码如下,主要是GPIO基本操作函数

https://github.com/simonqin09/QtGPIOProject/blob/master/GPIOSet.cpp

c). 进入Forms -> mainwindow.ui, 如下编辑界面,添加一个”button”控件和一个”lineedit”控件.同时通过”go to slot” 添加”button” ”clicked” 动作.

d). 修改mainwindow headersource文件,实现GPIO控制

./ Hearder文件代码如下,只是声明了几个要用的变量

https://github.com/simonqin09/QtGPIOProject/blob/master/mainwindow.h

./ source文件代码如下, 在窗口初始化时候同时初始化GPIO(这里使用SODIMM127作为GPIO输出pin),另外在”clicked”下面处理按键反转GPIO输出的动作控制.

https://github.com/simonqin09/QtGPIOProject/blob/master/mainwindow.cpp

e). 编译应用程序,讲编译号的可执行文件scp复制到ColibriiMX7模块系统上面执行,效果如下:

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

在 Linux 系统上 Docker 容器的性能影响

上游优先 - Toradex 采用主线内核支持

NXP iMX8M Plus M7核心FreeRTOS开发

嵌入式Linux上使用Ramoops

使用容器编译Yocto镜像