基于嵌入式Linux+26系统的驱动设计.pdf
西安电子科技大学硕士学位论文基于嵌入式Linux 2.6系统的驱动设计姓名:刘晓剑申请学位级别:硕士专业:计算机应用技术指导教师:裘雪红20080101摘要摘要信息领域步入到以3 2 位嵌入式微处理器和嵌入式操作系统为典型特征的嵌入式系统时代。嵌入式操作系统是嵌入式系统设计的核心,是嵌入式系统设计的关键因素。当前的嵌入式操作系统,正经历一个从通用嵌入式操作系统到特定应用嵌入式操作系统发展的时期。嵌入式L i n u x 由于其代码开放及优秀的网络性能,已经成为嵌入式操作系统的研究热点。L i n u x2 6 内核建立了一个统一的设备模型,一定程度降低了内核结构的复杂性,方便管理。支持了诸如电源管理、热拔插等新特性,并通过L i n u x2 6 设备驱动模型,内核可以获得系统的整体信息。论文首先分析了嵌入式系统和嵌入式操作系统的发展,并针对具体嵌入式应用平台,给出了嵌入式系统的方案选择,并对嵌入式L i n u x 系统的优势以及面对的挑战做了简要介绍。并通过分析内核中新的设备模型,以及嵌入式系统的平台总线的实现,设计了基于X S c a l e 的A R M 内核及驱动程序。最后针对新内核的又一新特色一A I S A 体系结构,实现了开发板的A I _ S A 驱动。关键词:嵌入式操作系统、L i n u x2 6、嵌入式L i n u x 设备模型、A L S AA b s t r a c tA b s t r a c tW i t ht h er a p i da d v a n c e si nt h ei n f o r m a t i o nt e c h n o l o g y,t h ee m b e d d e ds y s t e m sa r en o wb e i n gw i d e l ye m p l o y e di nm a n ya p p l i c a t i o n s,s u c ha st h ei n f o r m a t i o na p p l i a n c e,n e t w o r kd e v i c e,i n d u s t r i a lc o n t r o l,i n t e l l i g e n tt r a n s p o r t a t i o ns y s t e m s E m b e d d e ds o f t w a r ei st h ec o r eo fd e s i g n i n gt h ee m b e d d e ds y s t e m,w h i l ee m b e d d e do p e r a t i n gs y s t e mp l a y sa ni m p o r t a n tr o l ei nt h ee m b e d d e ds o f t w a r e T h ec u r r e n te m b e d d e do p e r a t i n gs y s t e mi sn O Ws t e p p i n gi n t oa l le r af r o mg e n e r a le m b e d d e do p e r a t i n gs y s t e mt oa p p l i c a t i o ns p e c i f i ce m b e d d e do p e r a t i n gs y s t e m T h eE m b e d d e dL i n u xS y s t e mh a sb e c o m ear e s e a r c hh o t s p o t,b e c a u s eo fi t so p e ns o u r c ea n de x c e l l e n tn e t w o r kp e r f o r m a n c e F i r s t l y,t h ep a p e rs u m m a r i z e st h ec h a r a c t e ra n dd e v e l o p m e n to ft h ee m b e d d e ds y s t e ma n dt h ee m b e d d e do p e r a t i n gs y s t e m,a n dg i v e st h eo p i n i o na b o u tt h ec h o i c eo fA p p l i c a t i o n s p e c i f i ce m b e d d e dp l a t f o r m s,b o t ht h eh a r d w a r ea n dt h es o f t w a r e S e c o n d l y,t h ep a p e re x a m i n e sak o b j e c th i e r a r c h y,a n da n a l y s e st h er e a l i z a t i o no ft h ep l a t f o r mb u so nE m b e d d e dL i n u xS y s t e m T h i r d l yt e l l st h ef o c u sa n dd i f f i c u l t i e so ft h ee n t i r ee m b e d d e ds y s t e ms o f t w a r ed e s i g n F i n a l l yi n t r o d u c e st h er e a l i z a t i o no fA L S Ad r i v e rb a s e do nt h eI n t e lX S c a l ea r c h i t e c t u r e K e y w o r d:E m b e d d e do p e r a t i n gs y s t e mL i n u x2 6t h ed e v i c em o d e lA L S A创新性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名:j 4 五L日期皿厶玉三一关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。(保密的论文在解密后遵守此规定)本人签名:立!芝金凸导师签名:菇啦日期垒2:;2日期坌墨!墨:三第一章绪论第一章绪论1 1 引言当今嵌入式世界已经进入大融合的时代,其特点是:通信、计算、消费产品融合趋向没有独立的3 C;只有融合的3 t 2 即信息产品n。数字模拟融合,微机电融合,电路板硅片融合,硬软件设计融合一趋向S O C 和S i P。嵌入式整机的开发工作也从传统的硬件为主变为软件为主。激烈的市场竞争和技术进步呼唤着产品开发平台,特别是S O C 开发平台的出现。2 0 0 6 年我国嵌入式系统应用产品经济总量估计超过1 0 0 0 0 亿元,其中嵌入式处理器芯片约为1 2 0 亿元。2 0 0 6 我国嵌入式微处理器销售总量大约为1 3 亿片。据W S T S 预测,2 0 0 8 年全球M C U 市场将达1 2 5 亿美元,而D S P 市场将达8 4亿美元。其中发展较快的是嵌入式D S P 市场,它已无处不在,市场规模已接近通用D S P 的两倍,且增长速度强劲。通用D S P 的主要市场在于通信应用,而嵌入式D S P 应用则更广泛,包括D V D 播放器、机顶盒、音视频接收设备、M P 3 播放器、数码相机和汽车电子等。1 2 嵌入式系统的发展随着嵌入式技术的发展,嵌入式系统将广泛地应用于人类生活的方方面面。如:基于嵌入式I N T E R N E T 网络的地球电子皮肤,可以嵌入到牙齿上的手机都在研发之中。著名嵌入式系统专家沈绪榜院士认为计算机是认识世界的工具,而嵌入式系统则是改造世界的产物。现代社会正在步入一个信息化的时代,丰富多彩的数字化产品已经开始继P C机之后成为信息处理的发展趋势,并且正在逐步形成一个充满商机的巨大产业。计算机也迈入了其另一个充满生机的阶段后P C 时代。后P C 时代的到来,使得人们开始越来越多地接触到嵌入式系统的概念。嵌入式产品如手机、P D A 等手持的嵌入式设备,游戏机,V C D 机、机项盒等消费电子也属于嵌入式产品,传真机、车载G P S 系统、数控机床、网络冰箱等同样都采用嵌入式系统。形式多样的数字化设备正努力把I n t e r n e t 连接到人们生活各个角落1 1 l。嵌入式系统的出现,最早被认为是在1 9 6 0 年至1 9 7 0 年间,在通信领域,软件2基于嵌入式L i n u x 2 6 系统的驱动设计的突破S P C(S t o r e dP r o g r a mC o n t r 0 1),这时的计算机是应用订做的。由一些专用指令的引擎以及与之集成在一起的I 0 设备,软件由存储在内存的程序和路由信息所组成。S P C 软件的突破,成为通信领域的里程碑。这是最早的嵌入式系统。2 0 世纪7 0 年代后,8 位,1 6 位微处理器女n z 8 0,I n t e l 8 0 8 0 8 0 8 5,M o t o r o l a 6 8 0 0等芯片的出现,使嵌入式系统的发展进入到了另一个阶段。以微处理器为核心的系统,广泛地应用在仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的使用使得嵌入式系统进入了一个广阔的领域。2 0 世纪8 0 年代后,微电子工艺水平的提高,集成电路制造商,把嵌入式系统应用到的微处理器、R A M、R O M 等各种部件,集成到一个芯片中,这就是微嵌入式操作系统A S O S 的研究。控制器,单片机的发展就是从此开始。单片机的发展成为嵌入式系统发展的重要里程碑。随后,D S P 的发展成为嵌入式系统的重要一支力量,成为消费电子、视频应用、智能控制、通信电子等领域迅速成长的技术。2 0 世纪9 0 年代后,随着半导体工艺技术和微电子技术的发展,全球己有3 0 多种系列近千种微处理器(|IP)、微控制器(|lC)与数字处理器(D S P),例女1 1 I n t e lP e n t i u m、S t r o n gA r m 系列、A M DX 8 6 系列、M o t o r o l aP o w e r P C 系列、,n 嵌入式D S P的T M S 3 2 0 系列等。单片机已从M C S 5 1 到8 0 C 5 1 M C U,现己进入片上系统(s o c)阶段。当今世界计算机应用的普及、互联网技术的实用以及微电子技术的突破,推动着信息技术、商业活动、科学实验、通信技术等各个领域自动化和信息化进程。嵌入式系统在当今社会各个领域的信息化发展中,起了重要的作用。嵌入式系统技术将成为今后信息技术发展的热点。1 3 嵌入式系统的概念嵌入式系统是一个比较笼统的概念,一个简单的便携式M P 3 是一个嵌入式系统,一个复杂的微型工业控制计算机也是一个嵌入式系统,二者除了都嵌入有微处理器外,几乎完全不同。究竟什么是嵌入式系统呢?笼统地说,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫做嵌入式系统。具体地说嵌入式系统是以实现特定的功能和用途为目的,通过设计专门的硬件体系和编写专用的软件,并且将二者紧密的、有机的结合以实现特定的功能的系统。现在公认的嵌入式系统的概念定义:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。第一章绪论31 4 嵌入式系统的结构和特点1 4 1嵌入式系统的体系结构嵌入式系统是专用计算机应用系统,它具有一般计算机组成的共性,也是由硬件和软件部分组成。图1 1 描述了嵌入式系统的硬软件各部分的组成结构【2 1。嵌入式系统的硬件是嵌入式系统环境运行的基础,它提供了嵌入式系统软件运行的物理平台和通信接口;嵌入式操作系统和嵌入式应用软件则是整个系统控制的控制核心,控制整个系统的运行,提供人机交互的信息等。应用程序应用层文件系统应用程序接口Es蠢0-习麓-j 一。-_ 0?j 畚j。?。|y:?o _;+,。、n,一j:t,*,i,?“妒一一 研,ot,。,V:_ I。i?7,强、驱动层设备驱动程序、H A L、B S PS O C s O P C电源G P l O处理器A R M 核C A N管卜输理M M U C a c h el以太:入:I I Si一i-_;|一一-F I A S HU S B:D s P 脬点运算协处iD M A肛J、输-、r 一出接E E R O M内一:L C;F P G A;C P L D:T i m e r R T;口存:!1 j-:;S D R A MA D C D A CV 蜮t 融D KS R A M一彳者门狗及上复位电路人机交互接口L C D 艇I I 摸屏、键盘、鼠标等图1 1 典型的嵌入式系统组成1 4 2嵌入式系统的特点1)专用性强。嵌入式系统是以应用为中心的,软硬件的设计都围绕着这个中4基于嵌入式L i n u x 2 6 系统的驱动设计心展开,这是与通用的计算机的根本区别。2)系统精简。由于嵌入式系统具有很强的专用性和针对性,在软硬件的设计上尽可能地精简,做到利用尽可能小的资源来实现暨定的功能,这样能够达到减小系统体积,降低系统成本的目的。3)系统内核小。许多嵌入式系统带有操作系统,但是由于嵌入式系统的资源有限,因此嵌入式系统所应用的操作系统的内核要尽可能地小,只要能满足系统的功能需求即可。4)实时性强。实时性是嵌入式系统的一个重要特点。实时性指的是在规定的是时间里完成规定的任务,分为硬件实时性和软件实时性,系统往往对硬件的实时性要求更高,如果硬件在规定的时间内没有完成规定的动作往往会给系统带来灾难性的后果,而软件如果在规定的时间内没有完成规定的动作,往往会通过插入等待时间的方法加以解决,不会有太严重的后果。5)稳定性。由于嵌入式系统结构精简,专用性强,因此系统的稳定性更好。1 5 嵌入式系统的方案选择1 5 1处理器的选择目前常见的嵌入式处理器基本都是R I S C 体系,呦O A R M、M I P S、S H、S P A R C等。S O C 技术的发展,让越来越多的外设都集成到芯片内部,从而简化系统外围硬件的设计,提高系统的可靠性,降低系统成本。在嵌入式系统的开发过程中,选择嵌入式处理器和开发平台的原则是:可靠性高,集成度高。芯片内集成尽量多的满足用户需求的接口或控制器,尽量少地扩展片外资源。产品的总体成本底,选用更便宜、使用量大、生命周期长的处理器和外设。开发成本底、周期短、选用操作系统和驱动程序等软件支持完善的处理器,可以有效地减少开发中存在的风险和不确定因素。近几年,以A R M 为核心的处理器平台,因为其使用广泛、软件支持好,获得大量使用。本文中采用的处理器为I n t e lX S c a l eP X A 2 5 5。1 5 2操作系统的选择对于嵌入式操作系统的选择,在嵌入式系统设计中也至关重要,选择一个合适的操作系统要从以下几个方面考虑:系统的实时性问题。首先要评价系统的应用环境对实时性有无要求。第一章绪论5系统对所选处理器或硬件平台是否有足够的支持。一个成熟的操作系统,若其体系结构完善则可很容易地移植到各种体系结构的处理器或平台上。系统的硬件驱动是否支持完善。应用程序是否容易开发和调试。基于嵌入式系统平台开发的主要工作就是移植驱动程序和编写应用程序,因此如果系统提供大量的有参考价值的应用程序和中间件(比如G U I、网络服务器等),将会减少开发量;另外,一个完善的调试环境也会加速开发进度。系统中针对特定体系结构处理器的编译器是否完善。这一点是选择操作系统的过程中很重要但容易被忽略的问题。由于L i n u x 源码开放,软件和驱动程序支持丰富,因此嵌入式操作系统选用L i n u x2 6。1 6 论文结构的安排第一章绪论介绍了嵌入式系统的发展,及嵌入式系统的结构及特点,并分析了在构建嵌入式系统时,C P U 和操作系统的选择原则。第二章嵌入式L i n u x 系统概述从体系结构方面分别分析了单内核、微内核、可定制内核的特点,并指出嵌入式L i n u x 的特点和面临的挑战。第三章L i n u x2 6 设备驱动模型L i n u x 从2 6 内核开始,为了实现一个统一的设备模型,引入了新的驱动模型,第三章详细分析并介绍了新驱动模型的实现原理,并介绍了在新模型中,如何加载自己的设备及驱动程序。同时了解了新设备模型后,会更容易将2 6 以前的驱动移植到2 6 系统中。第四章嵌入式软件系统设计本章介绍了整个嵌入式软件平台系统的设计,包括b o o tl o a d e r、内核的b o a r dp o r t i n g。并通过分析具体的嵌入式应用平台,提出了根文件系统和普通文件系统的选择机制。L i n u x2 6内核中,引入了新的A L S A 驱动体系结构,完全模块化的驱动程序构架和对称多处理(S M P)的支持使声卡驱动功能更加丰富,具有更好的灵活性,文中介绍了亿道的P X A 2 5 5 上A L S A 驱动的实现。第五章结束语总结了整篇论文,并给出了下一步工作的展望。第二章嵌入式L i n u x 系统概述7第二章嵌入式L i n u x 系统概述2 I 嵌入式操作系统发展过程伴随着嵌入式硬件的发展,嵌入式操作系统的发展可以说经历了三个阶段。(1)无操作系统的嵌入算法阶段这一阶段的嵌入式系统是以可编程控制器的形式、以单芯片为核心的系统,同时具有与一些监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有明显的被称为操作系统的支持,而是通过汇编语言编程对系统进行直接控制,主要特点是系统结构和功能都相对单一,有用户接口。运行结束后清除内存。这一阶段系统的针对性强,但无操作系统支持,几乎没(2)简单监控式的实时操作系统阶段这一阶段的嵌入式系统主要以嵌入式处理器为基础、以简单监控式操作系统为核心。系统的特点是处理器种类繁多,通用性比较弱:系统开销小,效率高。系统一般配备系统仿真器,具有一定的兼容性和扩展性;操作系统的用户界面不够友好,其主要用来控制系统负载以及监控应用程序运行。(3)通用的嵌入式实时操作系统阶段以通用型嵌入式实时操作系统(R T O S)为标志的嵌入式系统。如V x W o r k s,L i n u x,W i n d o w sC E 就是这一阶段的典型代表。这一阶段系统的特点是能运行在各种不同类型强大的微处理器上;具有强大的通用型操作系统的功能,如具备了文件和目录管理、多任务、设备支持、网络支持、图形窗口以及用户界面等功能;具有大量的丰富的应用程序接口(A P I)和嵌入式应用软件。2 2 嵌入式操作系统的体系结构嵌入式操作系统的体系结构主要有以下几种。2 2 1 单一内核(M o n o l i t h i cK e r n e l)体早期的U n i x 操作系统的单一内核体系结构,被认为是现代操作系统的起源。单一内核体系机构内核层高度封装抽象整个硬件层,用户层依托内核层提供的接口实现功能。8基于嵌入式L i n u x 2 6 系统的驱动设计单一内核体在内核模式拥有同一地址,拥有所有的进程。用户模式的程序调用系统服务,C P U 会自陷或者以其他方式,切换到内核模态。内核态执行完系统服务,C P U 返回到用户模式。操作系统继续响应用户模态的服务请求。用户模式地址空间和内核模式地址空间,相互独立。图2 1 单一内核体系结构图单一内核体执行应用层服务速度快,减少了层与层之间通信的负担,进程切换少,负载小。只有系统调用,才能深入内核模式,有利于内核的保护。单一内核体为满足用户的服务请求,内核必须提供提供足够多的系统服务。单一内核体的用户层受制于内核层提供的高度封装的接口,灵活性不够。例如,在U n i x 操作系统中,创建线程的方法只能使用f b r k 系统调用来创建。f o r k 函数使用的同时,不需要的内存地址空间随之产生。在运行一些并行的线程时,负载极大。因此,在采用多线程技术时,需要第三方的线程库。单一内核体结构内部模块关系密切,结构难于维护。典型的单一内核体嵌入式操作系统L i n u x 操作系统1 3 2 1。2 2 2 微内核(M i c r o k e r n e l)体针对单一内核体,出现的问题,产生了微内核体。微内核集中了维持操作系统运行的基本功能。辅助功能由用户模式的服务器实现,微内核协调用户层的服务器。微内核的体系结构并非完全相同,图2 2 说明了微内核的基本结构。第二章嵌入式L i n u x 系统概述9微内核图2 2 微内核结构图微内核主要有以下的特点:1)在内核中,第一次全面地引入并完整地实现了内核对象。2)微内核的操作系统内核中,引入了多处理机制和管理机制。3)操作系统的各种功能,都能以服务器方式实现向用户提供服务,用户对服务器的请求,是以消息传递的方式传递给服务器。4)内核精巧,传统操作系统内核中的许多部分,被移出内核,服务器方式实现。微内核体系结构下,微内核只提供了有限的系统调用。传统的操作系统服务必须通过操作系统服务器来实现。服务器和微内核逻辑上完全独立,服务器和微内核之间是客户和服务器的关系。操作系统服务器可以独立运行在用户地址空间,易于操作系统的功能扩展。实时系统的实现多为微内核体系结构,这使得核心小巧而可靠,易于R O M 固化,并可模块化扩展。微内核结构系统中,O S 服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。微内核在解决了单一内核体的问题同时,不可避免地产生了其他问题。应用层服务器的引入,并没有显著地提高灵活性。这是因为,应用层服务器并不能直接控制硬件。微内核进程间通信(口C)和上下文切换的开销大大增加。相对于大型集成化内核系统来说,它必须使用更多的系统调用来完成相同的任务。进程间通信(口C)和系统调用一直是微内核的瓶颈。典型的微内核体系结构的嵌入式操作系统的代表Q N X l 3 3】操作系统。2 2 3 可订制内核(C u s t o m i z a b l eK e r n e l s)体微内核在性能方面的缺陷导致了另外一种技术的出现:可定制内核。可定制内核【3 5】的主要思想是根据用户程序的要求及特点,动态构造满足功能以及性能要求的最小内核。S P I N 3 6 1 是这类操作系统的典型代表。S P I N 由一系列的核心服务组成,如内存管理、调度等。除此之外S P I N 还提供了一组扩展服务,通过使用这些扩展服务开发人员能够对操作系统内核的行为进行定制。S P I N 允许开发人员编写1 0基于嵌入式L i n u x 2 6 系统的驱动设计自己的扩展模块并将其加入到内核之中,为了保证安全,这些扩展必须使用M o d u l a 3 阳语言编写。M o d u l a 3 语言支持模块化以及强类型系统,通过M o d u l a 3提供的语言机制阻止用户编写的扩展在未得到授权的情况下直接访问内存或者是运行特权指令。动态装入的扩展模块运行在内核模式,可以截获到系统调用或者异常等系列事件。所有事件都在M o d u l a。3 的界面中进行了声明并通过函数调用的形式进行通知。可定制内核技术面临的主要困难分为两个方面:其一也是最主要的是如何保证内核的安全以防止出错代码的破坏。目前的解决方法有三种:(1)通过可信的编译器进行数字签名;(2)在内核中通过解释器执行扩展而不是将扩展编译为机器语言;(3)当扩展加入到内核的时候对其代码进行静态分析。所有这些技术都增加开销以至于失去了实际应用的可能。其二是如何根据用户需要真正实现最小化的内核,为了支持用户扩展的运行,S P I N 在内核中保留了大量的为该扩展所依赖的其他组成部分,尚未达到初始的设计目标。2 3 嵌入式L i n u x 的特点L i n u x 从1 9 9 1 年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行在X 8 6、A l p h a、S p a r e、M I P S、P P C、M o t o r o l a、N E C、A R M 等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式L i n u x 的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式系统是以应用为中心,以计算机为基础,软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统。实时性是嵌入式系统的基本要求,其次,还要求代码小,速度快,可靠性高。嵌入式L i n u x(E m b e d d e dL i n u x)是指对L i n u x 经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用L i n u x 操作系统。嵌入式L i n u x 的开发和研究已经成为目前操作系统领域的个热点。与其它嵌入式操作系统相比(详见图2 3),L i n u x 的特点如下。第二章嵌入式L i n u x 系统概述专用嵌入式实时操作系统嵌入式L i n u x 操作系统版权费每生产一件产品需交纳一份版免费权费购买费用数十刀兀(R M B)免费技术支持由开发商独家提供有限的技术全世界的自由软件开发者支持提供支持网络特性另加数十万元(R M B)购买免费且性能优异软件移值难(因为是封闭系统)易,代码开放(有许多应用软件支持)应用产品开发周期长,因为可参考的代码有限短,新产品上市迅速,因为有许多公开的代码可以参考和移植实时性能好须改进,可用R T _ L i n u x等模块弥补稳定性较好较好,但在高性能系统中须改进图2 3 专用嵌入式实时操作系统与嵌入式L i n u x 的比较第一、L i n u x 系统是层次结构且内核完全开放。L i n u x 是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。第二、强大的网络支持功能。L i n u x 诞生于因特网时代并具有U n i x 的特性,保证了它支持所有标准的因特网协议,并且可以利用L i n u x 的网络协议栈将其开发成为嵌入式的T C P I P 网络协议栈。此外,I,i n u x 还支持e x t 2、f a t、j f f s、r o m f s 等文件系统,为开发嵌入式系统应用打下了很好的基础。第三、L i n u x 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。L i n u x 也符合I E E EP O S I X标准,使应用程序具有较好的可移植性。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(I C E)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式L i n u x,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式L i n u x 为开发者提供了一套完整的工具链(t o o lc h a i n)。它利用G N U 的g e e 做编译器,用g d b、k g d b、x g d b 做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。第四、L i n u x 具有广泛的硬件支持特性。无论是R I S C 还是C I S C、3 2 位还是1 2基于嵌入式L i n u x 2 6 系统的驱动设计6 4 位等各种处理器,L i n u x 都能运行。L i n u x 通常使用的微处理器是I n t e lX 8 6 芯片家族,但它同样能运行于M o t o r o l a 公司的6 8 K 系列C P U 和I B M、A p p l e、M o t o r o l a公司的P o w e r P CC P U 以及I n t e l 公司的S t r o n gA R MC P U 等处理器。L i n u x 支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(M M U)的处理器上运行。这意味着嵌入式L i n u x 将具有更广泛的应用前景。2 4 嵌入式L i n u x 面临的挑战目前,对嵌入式L i n u x 系统的开发正在蓬勃兴起。除了一些传统的L i n u x 公司,像R e dH a t、V AL i n u x 等,正在从事嵌入式L i n u x 的研究之外,一批新公司(如L i n e o、T i m e S y s 等)和一些传统的大公司(如I B M、S G I、M o t o r o l a、I n t e l 等)以及一些开发专用嵌入式操作系统的公司(如L y n x)也都在进行嵌入式L i n u x 的研究和开发。但与其他嵌入式操作系统比较而言,嵌入式L i n u x 系统还需要从以下几个方面做出努力。一、L i n u x 的实时性扩充实时性是嵌入式操作系统的基本要求。由于L i n u x 还不是一个真正的实时操作系统,所以在开发嵌入式L i n u x 的过程中,首要问题是扩展L i n u x 的实时性能。对L i n u x 实时性的扩展可以从两方面进行:向外扩展和向上扩展。向外扩展即从范围上扩展,让实时系统支持的范围更广,支持的设备更多。目前的开发所面向的设备仅限于较简单的有实时要求的串并口数据采集、浮点数据计算等,而像实时网络这样实时系统的高级应用还需进一步发展。向上扩展是扩充L i n u x 内核,从功能上扩充L i n u x 的实时处理和控制系统。如嵌入式系统R T-L i n u x,它的基本原理是将L i n u x 本身的任务以及L i n u x 内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务,即在实时任务存在的情况下运行实时任务,否则就运行L i n u x 本身的任务。实时任务不同于L i n u x 普通进程。它是以L i n u x 的可装载的内核模块(L o a d a b l eK e r n e lM o d u l e,L K M)的形式存在的,需要运行实时任务的时候,将这个实时任务的内核模块插入到内核中去,实时任务和L i n u x 一般进程之间的通信通过共享内存或者F I F O 通道来实现。二、改变L i n u x 内核的体系结构L i n u x 的内核体系采用的是M o n o l i t h i c。在这种体系结构中,内核的所有部分都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高系统的响应速度和C P U 的利用率,且实时性好;但在系统比较大时体积也比较大,与嵌入式系统容量小、资源有限的特点不符。而另外一种内核体系结构M i c r oK e r n e l,在内核中只包括了一些基第二章嵌入式L i n u x 系统概述1 3本的内核功能,如创建和删除任务、任务调度、内存管理和中断处理等部分,而文件系统、网络协议栈等部分都是在用户内存空间运行。这种结构虽然执行效率不如M o n o l i t h i c 内核,但大大减小了内核的体积,同时也方便了整个系统的升级、维护和移植,更能满足嵌入式系统的特点需要。为此,要使嵌入式L i n u x 的应用更加广泛,若将L i n u x 目前的M o n o l i t h i c 内核结构中的部分结构改造成M i c r oK e m e l体系结构,可使得到的L i n u x 既具有很好的实时性,又能满足嵌入式系统体积小的要求。另外,L i n u x 是一个需要占用存储器的操作系统。虽然这可以通过减少一些不必要的功能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多L i n u x的应用程序都要用到虚拟内存,这在许多嵌入式系统中是没有价值的。所以,并不是一个没有磁盘的L i n u x 嵌入式系统就可以运行任何L i n u x 应用程序。三、完善L i n u x 的集成开发环境提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整的嵌入式系统的集成开发环境一般需要提供的工具是:编译连接器、内核调黼踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在L i n u x 系统中,具有功能强大的g c c 编译器工具链,使用了基于G N U 的调试器g d b 的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核;在使用远程开发时还可以使用交叉平台的方式,如在W i n d o w s 平台下的调试跟踪器对L i n u x 的宿主系统做调试。但是,L i n u x在基于图形界面的特定系统定制平台的研究上,与W i n d O W S 操作系统相比还存在差距。因此,要使嵌入式L i n u x 在嵌入式操作系统领域中的优势更加明显,整体集成开发环境还有待提高和完善。第三章L i n u x2 6 设备驱动模型3 1 1 设备模型概述第三章L i n u x2 6 设备驱动模型3 1L i n u x2 6 设备模型设备模型是内核中的基础设施,用于检测和决定系统中所有可选设备的资源使用。老版本的L i n u x(2 2 或更早)仅使用一种直接的方法操作设备。系统为不同种类的硬件总线提供驱动程序,各式各样的设备驱动程序知道如何探测它们所支持的设备总线以寻找对应的硬件设备。这种系统非常分散,各种各样的总线提供许多互不兼容的A P I,用于处理各种不同的操作。L i n u x2 4 通过使用一组通用接口将P C I,P C 卡以及I S A P n P 整合到一个单一的设备结构中,完成了构建统一设备模型的第一步。L i n u x2 6 更进一步地推进了这方面的努力,力求在整个系统的范围内,内核以一种新的统一的视角看待它所依赖的硬件。3 1 2L i n u x2 6 设备模型在L i n u x2 6 以前的内核中没有独立的数据结构用来让内核获得系统的整体信息,尽管缺乏这些信息,内核仍能工作。然而,随着拓扑结构越来越复杂,以及要支持诸如电源管理、热拔插等新特性的需求,内核的结构越来越复杂和难以管理。L i n u x2 6 为内核建立了一个统一的设备模型,提供对系统结构的一般性抽象描述。新设备模型的核心是一个所有底层设备类型都需使用的新的面向对象的接口。这个内核设备对象结构(称为”k o b j e c t”)包含用于引用计数和操作子设备的所有接口。底层设备(例如系统总线)利用这一公共接口层,向内核以及用户空间提供统一的系统视图。现在,所有这些都被放在了中心