分类: LINUX
2007-02-11 13:01:01
嵌入式Linux在工业控制领域中的应用
徐雪松,章 兢
(湖南大学,湖南 长沙410082)
摘 要:针对嵌入式网络设备的应用特点,介绍嵌入式linux的主要技术及在工业控制领域中的应用。结合硬件平台详细说明嵌入式linux系统的主要实现方法,涉及嵌入式实时内核、内存机制和文件系统的设计。
关键词:嵌入式系统;嵌入式linux;工业控制;应用
Application of Embedded Linux in Industry Control
Xu Xuesong, Zhang Jing
(HunanUniversity,ChangshaofHunan410082,China)
Abstract: Aiming at the
application characteristic of the network equipments, an embedded system based
on linux is introduced. The main technologies of the embedded linux and the
application in industrial control fields are described.At last, the main
realization method of the embeded linux system on an special hardware system is
elaborated.
Keywords: embedded system; embedded linux; industrial
control; application
1前言
随着Internet的飞速发展,网络应用越来越广泛,对各种工业控制设备的网络功能要求越来越高。我们希望工业控制设备能够支持TCP/IP及其他Internet协议,使我们能够通过用户熟悉的浏览器查看设备状态、设置设备参数,或者将设备采集到的数据通过网络传送到Windows或Unix/Linux服务器上的数据库中。因此,要求工控系统必须具备两方面的功能:一方面要在现场完成复杂的测控任务,通常一些任务具有一定的实时性的要求;另一方面要求测控系统能够与某一类型的控制网相连,实现远程监控。在目前应用的大多数测控系统中,嵌入式系统的硬件采用8/16位的单片机;软件多采用汇编语言编程,仅包含一些简单的循环处理的控制流程;单片机与单片机或上位机之间的通信通过RS232、RS485来组网。这些网络存在通信速度慢、联网功能差、开发困难等问题。工业以太网已逐步完善,在工业控制领域获得越来越多的应用。工业以太网使用了TCP/IP协议,便于联网,并具有高速控制网络的优点。
现在,32位嵌入式CPU的价格下降,性能提高,为嵌入式系统的广泛应用提供了可能性。限制嵌入式系统发展的瓶颈突出表现在软件方面。尽管从20世纪80年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Neculeus和WindowsCE等,但是,这些专用操作系统都是商业化产品,高昂的价格使许多低端产品的小公司望而却步,而且,源代码封闭性也大大限制了开发者的积极性。嵌入式系统需要一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务、价格低廉的操作系统。如今,业界已经达成共识,即采用嵌入式linux是大势所趋。嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用。
2嵌入式linux技术
嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个Kernel(内核)及一些根据需要进行定制的系统模块组成。Kernel很小,一般只有几百KB左右,即使加上其他必需的模块和应用程序,所需的存储空间也很小。它有多任务、多进程的系统特征,有些还具有实时性。一个小型的嵌入式Linux系统只需要引导程序、Linux微内核、初始化进程3个基本元素。运行嵌入式Linux的CPU可以是x86、Alpha、Sparc、MIPS、PPC等。与这些芯片搭配的主板都很小,与一张PCI卡大小相当,有的甚至更小。嵌入式Linux所需的存储器不是软磁盘、硬盘、Zip盘、CD-ROM、DVD这些众所周知的常规存储器,它使用Rom、CompactFlash、M?Systems的DiskOnChip、Sony的MemoryStick、IBM的MicroDrive等体积极小(与主板上的BIOS大小相近),存储容量不太大的存储器。它的内存可以使用普通的内存,也可以使用专用的RAM。
与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备的绝佳资源。在保持Linux内核系统更小、更稳定、更具价格竞争力等优势的同时,对系统内核进行实时性优化,使之适应于对工业控制领域高实时性的要求。这是嵌入式linux操作系统更适合在嵌入式工控系统中应用。
标准的Linux内核通常驻留在内存中,每一个应用程序都是从磁盘运到内存上执行。当程序结束后,它所占用的内存就被释放,程序就被下载。而在一个嵌入式系统里,可能没有磁盘。有两种途径可以消除对磁盘的依赖:第一种是在一个简单的系统里,当系统启动后,内核和所有的应用程序都在内存里。这就是大多数传统的嵌入式系统工作模式,它同样可以被Linux支持;第二种就是linux所特有的功能,常用于嵌入式系统中。
因为Linux有能力“加载"和“卸载"程序,一个嵌入式系统就可以利用它来节省内存。考虑一个比较典型的系统有大约8MB~16MB的闪存和8MBRAM,那么,闪存可以被用作文件系统。用闪存驱动程序作为从闪存到文件系统的界面。作为一种选择,也可以用一个闪存磁盘。这是用闪存来摆脱系统对一个磁盘的需求(依赖)。使用这种方式的有DiskOnChip及CompactFlash卡。
FlashMemory可以作为一个文件系统。FlashMemory驱动程序用来连接FlashMemory和文件系统。这种Flash部件用软件仿真磁盘。程序都以文件形式存储在Flash文件中,需要时可以装入内存。这种动态的、根据需要加载的能力是支持其他一系列功能的重要特征,它使初始化代码在系统引导后被释放。Linux同样有很多内核外运行的公用程序。这些程序通常在初始化时运行一次,以后就不再运行。而且,这些公用程序可以用它们相互共有的方式,一个接一个地按顺序运行。这样,相同内存空间可以被反复使用以“召入”每一个程序,就象系统引导一样。这的确可以节省内存,特别是那些配置一次就不再更改的网络堆栈,如果Linux可加载模块的功能包括在内核里,驱动程序和应用程序就可以被加载。它可以检查硬件环境并且给硬件装上相应的软件。这就消除了用一个程序占用许多FlashMemory来处理多种硬件的复杂性。软件的升级更模块化,可以在系统运行的时候在Flash上升级应用程序和可加载驱动程序。配置信息和运行时间参数可以作为数据文件储存在Flash中。
3嵌入式工业控制网络的实现方案
基于嵌入式linux的工控系统以嵌入式微处理器为核心,运行嵌入式Linux操作系统。应用程序可通过网络进行更新,通过键盘进行人机对话,数据可通过LCD现场显示,重要数据可以文件形式保存在Flash等闪存存储器中,数据和报警信息可通过串口向上位机传输,也可通过以太网口向工业以太网或Internet发布信息,用户还可通过网络实现远程监控、远程维护。更为关键的是可充分利用Internet上已有的软件和协议,如ftp、http、Apache、PHP、MySQL等应用程序,迅速搭建前台数据采集系统、测控系统和后台管理系统的通信。其优点是不需要专用的通信线路,可用现成的Internet网络传送数据;可以传送音响和图像;Internet的协议是现成和公开的,大到几十MB的MicrosoftIE浏览器,小到只有600KB的Mosaic浏览器都可以对网络数据进行读取。系统框图如图1所示。
4系统设计
4.1硬件设计
嵌入式运行的硬件平台是开发应用程序的基础,整个开发板基于处理器架构。嵌入式系统硬件结构框图如图2所示。
针对网络服务应用,选择Intel系列的strongARMMCU。StrongARMSA1110是一款高性能、低价位、高集成度的微处理器,为嵌入式应用而设计。SA-1110结合了最高以206MHz运行的32位StrongARM*RISC处理器,速度达到100MHz的存储器总线和灵活的存储器控制器,支持SDRAM、SMROM及variable?latencyI/O设备,为系统设计提供灵活性和较高的存储带宽,适合较大流量的网络应用,为运行Linux提供硬件上的支持。在开发板上还集成了32MB的SDRAM、8MB的FLASH、10baseT以太网接口、RS232/RS485串口、I/O接口以及扩展FLASH卡存储等。
10/100M以太网接口:以太网口一通过HUB直接连接内部局域网;以太网口二通过modem接入Internet。CF扩展口:通过CF扩展接口外界CF卡,提供应用存储,并可进行容量扩展。IDE接口:视不同场合需要,连接电子盘(DOM)或者硬盘,存储应用数据及信息等。串行接口:提供调试和远程监控。DiskOnChip:固化存储系统启动程序(BIOS)及存储嵌入式LINUX操作系统、应用软件系统和系统配置参数。存储空间可以扩展。
4.2软件设计
嵌入式操作系统是整个嵌入式系统的核心。如前所述,嵌入式系统在内存容量和存储容量不足的情况下,必须对linux进行裁减设计。在裁剪过程中涉及两种主要技术,其一是内核的精简。标准Linux是面向PC的,集成了许多PC需要而嵌入式系统并不需要的功能。对一些可独立加上或卸下的功能块,可在编译内核时仅保留嵌入式系统所需的功能支持模块,删除不需要的功能。这样,重新编译过的内核显著减小。
其二是虚拟内存机制的屏蔽。分析发现,虚拟内存是导致Linux实时性不强的原因之一。在工业控制中一些任务要满足一定的实时性的要求,屏蔽内核的虚拟内存管理机制可以增强Linux的实时性。当要更改内核的某项机制时,一般不必大规模的改写代码,可采用有条件编译的方法。
同时,由于linux系统对应用进程进行公平的时间分配调度算法,这一算法不能保证系统的实时性要求。因此,要求对其进行更改,一般有两种途径:第一种是通过POSIX方法,另一种便是通过底层编程。我们通过linux的实时有名管道(FIFO)的特殊队列来处理实时任务的先后顺序。实时有名管道与实时任务一样从不换页,大大减少由于内存翻页而造成的不确定延时。图3示出实时Linux工作原理框图。
4.3设备驱动程序
确定了内核的基本功能后,就要为特定的设备编写驱动程序,可按照在Linux下编写驱动程序的规则编写。编写的设备驱动程序应具有以下功能:对设备初始化和释放;把数据从内核传到硬件和从硬件读取数据;读取应用程序传递给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。
4.4开发基于闪存的文件系统
应用程序和重要数据以文件的形式被存放在闪存文件系统中。JFFS2文件系统是日志结构化的,这意味着它基本上是一长列节点。每个节点包含有关文件的部分信息。JFFS2是专门为象闪存芯片那样的嵌入式设备创建的,所以,它的整个设计提供了更好的闪存管理,具有其他文件系统不可比拟的优点。
JFFS2在扇区级别上执行闪存擦除/写/读操作要比Ext2文件系统好。
JFFS2提供了比Ext2fs更好的崩溃/掉电安全保护。当需要更改少量数据时,Ext2文件系统将整个扇区复制到内存(DRAM)中,在内存中合并新数据,并写回整个扇区。而JFFS2可以随时更改需要的,不是重写整个扇区,并且具有崩溃/掉电安全保护功能。
实现上述步骤后,一个小型Linux操作系统就构成了。构造后的Linux包括进程管理、内存管理和文件管理,支持多任务并行,有完整的TCP/IP协议栈,Linux内建有对以太网控制器的支持,可以通过以太网口连到以太网上,实现远程配置与监控。
将裁剪好的内核移植到所用的目标板上,通常移植内核时,首先要将内核编译成针对该处理器的目标代码。根据不同的硬件体系,移植的启动代码不同。一些内核程序要改写,涉及到编写Linux的引导代码和修改与体系结构相关部分的代码,主要是启动引导、内存管理和中断处理部分。将M?System公司的DOC2000作为系统的启动设备,引导代码放在DOC上。系统加电后,由引导代码进行基本的硬件初始化,然后把内核映象装入内存运行。
最后,将调试好的内核和应用程序烧录到闪存中。裁剪后的Linux已成功移植到目标平台上。这样,在可启动可运行的开发系统中可以根据具体的应用开发应用程序,如数据采集模块,数据处理模块,通信和数据发布模块等。
5小结
如今,互联网的应用正在转向以嵌入式设备为中心。工控系统与Internet的结合实现网络化是一种必然的趋势。我们把嵌入式linux微内核嵌入到基于StrongARMSA111032位MCU系统中,通过构造TCP/IP多种网络协议和基本网络通信协议,充分利用嵌入式操作系统对底层硬件和网络协议的支持,并对工控系统实时性的要求改造linux内核和虚拟内存机制来保证测控任务完成的实时性和可靠性,在工业控制领域有很好的应用前景,具有开发周期短、系统稳定可靠、适应性强等特点。
参考文献
[1]邹思铁.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.
[2]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001.
[3]张星烨.基于Linux的嵌入式系统在测控系统中的设计与应用[J].贵州工业大学学报,2002,(4).
[4]waynewolf著,孙玉芳译.嵌入式计算系统设计原理[M].北京:机械工业出版社,2002.
电子元器件应用