找回密码
 注册
关于网站域名变更的通知
查看: 378|回复: 2
打印 上一主题 下一主题

用QT控制台应用程序控制IMX8M mini开发板的LED亮灭

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-23 15:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
不久前米尔在面包板网站进行了MYD-C8MMX开发板的试用活动,引起广大爱好者的热烈反应,并且产出了不少杰出的作品,下面来看这位工程师是怎么用QT控制台应用程序控制LED亮灭的吧:

* f* s" f! O; Q+ ^; H: p* w4 B转眼间距上次发【MYC-C8MMX物联网开发板】硬件介绍的帖子两周过去了,在嵌入式Linux开发的道路上艰难地行走着。
6 O! u4 O3 Y" D  T
今天,我给大家带来一个什么应用呢?; p* \3 i' |4 K' K) q
由于笔者手头配件有限,就先利用【MYC-C8MMX物联网开发板】板载的物件:2个LED灯,来实现QT控制台应用程序对其的控制,以验证【MYC-C8MMX物联网开发板】的软件开发环境搭建正确性。 5 ]+ I$ }# q) |- o
好了,话不多说,先贴一张【MYC-C8MMX物联网开发板】程序调试时的硬件开发环境图吧!

$ c' Z  b+ _" C7 p
看程序运行后的效果图吧!

/ B" P; x% v( Y6 }+ [* z
接着,笔者就给伙伴们分享一下自己的开发过程,期望起到抛砖引玉的作用,期待伙伴们更加丰富多彩的应用o(* ̄︶ ̄*)o。
* ]" K  e$ E! k% C# B' c% w经过两周的琢磨,现在基于【MYC-C8MMX物联网开发板】的嵌入式Linux开发有了一个基本的了解,现在给伙伴们分享一下笔者的学习心得。8 g1 k( F. L4 ~; Z( @3 [% Z
继上篇帖子了解了【MYC-C8MMX物联网开发板】的硬件之后,笔者又建立了软件开发环境,然后在开发环境下进行了简单的应用程序开发,基本流程如下:

5 y" @* @( j/ N! L
嗨!由于个人能力有限,目前仅走到了第3步:【简单的QT应用程序开发】,在此笔者抛砖引玉,希望看到伙伴们【具体物联网应用开发】的帖子。
! _( }: u- ~/ v拿到【MYC-C8MMX物联网开发板】之初,就发现开发板出厂内置内核版本为4.14.98的嵌入式Linux操作系统,果断地选择利用内置操作系统作为应用程序的运行环境。6 k) g7 V, K! @9 o+ J8 ?; m
然后,就自然而然地来到了【建立开发环境(基于QT)】的环节。
; g  y9 f# Z3 f; c5 u
6 d2 n" V, i7 v0 W  z, x
基于QT的嵌入式Linux开发环境建立的具体步骤如下:
; K8 r3 e3 V, v3 h( A) f# s1. 先在自己的PC机上安装Linux操作系统6 \) S# o7 L. n5 ~* D5 H: G& S/ @) k
笔者使用是之前在某国产操作系统(基于Linux内核的)的QT应用程序开发时安装的Ubuntu 16.04 64bit的LTS版本,当然我是采用VM15 pro虚拟机上安装的,在这里强调一下,个人开发嵌入式Linux程序安装虚拟机即可,笔者采用虚拟机的共享文件夹的方式,可以将Windows下的某个文件夹共享给Ubuntu,解压文件、运行程序等操作均可正常执行,十分地方便,有时给虚拟机分配的硬盘空间不够用的时候,采用此方法就可以将占用空间的内容直接放在原Windows某个目录下,然后开VM共享即可,简单方便。) A- U3 w# u  D; D* M5 X
话不多说,分享一张笔者的基于【MYC-C8MMX物联网开发板】的开发环境图片:
5 B) G9 \$ T2 a$ }$ G6 f
看着比较乱吧!其中,背景为QT5.9.4应用的QT Creator界面,左下角是官方提供的串口操作示例(不过本帖内容不涉及串口驱动哦!),又上角为通过PuTTY建立的与【MYC-C8MMX物联网开发板】之间的远程登录界面。

+ H4 G4 u5 C- {7 f+ D6 \) U$ W

( w9 f3 X/ ^* @4 h( \* l2. 在Ubuntu操作系统中安装工具软件# }6 ~6 a$ T. t* f9 F, c1 h
在终端中依次输入以下两条指令即可:
apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev u-boot-tools apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
其中,apt-get install为Ubuntu中安装软件的命令符,其后的每个字段为一个待安装的软件,这些软件有35个之多,回忆两周前我安装这些工具包就花了大概2天(零零散散)的时间(晚上输入命令让PC自己安装呗o(* ̄︶ ̄*)o)。
/ p' {- R! E) W5 V
; k5 k( l/ V& y' d7 X8 m% [5 h' f7 S
3. 在Ubuntu操作系统中安装交叉编译工具链
( ]' r( ~0 F' d% {' A8 a交叉编译工具链是在一种平台上(一般为X86 PC平台)编译出能运行在体系结构不同的另一种平台上(例如ARM平台)的程序,虽然两个平台用的都是Linux系统,但是编译得到的程序在X86 PC平台上是不能运行的,必须放到ARM平台上才能运行。+ u" S4 S3 l. _  U
这里笔者使用米尔官方随板提供的Yocto交叉编译器:gcc version 7.3.0(GCC),其是以SDK工具包方式来提供的,需要先安装SDK包后,该交叉编译工具链才可使用,记录好安装路径,后续QT中编译器的配置还要用到。
  e  ^6 p5 _6 j! A9 h+ I" r
4. 安装QtCreator1 B+ N' ^( D  `2 c3 K; L& N8 i) z6 N
QT软件想必做过嵌入式Linux开发的伙伴都有所了解,笔者是在给某产操作系统开发窗口软件时接触到的,其特点是:“一套代码,到处编译”,当然这多少有点夸张了,对于底层的数据获取,例如:CPU利用率、内存占用率等,仍需要针对具体平台(Windows、Linux、IOS)分别编写代码,对于嵌入式Linux来说,其中涉及底层硬件调用的函数自然也会因配套使用的硬件的不同,带来底层函数调用的差异,因此,对于此次基于【MYC-C8MMX物联网开发板】的程序开发来说,首先熟悉硬件驱动是很有必要的,所谓万丈高楼平地起嘛!o(* ̄︶ ̄*)o
$ W  G0 i. e7 Z$ ]% o
Qt的版本有许多,这里根据官方推荐,选择Qt5.9.4版本,伙伴们可以直接从QT官网上下载,地址:http://download.qt.io/archive/qt/5.9/5.9.4/,此文件夹下有多个文件,由于现在目前市面上流行的大部分都是基于X86或X64 CPU的计算机,因此,选择【qt-opensource-linux-x64-5.9.4.run】可执行文件直接运行安装即可,但如果伙伴们碰巧使用的就是那少数的国产CPU的计算机,那么则需要下载QT源码,在拟进行QT应用程序开发的计算机上编译后再运行安装,哦!跑题了,言归正传,话说接下来要干什么呢?当然是要对刚刚安装好的QT进行配置了。

; M- ?* ^, f3 H% Q+ I7 L  f: U: x5. 配置QtCreator# T6 l* o4 ]' S. a
配置QT的目的,在于使用QtCreator编写好代码后,仍需要将代码编译后再能生成在目标平台上可执行的程序,而配置QT则是对QT的编译环境进行配置,包括:

0 o; |8 e1 t3 s7 W; @
【配置一个GCC和G++编译器】其实就是分别新建一个GCC和G++编译器,并使其分别指向【3.在Ubuntu操作系统中安装交叉编译工具链】中交叉编译工具链所在安装目录中的【aarch64-poky-linux-gcc】和【aarch64-poky-linux-g++】交叉编译器。/ I. K8 Z3 K8 s5 i8 Q
【配置一个QTversion】其实就是给QT配置一个build system,这里将其指向【3.在Ubuntu操作系统中安装交叉编译工具链】中交叉编译工具链所在安装目录中的【qt5/qmake】。+ l- z% A! G2 o9 v
【配置一QTdebug】其实就是新建一个Debugger,并将其指向【3.在Ubuntu操作系统中安装交叉编译工具链】中交叉编译工具链所在安装目录中的【aarch64-poky-linux-gdb】。+ _& ?- F1 J) ^1 p. d
【新增一个Device设备】其实就是新建一个Device,并配置【MYC-C8MMX物联网开发板】所在的IP地址、SSH端口、用户名(root)、密码(无),其实这些参数就是在QT与【MYC-C8MMX物联网开发板】通过TCP/IP网络建立一个SSH,即远程登录。) z9 Q8 L3 v+ @1 {1 ^! S
【创建一个kit】就是把上述4步的配置组合配置在一起。
  ]2 a8 L' F+ f

9 B6 n& p' u& z+ |- W9 z" H上述步骤,笔者并未给出详细的配置内容,如果想了解这方面的内容,可以参考帖子开始部分提供下载的【基于QT的嵌入式Linux开发环境建立的手册】,里面有米尔官方给出的详细配置步骤。
5 i7 P1 @) N) Y) H8 z% F至此,就针对【MYC-C8MMX物联网开发板】在Ubuntu上建立起了基于QT的嵌入式Linux开发环境了。
5 f1 _$ j/ _# s9 p+ @$ r接下来,我们就可以编写一个简单的QT应用程序,检验一下QT安装及其配置是否成功吧!o(* ̄︶ ̄*)o
* A$ k: M$ L! ], V建立项目的步骤笔者就略过了,直接分享一个笔者依据官方提供的硬件LED驱动代码,编写的一个通过QT控制台应用程序控制【MYC-C8MMX物联网开发板】上两个LED灯亮灭的程序吧!; J% w/ d/ Y$ n( ^
话不多说,贴上代码先:
, A3 {9 N' V* F
leds_ctrl和leds_play两个函数的代码如下:% x2 q5 F6 Z+ r( M( h* z
当然,这里我没有使用leds_play函数,该函数是让LED闪烁的函数,有兴趣的伙伴们可以自己试试哦!o(* ̄︶ ̄*)o

" }2 T. i( W: M3 L. N* b6 h
上述LED_Control程序经过QT编译后,生成【LED_Control】可执行文件,然后将该文件拷贝到【MYC-C8MMX物联网开发板】上,运行试试看吧!程序运行后的控制台如下图所示:
, r* w( u1 ]# V. R+ L  q, T1 b
当伙伴们不知道如何输入时,可以像其他控制台程序一样,输入“help”查看一下哦!o(* ̄︶ ̄*)o
: G8 I7 _8 w0 e+ l' r运行【LED_Control】后,【MYC-C8MMX物联网开发板】开发板上的两个LED灯均熄灭,如下图所示:
7 y7 w) C* _9 ?# S) ]* q; |8 @
随后显示[LED]:输入提示符,此时输入1后,【MYC-C8MMX物联网开发板】开发板上LED18灯亮,如下图所示:

4 @% d7 h# O$ z' i, H& v, @6 G. q
随后显示[LED]:输入提示符,此时输入2后,【MYC-C8MMX物联网开发板】开发板上LED19灯亮,如下图所示:

4 m9 @7 g* H: @8 G% _7 @9 `
随后显示[LED]:输入提示符,此时输入3后,【MYC-C8MMX物联网开发板】开发板上2个LED灯均亮,如下图所示:
! Q* v4 T6 g: L
" z* G/ g) R, O! \4 H; G
  • TA的每日心情
    开心
    2022-12-5 15:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-5-25 09:07 | 只看该作者
    布骤很详细,谢谢楼主分享
  • TA的每日心情
    开心
    2020-8-4 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-5-25 09:16 | 只看该作者
    谢谢楼主的Ubuntu操作系统的资料,受益匪浅
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-25 23:05 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表