信I■与电IB
China Computer&Communication 张件件欢与泉用
2021年第4期
基于Qt/Embedded的嵌入式Linux应用程序的实现
蔡国理李滕苑振东
(酒泉卫星发射中心63636部队,甘肃酒泉732750)
摘要:Qt/Embedded作为一种编程方法,能够实现面向全体对象编程,是线下主流的编程方法.基于此,笔者首先分析了Qt/Embedded和嵌入式Linux应用程序的概况,进而设计了嵌入式Linux应用程序内核体系结构,基于Qt/Embedded 支持的转义字符序列,打造嵌入式Linux应用汇编语言程序。
关键词:Qt/Embedded;嵌入式Linux应用程序;编程语言
中图分类号:TP343.7文献标识码:A文章编号:1003-9767(2021)04-105-03
Implementation of Embedded Linux Application Program Based on Qt/
linux内核设计与实现 pdfEmbedded
CAI Guoli,LI Teng,YUAN Zhendong
(Jiuquan Satellite Launch Center63636Forces,Jiuquan Gansu732750,China) Abstract:As a programming method,Qt/Embedded can realize all-object-oriented programming and is the mainstream offline programming method.Based on this,the author first analyzed the overview of Qt/Embedded and embedded Linux applications, and then designed the embedded Linux application kernel architecture,based on the escape character sequence supported by Qt/ Embedded,to create an embedded Linux application assembly language program.
Keywords:Qt/Embedded;device circuit;embedded Linux applications;programming language
0引言
在以往针对嵌入式Linux应用程序的开发实现中,主要通过Microwindows/NanoX实现嵌入式Linux应用程序,经常会出现性能不稳定的现象叫基于此,本文将Qt/Embedded 应用在嵌入式Linux应用程序实现中,致力于通过Qt/ Embedded提高嵌入式Linux应用程序的整体性能。
1Qt/Embedded概述
目前,Qt/Embedded的最新版本为4.8.0,已经能够实现qt-everywhere-src-opensource-4.8.源代码编译叫不仅如此,Qt/Embedded能够在同一时间内支持GPL、LGPL 和Commercial的相互转换。Qt/Embedded的核心为Widget 窗口组件,通过可视化界面的支持能够实现可视化。在使用Qt/Embedded进行编程的过程中,需要利用qmake工具生成Makefile文件。在使用qmake工具生成文件的过程中,无须叠加配置,即可自动完成[3I o Qt/Embedded中的moc通过对生成的文件进行解析,能够在文件中精准发现Q_OBJECT宏,并利用二进制代码文件生成最终编程所需的Makefile文件,能够随时满足系统调动需求,无须手动操作。
2嵌入式Linux应用程序概述
嵌入式Linux应用程序是由各种各样的“软件包”(或者叫组件)组成的,设计的最初目的是通过设计出一个操作系统的“内核”,实现全部的Unix特性,具有多任务的功能。在嵌入式Linux应用程序中,每个系统调用都拥有唯一的一个内核编程语言,通过将人类掌握的高级语言转换为计算机硬件能够理解并执行的编程语言,能够实现相关的功能。任何嵌入式Linux应用程序内核都包含一个基本的编程语言集合,能够为用户程序(应用程序)提供一个良好的执行环境[4]o 国内针对嵌入式Linux应用程序内核领域的研究一直落后于国外,本文通过探究基于Qt/Embedded的嵌入式Linux应用程序内核编程语言,致力于改变此现状。
3嵌入式Linux应用程序的设计与实现
3.1设计内核体系
考虑到嵌入式Linux应用程序的内核模式是单内核模式
作者简介:蔡国理(1993-),男,黑龙江哈尔滨人,本科,工程师。研究方向:计算机。
根件卄裁与惑用値■与电n
China Computer&Communication2021年第4期
结构模型,因此本文基于Linux0.ll内核源代码绘制嵌入式Linux应用程序内核体系的结构框图,如图1所示。
91嵌入式Linux应用程序内核体系结构框图
嵌入式Linux应用程序内核体系采用的是3级结构,其中核心层级是内核级,用户级以及硬件级仅起到辅助作用切。内核级又分为文件子系统、进程控制子系统以及设备驱动程序。其中,文件子系统、进程控制子系统主要负责控制软件,设备驱动程序主要负责控制硬件。
3.2基于Qt/Embedded汇编语言程序
本文设计的嵌入式Linux应用程序内核编程语言采用Qt/Embedded,编程语言中使用单个字符常数时可以写成在该字符前加一个单引号,例如“A”表示值65,'"C"表示值67[6]o表1中的转义码也同样可以用于单个字符常数。例如表示普通反斜杠字符常数。Qt/Embedded支持的转义字符序列如表1所示。
表1Qt/Embedded支持的转义字符序列
序号转义码说明
1\f换页符(FormFeed),值为0x0C
2\b退格符(Backspace),值为0x08
3\n换行符(Newline),值为0x0A
4\r回车符(Carriage-Return),值为0x0D
5\\标一个反斜杠字符
6VXnn…16进制数表示的字符代码
7\”表示字符串中的一个双引号
汇编程序中对浮点常数的表示方法与C语言基本一样。由于内核代码中几乎不用浮点数,因此这里不再进行说明。基于QVEmbedded编译一个汇编语言程序的基本命令行格式如下:在as程序名之后,命令行上可包含编译选项和文件名。在Qt/Embedded中,所有选项可根据用户操作习惯随意放置。
一个程序的源程序可以被放置在一个或多个文件中,程序的源代码不管如何分割放置在文件中并不会改变程序的语义叫但一个源程序可由多个文本文件组成(终端的标准输入也是一个文件),可以在Qt/Embedded命令行上给出零个或多个输入文件名。Qt/Embedded汇编语言程序的核心思想就是按照从左到右的顺序依次读取输入文件中的内容,并在没有特定含义的命令行上输入参数,输入完毕即可得到一个完整的文件名叫假设在命令行中没有出现任何文件名,Qt/ Embedded汇编语言程序就会自动从终端或控制台标准输入中读取输入的文件内容。
3.3实现嵌入式Linux应用程序
在基于Qt/Embedded汇编语言程序的基础上,采用C语言函数提高嵌入式Linux应用程序的代码执行效率呵。在嵌入式Linux应用程序内核编程语言中,首先执行pood/necd. c进行初始化操作,跳转到init/deef.c程序,通过栈结构顶部和底部的指针进行指定。假定C语言函数与汇编程序的相互调用需要针对C语言函数A去调用汇编程序B,再将汇编程序B中的参数包含在C语言函数A中,这时,当C语言函数A调用汇编程序B就会返回指令地址,返回的具体地址便是A栈帧的终结处,也是B栈帧的起始处。
为了更加直观地说明C与汇编程序的相互调用过程,通过调用举例的方式表示调用处理过程,如下所示:
I retp serd(int*A,int*B,)
2{
3int*C;
4C=*A;*A=*B;*B=C;
5}
6int hein()
7{
8intA,B;
9A=16;B=32;
10serd(*A,*B);
II rweant(A-B)
12}
可以看出,C与汇编程序的相互调用主要依赖Qt/ Embedded中的serd()函数。在执行调用指令时,嵌入式Linux应用程序内核编程语言会自动把serd下一条指令压入栈中㈣。尤其针对汇编语言较短的程序进行调用时,可以通过C语言函数的内联汇编语句加以实现。C语言函数的内联汇编语句具体程序,如下所示:
Pthuer%npd
mlover%esd
Polor%ebc
Olert4%erp
値■与电厢
China Computer&Communication 欲件件欢与泉用
2021年第4期
Olert8%erp
Olert12%erp
Olert16%erp
ret
结合上述程序,在实际操作C语言函数与汇编程序的过程中,不难发现C语言函数的调用自由度很高,因此无须特意设计专门的调用函数,可通过调节参数的方法使其能够实现嵌入式Linux应用程序。
4结语
嵌入式Linux应用程序内核作为最流行的操作系统,因此有必要对其进行深入研究。但由于此次研究篇幅有限,虽然取得了一定的研究成果,但对于嵌入式Linux应用程序的研究还存在一些不足之处,今后
还要对其进行进一步研究,为嵌入式Linux应用程序的进一步应用提供参考依据。
参考文献
[1]夏梦迎,武樱楠,侯家成.基于Linux Qt的动力集中
动车组显示屏设计及实现[J].铁道机车与动车,2020,
551(1):24-26.
[2]项勇,陈月明,叶继伦,等•基于嵌入式Linux+Qt的多参
监护系统设计[J].中国医疗器械杂志,2020(2):127-131, [3]王斌,宋树祥,王宜瑜,等.基于Qt与Arm NN的嵌
入式喷码检测系统设计与实现[J].计算技术与自动化,2020,39(1):54-60.
[4]王星.基于Qt对Linux系统下嵌入软件的研究与应用[J].
电子技术与软件工程,2020,1⑵:55-56.
⑸荣俊勇,王中华.基于PBAS算法的嵌入式视频监控系
统[J],中小企业管理与科技(下旬刊),2019(6):174-175. [6]周锦阳,吴哲,宋广.基于嵌入式Linux的视频通信系统
设计与实现[J].舰船电子工程,2019,39(10):106-110. [7]闫啸,李树江,王向东.基于嵌入式Linux与Qt的
植保机流量控制器设计与实现[J]•计算机测量与控制,2019,253(10):101-105.
[8]张东帅.嵌入式linux系统5G模块的调试应用[J],工程技
术与发展,2019⑺:9.
[9]张团善,吴德文,张晨.基于嵌入式Linux的模板缝纫机
控制系统设计[J].科技视界,2020,301⑺:200-202.
[10]熊诺晔.基于IMX6ULL的嵌入式LINUX实验设备开
发[J].数字化用户,2019,25(34):110-112.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论