嵌入式LINUX系统的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式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度;三个连锁保护温度设定,一个超高限报警温度自动连锁烧嘴,引起烧嘴自动熄火,从而立即引起调节阀的自动关闭,防止煤气流入焙烧炉,一个低限位报警温度用来连锁模式的切换,使模式从酸模式自动切换到水模式,另一个超低限位报警温度用来连锁三个喷枪,使得三个喷枪自动从焙烧炉提升出来,从而保护喷枪。
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