《嵌入式LINUX系统的实现.pdf》由会员分享,可在线阅读,更多相关《嵌入式LINUX系统的实现.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式 LI NUX系统的实现检修厂?王小康摘?要?嵌入式系统正变得越来越流行。被广泛地应用在各种网络设备、控制设备以及个人的数字工具如 PDA中。文章论述了作者在嵌入式操作系统领域里所做的研究和实践工作,主要的工作围绕着将 Linux改造成嵌入式操作系统所进行的具体工作展开,包括单板配置代码,系统的引导与修改,核心映象定制与修改和调试工作。1?引言在当今数字信息技术、网络技术高速发展与发达的后 PC时代,嵌入式系统无处不在,并将不断涌现出新的嵌入式应用系统。传统的操作系统软件 1 2很难有效地支持嵌入式应用系统的快速开发,因而研究与开发嵌入式操作系统,对有效的支持广大的嵌入式应用系统开发具有
2、重大意义,是十分必要的。L inux正在向嵌入式领域的各个方面进军,在不久的将来,我们可以发现嵌入式L inux的广泛的应用:各种车载嵌入式设备(GPS,电子地图)、消费电子设备、手持电脑(HPC,PDA)、蜂窝电话、Internet接入设备、工控设备以及各种网络的基础设施(网管设备,路由,网关,交换器,HUB等)3。本文是围绕着嵌入式 L inux系统的实现展开的。首先介绍嵌入式 L inux系统的硬件结构和软件结构;然后对基于 L inux的嵌入式实时操作系统的实现过程进行详细的阐述;最后是简短的总结。2?嵌入式 Linux系统的硬件结构嵌入式 L inux系统硬件系统是个微形化的专用 P
3、C,它包括系统主机扳、通讯接口板、图象处理和显示板、输入控制板以及存储板等。主机板可采用嵌入式 X86CPU 系列,图象处理和显示板能支持 MPEG数字解压缩和电视终端显示,输入控制包括遥控键盘、遥控器和其他一些输入设备接口,存储板主要要求。7?设计报警和连锁保护系统报警系统的作用在于及时提醒操作人员密切注意监视生产状况,以便采取措施减少事故的发生,连锁保护系统是指当生产出现严重事故时,为保证设备和人身的安全,使各个设备按一定次序紧急停下来。在焙烧炉的炉顶温度控制中,根据工艺要求,一个高限报警温度为 480度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起
4、调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷枪,使得三个喷枪自动从焙烧炉提升出来,从而保护喷枪。8?控制系统的调试和运行状况控制系统安装完成后,应随生产过程进行试运行,按控制要求检查和调整各控制仪表和设备的工作状况,包括调节器的 P、I等参数整定,依次将全部控制系统投入运行,在从投入运行到现在有半年多的时间了,发现焙烧炉的炉顶温度控制效果好,系统运行比较稳定。?20?包括 FLAS HROM,RAM 等存储器。其硬件结构如图 1所示。图 1?嵌入式 L inux系统的硬件结构网络板主要是 Cab
5、le modem(线缆调制解调器)是通过 Cable TV(CATV)、网络进行高速访问的通信设备。它的主要作用是利用现有的有线电视的宽带网络,传送大量的高速数据。网络板中还有协议转换功能,负责将 HFC数据流转换成以太网的 MAC帧并转交给主机板处理。而其中的 TV A/V和 TS流则直接交给解码板处理。对于解码板来说,除了标准的 VGA显示功能以外,还包括MPEG数据流的解码,系统通过应用软件来切换解码板的两种输出。3?嵌入式 Linux系统的的软件结构嵌入式 L inux系统的层次软件结构如图2所示,它的层次结构,从下到上分别是:在最 下层是基本的硬件层,包括网络,视频,输图 2?嵌入式
6、 L inux系统的软件结构入/输出,以及存储系统。在硬件层之上是一个嵌入式 L inux操作系统 4 5图形用户界面(汉化 X W indow s)运行在操作系统之上,最上层的是嵌入式 L inux系统的应用部分,包括 WWW浏览器,电子邮件系统和视频点播系统 6。4?嵌入式 Linux系统的实现作为典型的嵌入式系统开发范例,我们采用两种系统工作模式设定:基于网络的工作模式与基于 Flash/ROM 的工作模式。网络工作模式主要用于系统的开发、调试以及升级阶段。而 Flash/ROM 的工作模式主要用于系统较为成熟、稳定时,将软件系统固化后的场合。我们构建的嵌入式系统将同时支持该两种工作模式
7、。系统的工作模式选择的实现方法,可以通过单板拨码开关来设置,也可以通过引导时从串口获取的系统配置信息的方式来取得。考虑到系统工作配置信息的灵活性,我们采用拨码开关与串口结合的方式。当拨码开关设置成 F lash/ROM 工作方式时,一切引导与系统配置按缺省的方式进行;当拨码开关设置成网络工作模式时,系统的配置信息从串口获取。嵌入式 L inux系统的实现包括单板配置代码,系统的引导与修改,核心映象定制与修改,网络驱动程序以及网络程序设计,和调试工作 7。以下分别对它们进行详细介绍。4.1?单板配置代码(BlOS)系统加电启动后,整个单板处于不确定状态,需要对单板进行配置,对其各个控制器编程,从
8、而使单板处于确定的工作状态下。这对应 PC主板上电后为系统 BI OS所要完成的任务。为了简化该部分的设计,我们只实现了一些基本配置工作,而并不提供一些可调用的中断处理服务过程。具体包含如下:a?初始化芯片及各控制器状态,使单板?21?由上电后的不确定状态转换成确定的工作状态,包括配置内存控制器等等。b?检测系统各单元,包括内存设备。c?建立一些系统参数表。d?进入系统引导代码。整个系统初始配置代码,利用上电后,CS为 0 xFFFF,IP为 0的特性,此时系统执行的第一条指令从 0 xFFFF0处取得。该处为系统的 ROM 区,在我们的系统中只使用了其高 256KB,并将 其配 置到 系统
9、空间 的0 xC0000-0 xFFFF区域。4.2?系统的引导与修改系统的引导主流程图如下图 3图 3?系统引导主流程引导代码放置在 0 xC000?0100开始处。由于引导过程中我们需要进行段内数据写操作(此时工作在实模式状态),在引导代码中,这些数据与代码是处于同一段内的。因此,我们首先需要将引导代码进行搬移,将其位置从 0 xC000?0000搬到 0X9000?0000处。在完成各段地址的正确装配后,才真正开始上图所示的系统引导主流程。整个引导过程是一个装配性很强的工作,其中涉及一些参数传递的问题。我们使用 256B的数据空间用于放置引导过程向系统核心传递的参数,该区域是 9000?
10、00009000?0100这块区域。通过该区域实现与系统核心的通信。这些参数包括:内存大小(m e m size)、使用 NFS时的 nfsRoot、nfsServer-Ip、nfsT argetIp等。核心在 setup_arch时分析并获取这些参数。引导本身也需要相关的参数,主要是网络引导时需要的服务器 hostI-p Addr、targetlpAddr、映象目标文件名 i m age-F ileNa m e等,这些参数通过串口来获取。a?F lash引导。核心映象存储在本地 flash中,该地址区域为0 xC80000 开 始 的 区 域,其 第 一 个DWORD指示了压缩核心映象的大小
11、。为了从该区域读取映象,首先需要切换到保护模式状态,然后将该映象拷贝到从 0 x1000开始的地方,再跳转到 0 x1000处开始执行正常的核心解压与执行的过程。核心执行过程中需要根文件系统的支持,在 Flash引导方式中,其核心我们进行了修改,在安装根文件系统时,我们采用 ram-disk方式,将根文件系统从 flash中载入。F lash方式引导所需的映象及文件系统,我们通过自己开发的 flash写程序来写入。不过此时我们需要先以网络引导方式,让系统运行。b?网络方式引导。我们以 TFTP方式完成核心映象的网络下载。在此之前,先通过串口获得 server及自己的 IP信息,以及核心映象的位
12、置,以及系统运行时,我们进行指定的一些参数,包括采用 NFS根文件系统所需的一些参数。然后根据这些参数,进入 tftp网络下载过程,将核心映象载入到 0 x1000开始的地方,下载完成后进行一些初始化工作,切入保护模式,再跳转到 0 x1000处进行正常的核心解压与远行过程 8。在核心安装根文件系统时,根据分析从串口获得的配置数据,安装 NFS 根文件系统。?22?4.3?核心映象定制与修改我们对系统的启动部分进行修改,主要在传入系统参数方案上进行了更改,同时为了支持 flash的工作方式进行了针对性的修改。由于我们只是实现了通常 BI OS的配置部分代码,而并没有实现 BI OS的一些服务接
13、口,因此,我们对 L inux中依赖 BI OS服务的部分进行了删改,主要去掉了 PCI的支持服务。L inux本身可进行编译配置,从而取得所需要精简的核心。L inux需要根文件系统的支持,用于提供系统运行的数据环境。针对具体的嵌入式应用提供相应的精简的根文件系统支持是必要的,尤其对于写入 flash中时的根文件系统映象,这是嵌入式系统资源有限的约束要求。4?4?调试系统的调试是开发中的主要问题,它分为三个阶段:配置引导代码的调试、系统核心的调试、应用模块的调试。其中对于配置引导代码的调试,我们主要通过数码显示管来进行,确认其运行的状况。对于系统核心的调试比较好的方法是在系统单板方建立起gd
14、b调试的一个 stub,然后通过串口远程调试系统核心。然而目前,x86体系的系统核心在这种方式下调试还有困难。因此实际过程中,我们的调试是通过网络 sniff工具,结合串口输出信息来进行的。为了能够通过现有的网络 sniff工具来调试系统,我们利用arp报文包来输出调试信息。等系统核心运行起来后,调试的方式就要方便多了,我们可通过 telnet直接连到单板上的系统上,就象在通常的 PC上一样对应用模块进行调试。5?结语本文围绕着嵌入式 L inux系统的实现展开,在对改造成嵌入式 L inux操作系统进行的工作中,解决了单板配置代码,系统的F lash引导、网络方式引导,核心映象定制与修改,调
15、试等开发中的主要问题,实现了预期功能,具有一定的借鉴性。我们结合对 L inux在嵌入式系统中应用的研究,在基于 X86的单板上建立并实现嵌入式系统开发平台与环境,在该平台上可以进一步开发专门的嵌入式应用系统。今后的工作将集中在,充分利用现有的资源,优化GUI人机接口,提高系统的智能型,并且利用现在网络通信的发展,通过网络接口,进一步开发扩展嵌入式系统的功能。参考文献1?Abraham S?&Peter B?G alvin,Operating System Concepts(Fourth Edition),Addison-W esley Publishing Compa-ny?19942?An
16、drem S.Tanenbaum,A lbert S.W oodhul,l Operating Sys-tems Design and I mplementation(Second Edition)3?徐仑峰等?超微内核嵌入式实时操作系统的设计,计算机科学4?I nside RealT i me K erne,l Embedded System Conference,h-ttp:/www?embedded?com5?G ien,M?,and Grob,L?M icrokernel based operating system smoving UNIX onto modern system architechtures?In P roc?,UniForum?92 Conf?,USEN I X Assoc?,19926?吕京建,肖海桥?嵌入式系统的软件开发平台,中国单片机公共实验室(BOL)7?俞浩波?嵌入式系统应用研究,浙江大学硕士论文,19978?刘炜等?底层通信协议中内存映射机制的设计与实现?软件学报,1999(1)?23?