《嵌入式Linux系统在PowerPC上的实现.pdf》由会员分享,可在线阅读,更多相关《嵌入式Linux系统在PowerPC上的实现.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第2 6卷 第5期核电子学与探测技术V o l.2 6 N o.5 2 0 0 6年 9月N u c l e a rE l e c t r o n i c s&D e t e c t i o nT e c h n o l o g yS e p t.2 0 0 6 嵌入式L i n u x系统在P o w e r P C上的实现叶 梅,赵京伟,初元萍(中国科学院高能物理研究所,北京1 0 0 0 4 9)摘要:介绍了一个在P o w e r P C上建立嵌入式L i n u x操作系统的应用实例。该系统的主要目的是用于VME总线设备的测试,也可用于小型数据获取与控制系统。建立系统的过程中充分考
2、虑到软件开发以及P o w e r P C的特点,为开发者提供两种可选的程序编译测试方法。介绍了几种典型嵌入式操作系统,比较商业嵌入式系统与主流L i n u x嵌入式系统的异同以及它们的优缺点;就如何根据特定目标板建立一个可裁减的嵌入式L i n u x操作系统做了详细的阐述;给出了一个可以成功运行的测试实例。关键词:B E S I I I数据获取系统;VME;P o w e r P C;L i n u x;嵌入式操作系统中图分类号:T P 3 9 文献标识码:A 文章编号:0 2 5 8-0 9 3 4(2 0 0 6)0 5-0 6 1 4-0 5收稿日期:2 0 0 5-0 7-0 9
3、作者简介:叶梅(1 9 7 3-),女,北京人,工程师,从事数据获取及计算机方面的研究L i n u x作为一个免费的操作系统,它为编程人员提供了一个开放的平台,不受商业产品L I C E N C E的限制,将为系统开发节省大量资金。为此,研究并开发L i n u x作为P o w e r P C系列目标板的操作系统,可以为小型数据获取系统、测试与控制系统的解决方案提供一个有益的参考。1 典型嵌入式系统典型嵌入式系统是以应用为中心,计算机技术为基础,软硬件可裁剪,适应于特定应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。商业的嵌入式实时系统经过多年的发展,先后从实模式进化
4、到保护模式,从微内核技术进化到超微内核技术,在系统规模上也从单处理器的R T O S发展到支持多处理器的R T O S,在操作系统研究领域形成了一个重要分支。一个好的嵌入式实时系统必须具有稳定的性能,实时性,方便的开发环境,标准兼容性等诸多因素。目前存在的R T O S开发商有上百家,它们各具特色,在标准化方面I E E E协 会 也 制 定 了 实 时UN I X系 统 标 准P O S I X 1 0 0 1.4系列协议。这其中较典型的嵌入式系统有V xW o r k s、QNX、以及基于L i n u x的嵌入式系统等,下面简述几个典型的嵌入式操作系统的特点。W i n d R i v
5、e r的V xW o r k s是专门为实时嵌入式系统设计开发的操作系统软件,可以提供高效的实时任务调度、中断管理、实时系统资源以及实时的任务间通信。是嵌入式系统领域中使用较广,市场占有率较高的系统,它支持多种处 理 器,如x 8 6、P o w e r P C、M o t o r o l a 6 8 x x和S u nS p a r c等。但使用的是和UN I X不兼容的环境,大多数的V xW o r k s的A P I是专有的,采用GNU的编译和调试器。QNX是一个微内核实时操作系统,其内核仅提供4种服务:进程调度、底层网络通讯和中断处理。因此它的内核非常小巧(QNX 4.x大约为1 2
6、k B),而且运行速度及快。其他O S服务都是一些可选的配合进程。嵌入式L i n u x是指对L i n u x经过小型化裁剪后,能够固化在容量只有几百k字节或几M字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用L i n u x操作系统。L i n u x核心操作系统本身的微内核体系结构相当简单,网416络和文件系统以模块形式置于微内核的上层,驱动程序和其他部件可以在运行时作为加载模块编译或者添加到内核。这为构造定制的可嵌入式系统提供了高度模块化的构件方法。而在特定情况下该系统可结合定制的瞬间驱动程序和应用程序以提供附加功能。嵌入式L i n u x的开发和研究是目前操作系统领域的一
7、个热点。典型的嵌入式L i n u x系统如M o n t a v i s aL i n u x、R T L i n u x、L y n x O S、和u C l i n u x等。其 中M o n t a V i s t aL i n u x的前身是H a r d H a tL i n u x,它采用标准的L i n u x内核2.4.2,对内核部分进行了高度的裁剪、配置,性能稳定,同时还配备了优先级驱动的实时调度器来实现实时性。是针对嵌入式设备的实时、专业的嵌入式操作系统。R T L i n u x实现了一个小的实时核心,仅支持底层任务创建、中断服务例程的装入、底层任务通信队列、中断服务例
8、程和L i n u x进程。原来的非实时L i n u x核心作为一个可抢先的任务运行于这个核心之上,所有的任务都在核心地址空间运行。2 建立嵌入式L i n u x操作系统尽管商业嵌入式操作系统品种繁多,在性能以及功能多样性上有长处,但它价格昂贵,系统源码封闭,需要较长时间来学习掌握。由于大部分是国外的产品,国内技术支持不到位,当应用触及系统核心的问题时,只能等待商业产品的升级,对系统的改进几乎是不可能的。因此许多用户转而采用免费和开放源码的嵌入式系统。本文就是一个通过自己裁剪L i n u x内核以及加载驱动、功能模块的方式实现嵌入式L i n u x系统的尝试。基于L i n u x的嵌
9、入式系统的开发过程大致可分四步:1)选择目标板;2)建立嵌入式系统开发平台;3)装载或引导嵌入式系统;4)开发应用。嵌入式微处理器实际就是通用计算机对应的C P U。在应用中将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式系统相关的功能。这样可以满足嵌入式系统对体积和功耗大幅度减小的要求。目前的嵌入式处理器主 要 包 括 有AM 1 8 6/8 8、3 8 6 E X、S C-4 0 0、P o w e r P C、M o t o r o l a6 8 0 0 0、M I P S、ARM系列等等。本 文 所 采 用 的 目 标 板 为M o t o r o l a的MVME 2 4
10、3 1单 片 机,它 的C P U是P o w e r-p c 7 5 0,采用精简指令集(R I S C)。目标板上有两个 大 小 分 别 为8 M和1 M的 闪 存(F l a s hM e m o r y):B ANKA和B ANK B,其中B ANK B内随出厂设置有一个P P C B UG软件作为系统初始调试工具。它提供简单的硬件初始化、网络设置、读写、诊断等功能;通过串口和显示终端相连。2.1 建立开发平台由于嵌入式系统自身的特殊性,受限于嵌入式系统自身资源与空间的限制,系统及应用软件的开发一般采用主机-目标机模式。嵌入式开发环境运行在开发主机上,开发主机可以是工 作 站、P C机
11、 等,运 行 的 操 作 系 统 多 为UN I X、M i c r o s o f tW i n d o w s等界面友好、工具丰富的系统平台。目标机是我们要开发的嵌入式硬件平台。主机和目标机通过串行口、以太网、仿真器或其他通讯手段相联系。系统及应用的开发工作可以在主机开发环境下完成,包括编码、编译、链接、下载和调试等工作。生成的目标码由串行口、以太网口或其他通信途径下载到目标机,系统及应用程序在目标机实现,用户可以使用寄于主机的开发环境提供的调试工具调试运行在目标机上的应用程序。2.1.1交叉编译开发环境本系统的开发主机采用P C机,运行R e d-H a tL i n u x操作系统,主
12、机与目标机通过串口和以太网相连;在系统开发的初始阶段,即在修改L i n u x内核及配置驱动程序之前,首先需要在开发主机上构建一个开发环境,它包括一个工具丰富、界面友好的操作系统平台外,最主要的是一个基于目标机的交叉编译和调试环境。即根据特定的C P U,建立相应体系处理器的编译环境。它包括编译内核所需的工具如:l d,a s,a r,r a n l i b,g c c以及相关的库文件。建立交叉编译环境所需要的源代码包包括:1)b i n u t i l s 2.1 1.9 3:这个包里面包括GNU的链接器l d、汇编代码编译器a s、用来将文件打包重组的a r以及为a r打包的文件建立符号
13、表的r a n l i b等工具。2)l i n u x 2.2.1 2:l i n u x内核源代码。3)g c c-2.9 5.4:GNU的C编译器。4)g l i b c-2.1.1和g l i b c-l i n u x t h r e a d s-2.1.1:GNU的C库以及线程库。5165)g d b-5.1.1:GNU调试器(GNU D e b u-g e r)。当编 译 完 成 后,会 发 现 在/h o s t/r e d h a t下产生p o w e r p c-l i n u x-g+(C+编译器)、p o w e r p c-l i n u x-g 7 7(F o r
14、 t r a n的编译器)等 多 个 工 具,至 此 一 个 完 整 的P o w e r P CL i n u x的开发环境就建好了。2.1.2在目标机上建立开发平台上述方式是一种传统的应用程序开发方法,是通过交叉编译在开发机上编译好目标码,再将编译好的程序下载到目标机上运行的方式,本系统提供了一种新的开发方式:本地编译调试环境;即将目标机P o w e r P C作为开发机建立网络文件系统,将目标机作为一个无盘工作站,直接在目标机上开发应用程序。本地编译器的编译与配置采用D e b i a n的b a s e包,在开发机上编译P P C的R PMS工具,然后在指定目录安 装D E NX的
15、嵌 入 式L i n u x开 发 套 件(D E NXE m b e d d e dL i n u xD e v e l o p m e n tK i t),最后将安装好的目录树移植到P o w e r P C指定的N F S中即可。提供两种可选的开发平台的目的是为了方便用户选择自己喜爱的开发模式,比如用惯了L i n u x的用户就习惯于在本地机上调试开发应用,并在本地运行,同时还省略了下载目标程序的过程。后者可以简化开发的过程,为系统测试节约时间。2.2 内核裁剪与编译L i n u x使用单一内核结构,以代码的执行效率作为操作系统的第一要务,但与传统的单一内核UN I X操作系统不同。
16、在普通的单一内核系统中,所有内核代码都被静态编译连入的;而在L i n u x中,可以动态装入和卸载内核中的部分代码。L i n u x中将这样的代码段落称为模块(m o d u l e),并对模块给予了强有力的支持。在L i n u x中可以在需要时自动装入和卸载模块。L i n u x内核包括进程管理、定时器、中断管理、内存管理、模块管理、文件系统、设备驱动、进程通信、网络管理和系统启动等程序。在P C机上安装一个L i n u x系统至少需要上百兆的硬盘空间,而嵌入式系统的存储空间有限,因此需要对L i n u x进行裁剪,使它可以存放到容量较小的F l a s h中。修改L i n u
17、 x内核源代码,是一项复杂且耗费时间的工作,通过这种办法来达到定制的目的容易造成代码的不稳定或丧失代码的灵活性。因此本系统采用修改内核选项配置的方法来达到内核裁剪的目的,既可以满足应用功能的要求又可以得到体积小的内核。在交叉编译环境建好之后,就可以用它来编译相关体系的内核了。本系统使用的内核版本 是L i n u x-2.2.1 2,在 它 的 基 础 上 通 过m a k em e n u c o n f i g 将内核不必要的功能除去,留下最基本的一些功能模块,如对C P U(C ON-F I GP P C)的支持、通用选项、网络选项与网络设备、字 符 设 备、文 件 系 统、网 络 文
18、件 系 统、VME总线支持等。之后对裁剪的内核源码进行编译,就得到了一个可以运行在P o w e r P C上精简内核了。i n i t内核线程的主要工作过程是:首先调用i n i t m a i n.c中d ob a s i cs e t u p()对各种设备做初始化,然后是网络初始化、加载根文件系统等,i n i t线程最后启动如下的i n i t用户进程:e x e c v e(“s b i n/i n i t”);i n i t进程负责触发其他必需的进程以使系统作为一个整体进入可用的状态。这些工作由i n i t r d/e t c/i n i t t a b文 件 控制,通常包括启动
19、各种守护进程等。产生i n i t进程的另一个原因是i n i t进程是系统所有进程的祖先。2.3 L i n u x/P P C引导系统与初始化本 系 统 采 用 的 是G a b r i e l P a u b e r t的L i n u x/P P Cl o a d e r。它是一个支持N F S文件系统和串口终端的引导程序,通过简单文件传输协议(T F T P)把内核装载到目标系统上,并通过网络文件系统(N F S)建立一个无盘工作站。它的工作过程是:上电瞬间,产生C P U复位异 常,跳 往 指 定 的 地 址,引 导 程 序L i n u x/P P Cl o a d,初始化硬件;
20、寻找并引导网络操作系统,如果程序下载成功并开始解压缩内核,权力交接,l i n u x内核开始运行,运行的第一个文件是b o o t/h e a d.S,它对C P U重新初始化,完成虚拟地址映射,内核空间映射到0 x c 0 0 0 0 0 0 0处,跳往s t a r tk e r n e l:i n i t/m a i n.c。2.4建立N F S文件系统许多嵌入式系统没有磁盘或文件系统。L i n u x也可以作到这一点。应用任务可以随同内核一起被编译并在启动时作为一个映像被加载。对简单系统这已经足够。不过它缺乏灵活616性。L i n u x支持多种文件系统,文件系统可以放在一个传统
21、磁盘驱动中、闪存(F l a s hM e m o-r y)中或任何可用的其他介质中。闪存被分隔成很多小块(并组织起来)。其中有一个引导块,它存放了C P U上电后运行的第一个软件,如L i n u x的引导程序,余下的闪存块可以被用作文件系统。L i n u x的内核可以被引导程序从闪存中拷贝到R AM中;或者可以把内核放在闪存的一个独立区中并从那里直接运行。最后,对于网络上的嵌入式系统(有网络支持的嵌入式系统),L i n u x支持N F S(N e t w o r kF i l eS y s t e m)。它允许在远程主机上使用与访问本地文件相同的方法来访问文件。这个文件访问对于客户来
22、说是完全透明的,并且在各种服务器和主机的结构中交叉工作。首先它允许通过网络加载各种应用程序,用在嵌入式系统上的软件可以从一个公用的服务器上加载。在系统运行的过程中导入和导出数据、配置、状态信息等。对于用户应用程序的测试,这是一个非常强大的特征;举例来说,一个嵌入式系统可能装配了一个R AM d i s k,它包含着与系统当前状态的更新维持一致的(状态)文件.那么别的嵌入式系统仅需通过网络把这个R AMd i s k作为远程磁盘装载便可以访问那些位于远端R AMd i s k中的状态文件。L i n u x提供了一种很方便的方式来创建无盘工作站,这样的无盘工作站可以从一台网络服务器启动。网络启动
23、的时候,通过网络获得L i n u x内核、驱动程序模块和应用程序。这样的启动过程如下所示;1)从b o o t p或者d h c p服务器获得这台机器的I P地址;2)从开发机t f t p服务获得L i n u x的内核;3)从开发机N F S服务上装载文件系统;4)必要的话,可以装载进X-S e r v e r软件并且运行X W i n d o w s;5)运行应用程序。3 UN I V E R S EI I驱动程序U n i v e r s e I I(C A 9 1 C 1 4 2)是一个工业标准的P C I总线-VME总线桥。是MVME 2 4 3 1单片机的主要功能组件之一。它的
24、主要功能包括:6 4位3 3 MH z的P C I总线和6 4位VME总线接口、可编程DMA控制器、双向F I F O缓存、提供大范围的VME b u s地址空间和数据传输模式、9种可编程的s l a v e i m a g e s窗口等。没有U n i v e r s eI I就无法存取VME总线以及实现各种功能,因此它的驱动是系统能否进行VME总线测试的关键。但是除了一些商业的嵌入式L i n u x产品声称带有驱动外,在L i n u x源码树中并没有提供对该芯片的支持。幸运的是G a b r i e lP a u b e r t在网上曾发布有T u n d r asU n i v e
25、r s e的驱动程序,它原是为MVME 2 6 0 0设计的,但笔者发现MVME 2 4 3 1所使用的仍然是T u n d r a的U n i v e r s e,于是决定拿来一试,结果可以成功使用。下面介绍如何配置U n i-v e r s e I I驱动程序:首先,在UN I V E R S EI I驱动程序起作用之前,必须对内核的配置进行修改,因为L i n u x内核缺省配置是不支持VME总线的。具体办法是将配置选项C ON F I GVME B U S打开,稍后再加入它的模块。UN I-V E R S EI I驱动程序对系统有如下要求:1)存取寄存器:在系统启动P C I初始化时需
26、要将这些将寄存器的地址存到P C I基址寄存器中;2)P C I s l a v e i m a g e0必须分配8 k B的P C I内存空间并由驱动程序保留内部使用3)其他的S l a v eI m a g e包括S p e c i a lS l a v eI m a g e在内的映射地址必须落在分配的P C I内存空间之内。对驱动程序源码进行编译后产生一个u n i-v e r s e.o文 件,它 将 作 为 一 个 模 块 被 安 装 在L i n u x系统中;其次,需要建立一个设备文件用于访问VME总线设备,如:/d e v/v m e 设备文件;然后,利用模块加载命令i n s
27、 m o d 将设备驱动安装到系统中:至此,应用程序就可以使用标准的系统打开调用及相应的参数来使用U-N I V E R S EI I芯片并实现相应的功能了。如何编写VME读写测试程序将在下面讨论。4 应用程序开发实例4.1 VME概况及地址映射MVME 2 4 3 1是一个基于VME总线的单片机,它配备P o w e r P C 6 0 4精简指令微处理器(MP C 7 5 0),拥有计算机系统的许多标准特性如网络、调试端口、启动内存、闪存、S D R AM和P C I中间层接口。中间层结构可以提供灵活的I/O升级。MVME 2 4 0 0系列包括4种总线:716P o w e r P C处
28、理器总线、I S A总线、P C I内部总线以及VME总线。通过U n i v e r s eI IA S I C的地址转换功能,处理器可以访问到VME总线的任何地址空间。P C I的内存映射由H a w k A S I C的P HB(P C IH o s tB r i d g e)部分以及U n i v e r s e I IA S I C来控制。P HB与H a w kA S I C有灵活的可编程映射解码寄存器来配置P C I与VME的映射窗口,以适应不同的应用。4.2 如何实现V C B D的读写在本测试系统中,使用了一个用户设计的硬件板V C B D作 为I/O测 试 板。它 是 一
29、个A 2 4/D 1 6的VME应 用 板,它的硬件地址是0 x B D 0 0 0 0。在嵌入式L i n u x启动后,测试系统由开发主机P C、MVME 2 4 3 1、V C B D、VME机箱以及相应的网络连接线和串口连接线组成,如图1所示。用户可以在开发主机上开发应用,通过网络下载到目标机上运行,也可以直接通过网络文件系统(N F S)使用运行在P o w e r-P C上的本地开发环境进行应用程序的开发。在这里只举例实现一个读写的功能。图1 P o w e r P C测试系统示例 应用程序可以参照以下几个步骤实现:1)创建并打开设备:存取VME总线只需使用系统的标准的设备打开调用
30、,在本例中VME总线设备使用L i n u x系统为实验设备预留的6 0设备号,可以用命令m k n o d/d e v/v m ec6 00 创建VME设备。2)设定VME存取的方式:通过对UN I-V E R S EI I寄存器的设定可以实现VME的各种存取方式如:设定不同的寻址空间、优先级、以及规定是否块传输(B l o c kT r a n s f e r)等。函数i o c t l使用参数VMES E TAT T R,以及数据结构VMEa t t r设定3个值:b a s e、l i m i t和f l a g s,b a s e和l i m i t分别代表VME设备起始地址、结束地
31、址,f l a g s包含三个域:存取VME的地址空间、数据宽度以及存取数据的机制。以V C B D为例:数据结构:VMEa t t rm e m d e s c=b a s e:0 x b d 0 0 0 0,l i m i t:0 x d f f f f,f l a g s:VMEAMA 2 4(1 6)|VMEU S EMA P|VMEU S ERMW设置V C B D设备采用2 4位地址位,1 6位数据位,通过VME内存映射,进行读写操作。3)i o c t l提供一种安全方式来检测设备,它通过执行一个读写时钟周期来设定VME地址空间以及相关的设置参数,同时检测总线错误或超时错误。然后
32、调用mm a p函数将设备映射到处理器虚拟地址,就可以通过函数返回的地址存取V C B D了。Ae m b e d d e dL i n u xs y s t e mb a s e do nP o w e r P CY E M e i,Z HAOJ i n g-w e i,CHU Y u a n-p i n g(I n s t i t u t eo fH i g hE n e r g yP h y s i c s,C A S,B e i j i n g1 0 0 0 4 9,C h i n a)A b s t r a c t I nt h i sa r t i c l ew ew i l l
33、i n t r o d u c eaE m b e d d e dL i n u xS y s t e mb a s e do nP o w e r P Ca sw e l la st h eb a s em e t h o do nh o wt oe s t a b l i s h t h e s y s t e m.T h eg o a l o f t h e s y s t e mi s t ob u i l da t e s t s y s t e mo fVME b u sd e v i c e.I t a l s oc a nb eu s e d t os e t u pt h e
34、s m a l l d a t aa c q u i s i t i o na n dc o n t r o l s y s t e m.T w o t y p e so f c o m p i l e ra r ep r o v i d e db y t h ed e v e l o p e r s y s t e ma c c o r d i n g t o t h e f e a t u r e s o f t h e s y s t e ma n d t h eP o w e r P C.A t t h e t o po f t h ea r t i c l e s o m e t y
35、 p i c a l e m b e d d e dO p e r a t i o ns y s t e mw i l l b e i n t r o d u c e da n d t h e f e a t u r e s o f d i f f e r e n t s y s-t e m w i l l b ep r o v i d e d.A n dt h e nt h em e t h o do nh o wt ob u i l dae m b e d d e dL i n u xs y s t e ma sw e l l a s t h ek e yt e c h n i q u ew i l l b ed i s c u s s e d i nd e t a i l.F i n a l l yas u c c e s s f u l r e a d-w r i t ee x a m p l ew i l lb eg i v e nb a s e do nt h et e s t s y s t e m.K e yw o r d s:B E S I I ID AQ;VME;P o w e r P C;L i n u x;e m b e d d e dO S816