APP下载

基于实时Linux的嵌入式机电控制系统技术研究

2019-09-10王利博

现代信息科技 2019年23期
关键词:嵌入式系统

摘  要:计算机集成电路技术的快速发展,使机电控制系统的集成复杂度越来越高,集成精度也越来越高。由于现代机电控制系统要处理众多的数据信息,因此嵌入式机电控制系统凭借其较为精简的系统形式,以及实用性与专业性较强的系统特征,成为机械电子产业最常用的控制系统。本文主要探讨基于实时Linux的嵌入式机电控制系统启动过程时间分析及优化技术,通过分析Linux内核的嵌入式机电控制系统架构,给出嵌入式机电控制系统启动过程的优化方案。

关键词:嵌入式系统;机电控制;快速启动;Linux

中图分类号:TP271;TM921.5      文献标识码:A 文章编号:2096-4706(2019)23-0066-03

Research on Embedded Electromechanical Control System

Technology Based on Real-time Linux

WANG Libo

(Henan Institute of Technology,Xinxiang  453003,China)

Abstract:With the rapid development of computer integrated circuit technology,the integration complexity of electromechanical control systems is getting higher and higher,and the integration accuracy is getting higher and higher. Since modern electromechanical control systems have to process a large amount of data information,embedded electromechanical control systems have become the most commonly used control systems in the mechatronics industry due to their relatively simplified system forms,system features with strong practicability and professionalism. This paper mainly discusses the time analysis and optimization technology of the embedded electromechanical control system based on real-time Linux. Through analyzing the embedded electromechanical control system architecture of the Linux kernel,the optimization scheme of the embedded electromechanical control system startup process is given.

Keywords:embedded system;electromechanical control;fast startup;Linux

0  引  言

嵌入式机电控制系统核心为计算机控制系统,运用以Linux为内核的控制系统,展开精确快速的机电控制工作。Linux的嵌入式机电控制系统主要由软件架构、系统内核、文件系统等部分构成,Linux系统的优化也要从系统内核与文件系统展开。

1  嵌入式机电控制系统的软件架构与启动过程

1.1  嵌入式机电控制系统的软件架构

嵌入式机电控制系统软件由应用程序、链接库、系统接口层、文件系统、网络协议、设备驱动层、硬件等多部分组

成,其中硬件以上的所有部分屬于嵌入式操作系统内核,是操作系统的最重要部分,具体软件结构如图1所示。Linux嵌入式机电控制系统通过统一形式完成机电控制与管理工作,对嵌入式机电硬件展开管理,并提供相应的调用契约接口来服务系统软件,最终达到拓展控制系统功能的目的。

1.2  嵌入式机电控制系统的启动过程

嵌入式机电控制系统启动过程的具体步骤如图2所示。

嵌入式机电控制系统在开始启动的时候,首先执行引导加载程序,引导加载程序与DSP系统中的硬件存在紧密关联,承担着初始化中央处理器,以及初始化内存与串口的工作。然后执行加载内核镜像工作,随后控制系统会开始加载启动程序代码,展开系统内核的初始化。之后开始代码运行环境的设定工作,随后执行操作系统内核函数。系统内核在初始化完成后,开始加载设备驱动模块。最后安装根文件系统,然后启动应用程序。

1.3  嵌入式机电控制系统内核剖析

1.3.1  嵌入式实时Linux内核架构

Linux的嵌入式操作系统为RTLinux,在Linux内核系统中常会出现程序调用的情况。而Linux系统在保护供一个进程使用临界资源的过程中,不得不屏蔽相应的系统操作。因此,在临界区域程序的优先级较低,而低优先级的程序会抢占高优先级程序的使用请求,但标准Linux运用在固定时间进行内核分配的方案,能够对各个运行进程展开控制。各个优先级进程需要按照相应的时间片进行使用,这会产生进程时间的不可控情况。RTLinux在Linux中加入虚拟层,虚拟层也建立出一个系统内核。该内核能够对各个进行的时间片长度进行预测,并且能够抢先运行优先级较高的进程,以满足各种进程的硬实时性要求。其中实时任务为RTLinux内核中优先级最高的任务,实时任务进程在处理运行完毕后,才能运行其他非实时进程。

1.3.2  嵌入式实时Linux内核主要子系统

Linux系统中能够同时运行多个系统,各种内存、CPU的进程请求都会反馈到系统内核中。Linux内核的子系统包括:系统调用接口、进程管理、网络堆栈、内存管理、虚拟文件系统、设备驱动等。

系统调用接口在系统中起到中介的传递作用,应用程序会将相应的函数请求,通过系统调用接口发送给内核,而调用接口会将需要的函数从内核中调取出来,并将最终的函数结果反馈给应用程序。进程管理在系统中起到管理进程的作用,各个进程有着较为紧密的联系,而进程管理会对进程的CPU调度器进行控制。因此即使存在多种线程同时抢占CPU的情况,O(1)调度算法也可以在特定时间内展开线程控制。Linux内存管理将4KB缓冲区作为基数,从4KB缓冲区展开结构分配、内存页跟踪活动。内存管理会根据内存页的富余状况,进行内存的动态调整与应用。

虚拟文件系统主要在文件系统中设置通用的虚拟接口,同时在系统调用接口、文件系统中间建立交换层。虚拟文件系统往下是缓存的缓冲区,主要存储通用函数集。缓存区会对大量的数据进行储存与读取,以便应用程序随时访问物理设备。设备驱动程序在缓冲区下面,为各种物理设备提供接口。

1.3.3  实时Linux嵌入式内核的启动过程时间分析

启动加载器在进行内核引导后,就会解除对Linux内核的控制权。Linux内核中存在着不同的镜像文件类型,因此Linux内核的启动方式也存在着相应差异。Linux内核镜像文件包含以下几种:标准ELF文件格式的虚拟内存Linux镜像文件、gzip算法压缩后的镜像文件。在压缩后的内核镜像中,内核镜像之前存在一个例程集合,能够对部分硬件进行设置。在内核镜像中存在的内核解压缩后,会将解压缩文件存入内存中。而没有压缩过的内核镜像,在载入内存中展开运行时,例程集合会对内核展开调用以启动内核,具体如图3所示。

首先要进行与CPU体系结构相关的初始化,Linux内核会对CPU类型进行分析,然后从处理器中完成初始化函数的调用工作。之后展开内存结构的初始化,创建相应的内存页表,对各种物理内存展开一一映射。

其次是建立Linux内核的核心环境,主要包括以下几方面内容:Linux内核程序调度器、时间、定时时钟、控制台,核心高速缓冲存储器、内存等的初始化。创设内部高速缓冲存储器、通用高速缓冲存储器,创设文件、目录、虚拟内存高速缓冲存储器,读写缓冲区、内存页哈希表初始化,创设程序信号队列缓冲存储器,创设内存文件存储器寻址数据表等,然后启动第一运行进程。

最后展开外设驱动程序的加载和初始化建设,其中包含根文件系统的安装、内核加载等工作,主要包括以下几方面内容:总线初、网络数据结构的初始化,创设核心线程以完成内存缓冲的清除工作,创设核心线程以完成内存缓冲的信息更新工作,启动核心内存页调整线程,将各种字符、计算机系统接口设备、网络设备进行初始化,然后安装根文件系统。

1.4  嵌入式机电控制系统快速启动方案分析

嵌入式机电控制系统中存在的静态驱动程序越多,RTLinux内核的启动過程所需时间就越长。因此控制系统需要去除多余的驱动程序,并且要对各种驱动程序展开静态、模块化的驱动处理,以提升启动速度。嵌入式Linux文件系统中包含CRAMFS、JFFS/JFFS2、YAFFS/YAFFS2等多种文件系统。其中CRAMFS文件系统不能进行程序编写,因此在Linux系统断电后可能会出现数据丢失的情况。

JFFS、JFFS2文件系统则能够在断电后对数据进行保存,也能够降低系统损耗、展开数据压缩等工作。JFFS2文件系统在嵌入式系统中有着广泛的应用,但也存在着以下几方面的不足:(1)JFFS2文件系统在完成flash设备的全局扫描后,才能展开挂载工作。JFFS2文件系统的挂载时长,与flash设备闪存中所具有的节点数呈正比例关系,通常挂载时长在40秒左右。(2)JFFS2文件系统在磨损平衡的测算中,通常采用磨损平衡概率测算法计算,造成磨损平衡的不确定。(3)JFFS2文件系统占用的系统内存大小,与flash内存的节点数呈正比例关系。JFFS2文件系统将flash存储设备控制在128M内,这不符合Linux嵌入式机电控制系统的要求。

YAFFS2文件系统适用于闪存存储器,YAFFS2文件系统能够对磨损平衡进行控制,还能够在系统断电后进行数据保存。与CRAMFS、JFFS2相比,它具有更加快速的挂载速度,也能够容纳更大容量的闪存。但由于根文件系统方案较为单一,因此YAFFS2文件系统不能完全解决断电数据问题。所以CRAMFS文件系统、YAFFS2文件系统的交互使用,能够解决断电可靠性难题,而且其具备的数据储存、快速挂载优点,符合嵌入式机电控制系统的启动条件。

2  嵌入式机电控制系统快速启动优化及实现

2.1  嵌入式系统软件开发环境

Linux的嵌入式系统资源、内存空间较小,也没有显示器输出设备,因此嵌入式系统的开发不能运用PC软件来完成。当前嵌入式系统采用宿主机—目标机模式进行开发与编译。宿主机、目标机使用缆线进行连接,该缆线用串行线或者Ethernet连接,宿主机、目标机间的数据传送也通过串行线或者Ethernet连接进行。在目标板的开发方面,运用串行线或者互联网展开Linux内核、系统镜像、目标程序等内容的下载。但嵌入式系统的串行线连接,时常会出现连接速度慢的问题;而Ethernet的网络接口连接,则能够为嵌入式系统提供足够的带宽支持。目标板、宿主机可以对多个网络展开互联,但这种网络互联并不能对Linux内核调试带来帮助。

JTAG接口能够解决嵌入式Linux内核的调试问题,JTAG接口与调试器进行连接,就能够完成中央处理器的调试与控制工作。开发者可以通过JTAG接口,将各种启动程序的初始化软件在存储芯片中进行编写。通电后嵌入式系统就能够启动程序,以此完成串行线或者Ethernet网络连接的任务。

2.2  嵌入式Linux内核的优化与实现

2.2.1  内核裁剪与配置

Linux内核的嵌入式机电控制系统属于模块组装,因此Linux内核可以根据硬件环境、具体需要,对内核中无用的模块进行裁减。Linux内核的裁剪与配置包括以下几个步骤:(1)make config是Linux内核的命令接口,若.config文件存在于内核根目录中,则.config文件能够完成内核配置的设置过程。(2)make oldconfig和make config相同,都是Linux内核的命令接口,但make oldconfig在内核中只修改没有配置的内核文件,配置完毕的文件则不会重复修改。(3)make menuconfig是最常用的内核配置方式,在系统终端壳层中以菜单的方式进行表现,将.config文件的默认值在菜单中进行显示。(4)make xconfig与make menuconfig相似,也是根据内核根目录中的.config文件,进行内核的配置工作。

2.2.2  内核的编译

内核的编译主要是完成内核源码、内核镜像、内核模块的建立活动。内核源码的建立是由makefile文件,通过make命令构建内核源码的文件依存体系。而.depend文件隐藏在内核源码树的子目录中,.depend文件中存在着该内核文件、头文件间的文件依存体系。在Linux内核编译的过程中,make命令会对.depend文件进行不停的修改。make命令在进行内核重新编译的时候,会遵循makefile规则对修改的内核文件进行编译。内核源码的文件依存体系可做如下表示:make ARCH=mips CROSS_ COMPILE=mips-linux- clean dep。

Makefile在编译的过程中,会对各种编译文件变量进行内核架构的判断。若内核编译中没有指定架构形式,则默认makefile的内核编译采用宿主机相同的架构模式。在完成交叉编译工具的编译定义后,展开建立内核文件、头文件的依存联系,内核镜像的编译如下所示:make ARCH=mips CROSS_ COMPILE=mips-linux- zImage。

2.3  嵌入式Linux文件系统的优化与实现

Linux系统中的设备文件都储存在/dev根文件系统中,Linux嵌入式系统中存在必要的设备文件。在设备文件设置完毕后,将展开根文件系统应用程序的设置工作。其中BusyBox能够运用单个应用程序,完成Linux命令集的功能操作。在运用静态链接进行BusyBox的配置与编译后,将BusyBox的二进制文件在/bin目录中进行安装。BusyBox文件根据相应的符号链接名称,完成各种要求的命令工作。嵌入式系统在根文件系统初始化过程中,属于单用户工作模式,因此开发者可以运用init程序展开系统的启动操作。BusyBox套件中init程序为目标板中首个应用程序,在系统启动/sbin/init的时候,BusyBox套件中的init进程或立即启动。

3  结  论

Linux嵌入式机电控制通过计算机技术与软件应用的使用,在数据运算处理、可靠与实时性等方面,均有显著的提高。嵌入式控制系统是机电控制未来的发展方向,本文在针对系统启动过程进行探讨后,提出嵌入式机电控制系统的快速启动方案。快速启动方案不仅具有较高的可靠性、稳定性,而且能在一定程度上缩短启动时间。

参考文献:

[1] 宋国军,张侃谕,林学龙.嵌入式系统中U-Boot基本特点及其移植方法 [J].单片机与嵌入式系统应用,2004(10):78-81.

[2] 霍妍,孟凡荣.基于Linux嵌入式系统的研究与实现 [J].计算机系统应用,2004(8):4-6.

[3] 陈光达,段宝岩,保宏,等.嵌入式系统在机电控制中的应用 [J].电子机械工程,2004(3):55-58.

[4] 何小慶.选择ARM CPU的操作系统μC/OS-Ⅱ,μC Linux,还是Linux [J].电子产品世界,2004(3):38-40.

[5] 林仕鼎,任爱华,王雷,等.Linux内核在新型硬件平台上的实现 [J].北京航空航天大学学报,2003(3):197-201.

作者简介:王利博(1985.06-),女,汉族,河南新乡人,教师,硕士,研究方向:计算机控制。

猜你喜欢

嵌入式系统
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究