嵌入式LI N UX系统的实现
检修厂  王小康
摘  要
嵌入式系统正变得越来越流行。被广泛地应用在各种网络设备、控制设备以及个人的数字工具如PDA中。文章论述了作者在嵌入式操作系统领域里所做的研究和实践工作,主要的工作围绕着将L i nux改造成嵌入式操作系统所进行的具体工作展开,包括单板配置代码,系统的引导与修改,核心映象定制与修改和调试工作。
1 引言
在当今数字信息技术、网络技术高速发展与发达的后PC时代,嵌入式系统无处不在,并将不断涌现出新的嵌入式应用系统。传统的操作系统软件[1][2]很难有效地支持嵌入式应用系统的快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有重大意义,是十分必要的。L i n ux正在向嵌入式领域的各个方面进军,在不久的将来,我们可以发现嵌入式L i n ux的广泛的应用:各种车载嵌入式设备(GPS,电子地图)、消费电子设备、手持电脑(H PC,PDA)、蜂窝电话、Internet接入设备、工控设备以及各种网络的基础设施(网管设备,路由,网关,交换器,HUB等)[3]。
本文是围绕着嵌入式L i n ux系统的实现展开的。首先介绍嵌入式L i n ux系统的硬件结构和软件结构;然后对基于L i n ux的嵌入式实时操作系统的实现过程进行详细的阐述;最后是简短的总结。
2 嵌入式L inux系统的硬件结构
嵌入式L i n ux系统硬件系统是个微形化的专用PC,它包括系统主机扳、通讯接口板、图象处理和显示板、输入控制板以及存储板等。主机板可采用嵌入式X86CPU系列,图象处理和显示板能支持MPEG数字解压缩和电视终端显示,输入控制包括遥控键盘、遥控器和其他一些输入设备接口,存储板主要
要求。
7 设计报警和连锁保护系统
报警系统的作用在于及时提醒操作人员密切注意监视生产状况,以便采取措施减少事故的发生,连锁保护系统是指当生产出现严重事故时,为保证设备和人身的安全,使各个设备按一定次序紧急停下来。在焙烧炉的炉顶温度控制中,根据工艺要求,一个高限报警温度为480度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷,使得三个喷自动从焙烧炉提升出来,从而保护喷。
韦东山嵌入式linux视频
8 控制系统的调试和运行状况
控制系统安装完成后,应随生产过程进行试运行,按控制要求检查和调整各控制仪表和设备的工作状况,包括调节器的P、I等参数整定,依次将全部控制系统投入运行,在从投入运行到现在有半年多的时间了,发现焙烧炉的炉顶温度控制效果好,系统运行比较稳定。
20
包括FLAS H ROM,RAM 等存储器。其硬件结构如图1
所示。
图1 嵌入式L i nux 系统的硬件结构
网络板主要是Cab le m ode m (线缆调制解调器)是通过Cab le TV (C ATV )、网络进行高速访问的通信设备。它的主要作用是利用现有的有线电视的宽带网络,传送大量的高速数据。网络板中还有协议转换功能,负责将H FC 数据流转换成以太网的MAC 帧并转交给主机板处理。而其中的TV A /V 和TS 流则直接交给解码板处理。对于解码板来说,除了标准的VGA 显示功能以外,还包括M PEG 数据流的解码,系统通过应用软件来切换解码板的两种输出。
3 嵌入式L inux 系统的的软件结构
嵌入式L i n ux 系统的层次软件结构如图2所示,它的层次结构,从下到上分别是:在最下层是基本的硬件层,包括网络,视频,
图2 嵌入式L i nux 系统的软件结构
入/输出,以及存储系统。在硬件层之上是一个嵌入式L i n ux 操作系统
[4][5]
图形用户界面
(X W indo w s)运行在操作系统之上,最
上层的是嵌入式L i n ux 系统的应用部分,包括WWW 浏览器,系统和视频点播系统
[6]
4 嵌入式L inux 系统的实现
作为典型的嵌入式系统开发范例,我们采用两种系统工作模式设定:基于网络的工作模式与基于Flash /ROM 的工作模式。网络工作模式主要用于系统的开发、调试以及
升级阶段。而Flash /ROM 的工作模式主要用于系统较为成熟、稳定时,将软件系统固化后的场合。我们构建的嵌入式系统将同时支持该两种工作模式。系统的工作模式选择的实现方法,可以通过单板拨码开关来设置,也可以通过引导时从串口获取的系统配置信息的方式来取得。考虑到系统工作配置信息的灵活性,我们采用拨码开关与串口结合的方式。当拨码开关设置成F lash /ROM 工作方式时,一切引导与系统配置按缺省的方式进行;当拨码开关设置成网络工作模式时,系统的配置信息从串口获取。
嵌入式L i n ux 系统的实现包括单板配置代码,系统的引导与修改,核心映象定制与修改,网络驱动程序以及网络程序设计,和调试工作
[7]
。以下分别对它们进行详细介绍。
4.1 单板配置代码(B l O S)
系统加电启动后,整个单板处于不确定状态,需要对单板进行配置,对其各个控制器编程,从而使单板处于确定的工作状态下。这对应PC 主板上电后为系统B I O S 所要完成的任务。为了简化该部分的设计,我们只实现了一些基本配置工作,而并不提供一些可调用的中断处理服务过程。具体包含如下:
a  初始化芯片及各控制器状态,使单板
21
由上电后的不确定状态转换成确定的工作状态,包括配置内存控制器等等。
b  检测系统各单元,包括内存设备。
c  建立一些系统参数表。
d  进入系统引导代码。
整个系统初始配置代码,利用上电后,CS 为0xFFFF ,I P 为0的特性,此时系统执行的第一条指令从0xFFFF0处取得。该处为系统的RO M 区,在我们的系统中只使用了其高256KB ,并将其配置到系统空间的0xC0000-0xFFFF 区域。4.2 系统的引导与修改
系统的引导主流程图如下图
3
图3 系统引导主流程
引导代码放置在0xC000 0100开始处。由于引导过程中我们需要进行段内数据写操作(此时工作在实模式状态),在引导代码中,这些数据与代码是处于同一段内的。因此,我们首先需要将引导代码进行搬移,将其位置从0xC000 0000搬到0X9000 0000处。在完成各段地址的正确装配后,才真正开始上图所示的系统引导主流程。
整个引导过程是一个装配性很强的工作,其中涉及一些参数传递的问题。我们使用256B 的数据空间用于放置引导过程向系统核心传递的参数,该区域是9000 0000~9000 0100这块区域。通过该区域实现与系统核心的通信。这些参数包括:内存大小(m e m size)、使用NFS 时的nfsRoo t 、n fsSer ver -Ip 、nfs T argetI p 等。核心在setup_arch 时分析并获取这些参数。引导本身也需要相关的参数,主要是网络引导时需要的服务器hostI -p A ddr 、targetl p Addr 、映象目标文件名i m age -F ile N a m e 等,这些参数通过串口来获取。
a  F l a sh 引导。
核心映象存储在本地flash 中,该地址区
域为0xC80000开始的区域,其第一个D WORD 指示了压缩核心映象的大小。为了从该区域读取映象,
首先需要切换到保护模式状态,然后将该映象拷贝到从0x1000开始的地方,再跳转到0x1000处开始执行正常的核心解压与执行的过程。
核心执行过程中需要根文件系统的支持,在Flash 引导方式中,其核心我们进行了修改,在安装根文件系统时,我们采用ra m-disk 方式,将根文件系统从flash 中载入。F l a sh 方式引导所需的映象及文件系统,我们通过自己开发的flash 写程序来写入。不过此时我们需要先以网络引导方式,让系统运行。
b  网络方式引导。
我们以TFTP 方式完成核心映象的网络
下载。在此之前,先通过串口获得ser ver 及自己的I P 信息,以及核心映象的位置,以及系统运行时,我们进行指定的一些参数,包括采用NFS 根文件系统所需的一些参数。然后根据这些参数,进入tftp 网络下载过程,将核心映象载入到0x1000开始的地方,下载完成后进行一些初始化工作,切入保护模式,再跳转到0x1000处进行正常的核心解压与远行过程[8]
在核心安装根文件系统时,根据分析从串口获得的配置数据,安装NFS 根文件系统。
22
4.3 核心映象定制与修改
我们对系统的启动部分进行修改,主要在传入系统参数方案上进行了更改,同时为了支持flash的工作方式进行了针对性的修改。由于我们只是实现了通常B I O S的配置部分代码,而并没有实现B I O S的一些服务接口,因此,我们对L i n ux中依赖B I O S服务的部分进行了删改,主要去掉了PC I的支持服务。
L i n ux本身可进行编译配置,从而取得所需要精简的核心。L i n ux需要根文件系统的支持,用于提供系统运行的数据环境。针对具体的嵌入式应用提供相应的精简的根文件系统支持是必要的,尤其对于写入flash中时的根文件系统映象,这是嵌入式系统资源有限的约束要求。
4 4 调试
系统的调试是开发中的主要问题,它分为三个阶段:配置引导代码的调试、系统核心的调试、应用模块的调试。其中对于配置引导代码的调试,我们主要通过数码显示管来进行,确认其运行的状况。对于系统核心的调试比较好的方法是在系统单板方建立起gdb调试的一个st u b,然后通过串口远程调试系统核心。然而目前,x86体系的系统核心在这种方式下调试还有困难。因此实际过程中,我们的调试
是通过网络sn iff工具,结合串口输出信息来进行的。为了能够通过现有的网络sniff工具来调试系统,我们利用arp报文包来输出调试信息。等系统核心运行起来后,调试的方式就要方便多了,我们可通过te l n et直接连到单板上的系统上,就象在通常的PC上一样对应用模块进行调试。5 结语
本文围绕着嵌入式L i n ux系统的实现展开,在对改造成嵌入式L i n ux操作系统进行的工作中,解决了单板配置代码,系统的F lash引导、网络方式引导,核心映象定制与修改,调试等开发中的主要问题,实现了预期功能,具有一定的借鉴性。
我们结合对L i n ux在嵌入式系统中应用的研究,在基于X86的单板上建立并实现嵌入式系统开发平台与环境,在该平台上可以进一步开发专门的嵌入式应用系统。今后的工作将集中在,充分利用现有的资源,优化GU I人机接口,提高系统的智能型,并且利用现在网络通信的发展,通过网络接口,进一步开发扩展嵌入式系统的功能。
参考文献
1 Ab raha m S &Pet er B G al vi n,Operati ng Syste m Con cep ts
(Fourt h Ed ition),Add is on-W es l ey Pub lis h i ng Co m pa-ny 1994
2 Andre m S.Tan enbaum,A l bert S.W oodhu l,l Operati ng Sys-
te m s Desi gn and I mp le m entati on(Second E diti on)
3 徐仑峰等 超微内核嵌入式实时操作系统的设计,计算
机科学
4 I n si d e RealT i m e K erne,l Em bedded Syste m C on f eren ce,h-t
tp://www e mbedd ed co m
5 G ien,M ,and Grob,L M icrok ernel based operati ng syst e m s
m ovi ng UNIX onto m odern s yste m arch i techtures In P roc , Un i Forum 92Con f ,USEN I X Assoc ,1992
6 吕京建,肖海桥 嵌入式系统的软件开发平台,中国单
片机公共实验室(BOL)
7 俞浩波 嵌入式系统应用研究,浙江大学硕士论文,
1997
8 刘炜等 底层通信协议中内存映射机制的设计与实
现 软件学报,1999(1)
23

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。