专栏中心

EEPW首页 > 专栏 > 嵌入式Linux基于Qt开发GPIO应用

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

发布人:toradex 时间:2017-02-28 来源:工程师 发布文章

By Toradex 秦海

1). 简介

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

本文所采用的硬件平台来自与Toradex发布的基于NXP iMX7 SoC的Colibri iMX7 ARM计算机模块配合Colibri Eva Board.

2). 准备

a). Toradex Colibri iMX7S (基于NXP iMX7S SoC)计算机模块配合Colibri Eva Board开发载板.

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

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

 

3). 软硬件安装

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

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

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

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

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

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

toradex@toradex-ubuntu: chmod a+x angstrom-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”添加GCC C++编译器, 其位置位于”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 codegen flags”设置为”‘${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”添加, 如下讲上述设定的内容适配,新版本Qtcreator在Compiler这里会分开C和C++分别设定.

5). Qtcreator GPIO应用开发

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

b). 在qtcreator项目下新建GPIO操作相关的header和source文件

./ 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”控件和一个”line edit”控件. 同时通过”go to slot” 添加”button” 的”clicked” 动作.

d). 修改mainwindow header和source文件, 实现GPIO控制

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

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

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

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

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

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

中国芯工程

视频 2011-12-13

CES 2026触觉技术新风向:定义下一代交互的核心趋势

Agentic AI时代下,合作伙伴如何制胜:AI的定价、打包与战略

短波接收机的中频数字实现

HBF、HMC等四大存储,谁能力敌HBM

网络与存储 2026-01-12

高准确度温度监视器产品在仪器仪表方面的应用

风力涡轮机控制系统:从PID到增强学习

在生成式人工智能和前端升级的推动下,以太网交换技术创下新高

汽车半导体设计,转向Chiplet

汽车电子 2026-01-12

英飞凌将携手Flex在CES 2026上共同推出适用于软件定义汽车的区域控制器开发套件

Vicor更高密度 - 电源在更小的空间容纳更多功能

英伟达CES主题演讲中的五点想法

智能计算 2026-01-12

R&S 信号与频谱分析仪 FSW

低噪声放大器的选用与电路设计

赛灵思Kintex-7收发器操作演示

视频 2011-12-16

马斯克:会建成自己的2nm晶圆厂

EDA/PCB 2026-01-12

短波数字通信系统中数字AGC的DSP实现

BOS Semiconductors选择Ceva的AI DSP用于下一代ADAS平台

更多 培训课堂
更多 焦点
更多 视频

技术专区