(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf_第1页
(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf_第2页
(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf_第3页
(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf_第4页
(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机应用技术专业论文)基于arm的嵌入式linux平台的研究与实现(1).pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 作为世界上最优秀的操作系统之一,l i n u x 不仅在服务器领域有着不可撼动的 地位,而且正在嵌入式领域发挥着越来越重要的作用。有专家预测,l i l l u x 将是未 来最主要的嵌入式操作系统之一,将广泛应用在各种消费电子和通信设备中。因 此,产生并逐渐形成了嵌入式l i n u x 这项技术。然而,面对嵌入式系统多样化的硬 件平台以及多样化的应用,如何更快更好地建立基于l i n u x 的软件平台成为一个必 须解决的问题。 本文正是针对这个问题,以“n u ) 【相关的基础软件为主要研究对象,在深入分 析引导加载程序、“n u x 与处理器相关的代码、文件系统以及设备驱动的基础上, 对基于a r m 的“n u x 软件平台进行了创新性和探索性的研究。主要内容为:在理 解删体系结构的基础上,通过分析u b o o t 源码,详细研究a r m 处理器在上电 后的启动过程和加载引导“n u x 的过程;分析并总结l i n u x 与处理器相关的接口, 以中断控制器、定时器以及串口为主,提出了移植“n u x 到新型处理器的思路和方 法;研究“n u x 文件系统的内容、制作和使用;分析l i n u x 的设备驱动体系结构以 及设备驱动的调用方式;在学习和研究的基础之上,针对s t m p 3 6 x x 这款处理器, 设计并实现引导加载程序,完成l i n u x 的移植、配置、编译,解决l i n u x 启动过程 遇到的问题,然后通过制作根文件系统和实现n a n df l a s h 、l c d 的驱动,完整地 搭建起以“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 系统具有较高的参考和指导价值。 此外,成功移植的s t m p 3 6 x x 已经初具规模,可以通过二次开发以形成完善的嵌 入式产品。 关键词:嵌入式l i n u x ,移植准则,根文件系统,引导加载程序,驱动 a b s t r a c t a b s t r a c t a so n eo ft h em o s te x c e l l e mo p 耐i n gs y s t e m s ,l i n u xn o t0 1 1 l yh a sau n b u d g e a b l e p o s i t i o ni ns e e r s ,b u ta l s op l a y sa m o r ea 1 1 dm o r ei m p o r t a n tr o l ei ne m b e d d e df i e l d n i sp r e d i c t e dt h a tl i m l xw i l lb eo n eo ft l l em a i ne 蜘【b e d d e do p e r a t i n gs y s t e l n sa n dw i l lb e u s e dw i d e l yi nc o n s u m ee l e c 的m c sa n dc o 舢 i l u l l i c a t i o nd 嘶c e s s om et e c h n o l o g yo f e r n b e d d e dl i n u xh a sg e n e r a t e da 1 1 dd e v e l o p p e d h o w e v i ti sap r o b l e mm a th o wt o s e t u pa s 0 f h a r cp l a t f o m l b a s e do n “n u xq u i c h y 锄dc o n v e i l i e i l t l yi i lf a c eo fd i v e r s i t y o f h 砌w a r ea 1 1 da p p l i c a t i o n s i no r d e rt os o l v et h i sp r o b l e m ,m i sp a p e rh a u sad e 印a n dc r e a t i v er e s e a r c hi nl i n u x s o 胁a r ep l a t f 0 肌b a s e do na r m n em a i l l t a s k si n c l u d e :o nm eb a s i so fu n d e r s t a n d i n g t h ea r c h i t e c 姗f eo fa i 泓,e x p l o r e d 也es t a r tp r o c e s so fp r o c e s s o ra n dh o wt ol o a da n d b o o tl i n u xv i aa n a l y z i n gt h es o u r c ec o d eo fu b o o t ;s u m m a r i z e das e to fi n t e r f a c e s w 1 1 i c ha r er e l e v 趾tw i t hp r o c e s s o ra n dp mf o n a r dm es t a n d a r do fp o r t i n gl i n u xt 0a n e wp r o c e s s o r ;e x p l o r e dt h ec o n t e i l t ,c r e a t i o na n du s a g eo ff i l es y s t e m ;a 1 1 a l y z e dm e a r c l l i t e c t u r ea n dm er u nf 瓠h i o no fd e v i c ed v e r ;a c c o r d i n gt ot 1 1 ea b o v er e s e a r c h , d e s i 印e d a n di m p l e m e n t e dab 0 0 n o a d e rf o rs t m p 3 6 ) 【) 【,f i m s h e dm ep o r t i n g , c o n f i g u r a t i o n ,c o m p i l e a i l d d e b u go fl i n u xk e l l r e l , m a d ear o o tf i l es y s t e r n , i m p l e m e n t e dd r i v e ro fn a n df l a s ha n dl c d ,a tl a s t s e tu pt h es o f 两a r ep l a t f o n n c o m p l e t e l ya 1 1 dv 嘶6 e di tw i t ha p p l i c a t i o l l s t h ep m c e s s o r su s e di ne l b e d d e ds y s t e m sa r es ov e r s a t i l em a td e v e l o p p e r se x p e c t as o l u t i o nf o rs e 戗i n gu pm es o f t w a r ep l a t f o n n t h em o s ti i l l p o r t a n ts u c c e s so ft l l i s r e s e a u r c hi sp 眦i n gf o n a r das t a i l d a r da c c o r d i n gt ow l l i c h “n u xc a nb e 印p l i e dt oan e w p r o c e s s o r s ot h i sp a p e rh a sa 缈a ts i 嘶f i c a t i o n 山m 也i sp a p e rc o v e r sal o to f k e y t e c h n o l o g yi nc i 】m e d e d “n u ) 【d e v e l o p p m e n t ,u s a g eo fr e l a t e dt o o l s 锄de x p 甜e i l c e t h e s ea r ev e r yv a l ua _ b l et ol e 锄a n dd e s i g na n 耐b e d d e dl i n u xs y s t a n b e s i d e s , s t m p 3 6 ) 。( i ss os u c c e s s m lm a ti tc a nb ei m p r o v e dt h r o u 曲d e v e l o p p i n g 印p l i c a t i o n st o b ea p e r l e c tp r o d u c t k e yw o r d s :锄b e d d e dl i 肌x ,p o n i n gp 血c i p l e ,r o o t 丘l es y s t e m ,b o o t l o a d d r i v e r 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 关于论文使用授权的说明 年月日 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:壹 雏 导师签名: 日期: 蘧皆 年月日 第一章引言 1 1 课题背景 第一章引言弟一早i 百 当今世界已经进入了后p c 时代。后p c 时代的绝大多数计算机是以非计算机 的形式出现的,例如作为随身物品出现的电话、遥控开关、电子戒指、电子手杖 等,再例如作为家庭网络组成部分的电视机、电冰箱、空调等。巨大的市场需求 造就了嵌入式技术的飞速发展。嵌入式系统主要包括硬件、嵌入式操作系统、各 种中间件以及应用软件。其中,嵌入式操作系统是核心。随着嵌入式系统功能的 不断增强和应用的推广,对嵌入式操作系统的要求也越来越高。 过去,“n u x 以性能稳定和功能强大的优势稳居服务器以及桌面操作系统领域 的龙头地位。如今,l i n u x 也深入到了嵌入式操作系统领域。尤其在中国,这里有 世界上最大的家用电子产品需求,中国的工业正在进行着数字化、智能化的改造, 用户对嵌入式l i n u x 系统的需求正在迅速扩大,其发展速度将是惊人的。根据美国 投资发展公司的统计,全球嵌入式“n u x 产品和服务的销售额将从2 0 0 0 年2 8 2 0 万美元增长到2 0 0 5 年的3 0 6 亿美元,这在一定程度上反映了嵌入式l i n u x 系统的 快速增长速度。在中国市场上,嵌入式l i n u x 系统的应用领域越来越广泛,其中最 主要的应用将包括四大领域:信息电器,如机顶盒、网络家电等;移动计算设备, 如手机、p d a 、掌上电脑;网络设备,如路由器、交换机、网络服务器、网络接 入盒等;工控仿真l 1 | 。 1 2 嵌入式l i n u x 的特点 为什么l i 肌x 会在嵌入式操作系统领域取得飞速发展呢? 因为嵌入式l i n u x 相 比其它商业嵌入式实时操作系统有以下特点。 l i n l l ) 【支持多种c p u 体系和常见处理器。嵌入式系统的一个最大的特点就是 硬件的多样性,“n u x 支持几乎所有的处理器体系,包括x 8 6 、a i 、p p c 和m i p s 。 对于基于a r m 和p p c 的处理器也有很好的支持,例如支持基于a r m 的e p 7 3 1 2 、 a t 9 1 、s 3 c 2 4 1 0 等。对于没有m m u 的4 4 b o 和4 5 1 0 也可以使用l i n u x 的另一版本 u c l i n u x 。l i n u x 支持各种主流硬件设备和最新硬件技术,这意味着嵌入式l i n u x 将 电子科技大学硕士学位论文 具有更广泛的应用前景。 l i n u ) 【开放源码。l i n u x 从一开始就因为开源的特性而得到全世界程序员的喜 爱,它之所以有今天的成就,也依赖于狂热的l i n u x 爱好者的卓越贡献。在内核代 码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便 地对内核进行改造,成本低却能开发出满足自己需要的嵌入式系统。相对于其它 昂贵的商业嵌入式操作系统,这一点具有强烈的吸引力。 良好的设备驱动体系并支持各种外设。l i i m x 将所有的外部设备看作文件来处 理,提供文件操作的接口,方便使用且易于扩展。“i 眦源码树中包括了几乎所有 的设备驱动,即使对于新的设备,仅仅需要按照标准实现接口函数并注册设备就 可以使用。 强大的网络支持功能。l i n u x 诞生于因特网时代并具有u m x 的特性,保证了 它支持所有标准因特网协议,支持i p v 6 ,并且可以利用l i n u x 的网络协议栈将其 开发成为嵌入式的t c p i p 网络协议栈。对于需要网络支持的应用来说,这一点非 常重要。 支持多种文件系统。l i n u x 除了支持e x t 2 、f a t l 6 、f a t 3 2 等常见文件系统,还 支持r o m f s 、j f f s 、胙f s 2 等嵌入式系统专用的文件系统,为开发嵌入式系统应 用打下了很好的基础。 支持多种g u i 。“n u x 本身包含一些功能强大的g u i ,但为了满足嵌入式g u i 的需要,又加入了一些专门针对嵌入式系统的g u i ,如q t 和m i l l i g u i ,前者适合 美观的手机界面,后者特别适合需要用户界面的工业控制系统,它们的特点是简 单、直观、可靠、占用资源小且反应快速。 l i n u x 具备一整套工具链的支持。基于“n u 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 c c 做编译器,用g d b 做调试 工具,能够很方便地实现从操作系统到应用软件各个级别的调试。 正是因为l i l l u x 支持广泛的硬件、具有稳定高效的操作系统内核、融合了各种 强大的中间件及完善的设备驱动和开发工具,所以嵌入式l i n u x 得以飞速发展。毫 无疑问,l i n u x 将成为未来嵌入式领域最重要的操作系统之一。 2 第一章引言 1 3 嵌入式l i n u x 发展方向 当前嵌入式l i i n l 】【系统可谓各具特色。嵌入式l i n u x 系统开发已经开辟了很大 的市场,出现了一批新型的公司参加这方面的竞争,他们利用自己掌握的嵌入式 l i r 腿的先进技术,吸引投资,开发出成型的产品,如l i n e o 、t i m e s y s 、f s m l a b s 等;也有一些传统的l i n u x 公司开辟了这方面的研究,如r e d h a t 、v al i n u x 等; 更值得重视的是,一些传统的大公司如i b m 、s g i 、m o t o r o l a 、i i l t d 等也进行了“n u x 的嵌入式方面的研究和开发;另外还有一些开发专有嵌入式操作系统的公司,如 b ,m 【公司从专有操作系统方向转型到嵌入式“n u x 系统,并且更名为咖u ) 【w o r k s 。 这些公司的产品主要分为三类。第一类是专门为l i n u ) 【的嵌入式方向而做的,如何 让“n u x 更小、更容易嵌入到功能、性能要求更高的硬件中去是他们的产品开发方 向,如m o n t d v i s t a 的h a r dh a tl i n u x 等;第二类是专门为l i n u ) 【的实时特性设计的 产品,将l i n u x 开发成实时系统尤其是硬实时系统,应用于一些关键的控制场合( 不 仅仅是信息电器) ,如f s i l l l a b s 公司开发出来的r t - l i n u x 产品已经用在工业控制的 很多方面,葡萄牙的c o i m b r a 大学已经利用r - t - “n u x 实现了化工生产控制厂里用 来控制反应和程序控制的系统;第三类的产品就是将实时性和嵌入式方案结合起 来的方案,很多公司都这么做,并且提供集成化的开发方案,如l i n e 0 、t i m e s v s 在盘盘莹 奇专宇。 综观当前嵌入式l i n u x 系统的产品和技术情况,要满足用户市场的需求还有很 长的一段路要走。基于l i n u x 的嵌入式技术走向成熟,还需要围绕下面三个方面做 进一步发展: 1 l i n u x 的实时性扩充 实时性是嵌入式操作系统的基本要求。由于“n u ) 【还不是一个真正的实时操作 系统,内核不支持事件优先级和抢占实时特性,所以在开发嵌入式l i n u ) 【的过程中, 首要问题是扩展l i n u x 的实时性能。对l i l l u x 实时性的扩展可以从两方面进行:向 外扩展和向上扩展。向外扩展即从范围上扩展,让实时系统支持的范围更广,支 持的设备更多。目前的开发所面向的设备仅限于较简单的有实时要求的串并口数 据采集、浮点数据计算等,而像实时网络这样实时系统的高级应用还需进一步发 展。向上扩展是扩充l i n u x 内核,从功能上扩充l i n u x 的实时处理和控制系统。如 嵌入式系统r t - “n u x ,它的基本原理是将l i n u x 本身的任务以及l i 肌x 内核本身作 为一个优先级最低的任务,而实时任务作为优先级最高的任务,即在实时任务存 在的情况下运行实时任务,否则就运行l i n u x 本身的任务。实时任务不同于l i r l u x 3 电子科技大学硕士学位论文 普通进程。它是以l i n u x 的可装载的内核模块( l o a d a b l ek e m e lm o d u l e ,l 订) 的形 式存在的,需要运行实时任务的时候,将这个实时任务的内核模块插入到内核中 去,实时任务和“n u x 一般进程之间的通信通过共享内存或者f i f o 通道来实现。 2 改变l i n u x 内核的体系结构 l i n u x 的内核体系采用的是m o n o l i n l i c 。在这种体系结构中,内核的所有部分 都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直 接沟通,有效地缩短任务之间的切换时间,提高系统的响应速度和c p u 的利用率, 且实时性好;但在系统比较大时体积也比较大,与嵌入式系统容量小、资源有限 的特点不符。而另外一种内核体系结构m i c r o k e n l e l ,在内核中只包括了一些基本 的内核功能,如创建和删除任务、任务调度、内存管理和中断处理等部分,而文 件系统、网络协议栈等部分都是在用户内存空间运行。这种结构虽然执行效率不 如m o n o l i l i c 内核,但大大减小了内核的体积,同时也方便了整个系统的升级、 维护和移植,更能满足嵌入式系统的特点需要。为此,要使嵌入式l i n u x 的应用更 加广泛,若将l i n u x 目前的m o n o l i t h j c 内核结构中的部分结构改造成m i c r o k e m e l 体系结构,可使得到的l i n u x 既具有很好的实时性,又能满足嵌入式系统体积小的 要求。 另外,l i n u x 是一个需要占用存储器的操作系统。虽然这可以通过减少一些不 必要的功能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多l i n u ) 【 的应用程序都要用到虚拟内存,这在许多嵌入式系统中是没有价值的。 3 完善的集成开发环境 提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整 的嵌入式系统的集成开发环境一般需要提供的工具是:编译连接器、内核调试跟 踪器和集成图形界面的开发平台,其中的集成图形界面开发平台包括编辑器、调 试器、软件仿真器和监视器等。在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 的宿主系统做调试。但是,“n u x 在基于图形界面的特定系统定制平台的研究上,与w i n d o w s 操作系统相比还存在 差距。因此,要使嵌入式“姗x 在嵌入式操作系统领域中的优势更加明显,整体集 成开发环境还有待提高和完善。 国外的开发如火如荼,国内的开发也不甘示弱。8 6 3 重点支持项目中就有使用 l i n u x 作为嵌入式系统开发的方向。在嵌入式系统中具有强大的生命力和利用价 4 第一章引言 值,很多公司和大学都不同程度的表现出对这个方面的兴趣。相信嵌入式l i n u x 的发展将带领我们进入嵌入式系统的新时代1 1 4 本文主要工作及章节安排 1 4 1 主要工作 本课题来源于北京科银京成技术有限公司的针对消费电子产品的一个解决方 案,该方案需要在s t m p 3 6 x x 处理器上运行l i n u 】( 操作系统,并为应用开发提供 支持。本人承担的主要任务是研究基于a r m 的基础软件平台,包括b o o t l o a d e r 、 l i n u x 与处理器相关的代码、文件系统和设备驱动程序,力求为嵌入式l i n 畎系统 提供一套建立软件平台的方法,研究的内容如图1 1 所示。对b o o t l o a d e r ,分析它 的工作原理以及如何加载引导操作系统,特别是为了引导l i n u x ,如何创建启动参 数,如何建立l i n u x 的运行环境;对内核,研究并归纳出l i n u x 与处理器相关的一 套接口,为接口定义严格的输入输出条件和功能,这套接口称之为“移植层 ;对 文件系统,研究文件系统的内容、制作和使用;对设备驱动,分析设备驱动的体 系结构和调用方式,研究如何添加一个设备的驱动程序。最后,在以上研究的基 础之上,通过将l i n l l x 移植到s t m p 3 6 x x 这种新型处理器进行了实践和验证,具 体来说主要包括以下4 个方面: 1 ) 分析课题采用的硬件平台,在理解u b o o t 实现的基础之上,根据实际条件 设计并实现一种可以引导l i n w 【的b o o t l o a d e r 一一k e m e lp r e ,解决了l i n u x 下载和更新的问题; 2 ) 根据“移植层”接口定义,实现特定于s t m p 3 6 x x 的接口函数,搭建交叉 开发环境,完成l i n u x 的配置和编译,解决l i n u ) 【启动过程出现的问题; 3 ) 编写s h e u 脚本生成根文件系统的目录结构和d e v 下的设备文件,编译 b l l s y b o x 生成厂b i n 下的可执行程序,编写c t c 下的配置文件,编译u c l i b c 生成l i b 下需要的库,制作基于r 锄d i s k 的文件系统,并通过脚本实现文 件系统的自动更新; 4 ) 实现n a i l df l a s h 驱动,在其中一个分区建立j 凰2 文件系统,通过读写文 件验证了驱动的正确性;实现l c d 驱动,编译基于m i n i g u i 的应用程序, 通过应用程序在l c d 上显示图形验证了驱动的正确性; 5 电子科技大学硕士学位论文 l 硬件 图卜l 本文研究内容 本文的主要创新在于总结了移植“n u x 到新型a i 处理器的一套接口,并通 过实践验证了正确性。虽然嵌入式系统采用各种各样的处理器,但借助这个研究 成果,可以极大地方便l i n u x 在不同类型的删处理器中的移植。 本文研究还涉及到了“n u x 的引导加载程序、文件系统和驱动程序,对它们的 分析以及相关技术和工具的使用,都具有较大的指导和参考价值。 综上所述,本文为嵌入式“n u ) 【系统软件平台的开发提供了一种思路。毫无疑 问,该研究和实践具有重要的现实意义。对个人而言,将极大地提高自身的理论 和技术水平;对行业而言,必将使得应用程序的开发更加便利,推动l i n u x 在嵌 入式领域更加快速地发展。 1 4 2 章节安排 第一章介绍嵌入式l i n u x 的的特点和发展方向。 第二章分析u b o o t 的运行过程,着重分析了如何创建启动参数和设置“n u x 的 运行环境,然后详细描述了k 锄e 1p r e 的设计和实现,对k e m e lp r e 的项目设置、 程序下载和更新的方式以及内存空间的定位也做了说明。 第三章详细描述l i n u x 与处理器相关的接口和移植到s t m p 3 6 x x 的具体过程, 同时说明了内核移植代码如何验证、调试问题如何解决以及l i n u x 的配置和编译。 第四章分析根文件系统的内容,阐述根文件系统的制作过程,并对自动生成 6 第一章引言 和更新根文件系统的s h e l l 脚本进行了说明,同时也涉及到应用程序的交叉工具链、 部署等问题。 第五章分析设备驱动程序的体系结构和调用方式,详细描述n a n df 1 a s h 和 l c d 驱动的实现,对设备驱动的添加、配置、编译和测试进行了说明。 第六章结束语,对本文工作的成功与不足做了总结,对未来进一步研究做了 展望。 1 5 本章小结 本章简要地介绍了嵌入式l i n u x 的特点和国内外研究方向。正是在这样的背景 下,本课题研究并实现了嵌入式l i n u x 软件平台,具有较高的研究价值和应用价值。 下面将分四章分别进行描述。 7 电子科技大学硕士学位论文 第二章b o o t l o a d e r 的实现 本章主要介绍课题采用的硬件平台以及b o o t l o a d e r 的实现。通常由b o o t l o a d e r 加载并启动l i n u x 。在对当前流行的b o o t l o a d e r 程序进行权衡和比较后,选择了 u b o o t 作为参考对象,并结合硬件自身特点,最终形成了针对该目标板的引导加载 程序k e m e l j r e 。 2 1 硬件平台概述 处理器为s t m p 3 6 x x ,它是美国s e 舯a t e l 公司生产的第四代单芯片数字媒体 系统,主要应用在数字音频播放器、p d a 、录音机、手机、便携式视频播放器等。 c p u 核采用a r m 9 2 6 e j s ,该核实现了a r mv 5 t e 指令集,工作在小端模式,异 常向量表位于o x f f f f o o o o 【2 】( 3 1 。除了8 k 指令c a c h e 和8 k 数据c a c h e 外,该核集 成了6 4 k 的r o m 和2 5 6 k 的s r a m 。另外通过集成的外部存储接口( e m i ) 可以访 问外接的n o rf l a s h 和s d r a m ,通过通用媒体接口( g p m i ) 还可以访问n a n d f l a s h 。在该处理器中,存储空间映射如表2 1 所示。 表2 1 存储空间映射 地址范围 存储类型 0 x o o o oo 0 0 0 o x o 0 0 3f f f f片上s r a m 0 x 6 0 0 00 0 0 0 一o x 61f ff f f fs d r a m 0 x 8 0 0 00 0 0 0 o x 8 0 0 ff f f f i o 空间 o x f f f fo o o o o x f f f ff f f f 片上r o m 片上r o m 包含由s e 舯a t e l 固化的初始化代码,上电后首先从o x f f f f0 0 0 0 取指令开始执行,经过一系列基本的初始化后,然后根据不同的引导模式完成不 同的功能:如果设置为正常引导模式,则从n a n df l a s h 上加载应用程序( 如果不能 从n a n d 上加载,则还可以从其它介质加载,这里不再深究) ;如果设置为恢复模 式,并且连接主机与板上的u s b 接口,这时就可以从主机固化新的应用程序到 n a n dn a s h 中,通常更新应用程序就要使用这种方式。 明白了目标平台的基本情况和引导方式后,为了把“n u ) 【引导起来,应该如何 实现b o o t l o a d c r 呢? b o o t l o a d e r 如何存放? 完成哪些硬件初始化? 带着这些问题, 第二章b o o tl o a d e r 的实现 分析了u b o o t 的实现方法。 2 2u b o o t 分析 b o o t l o a d 叫引导装载程序) 是嵌入式系统软件开发的第一个环节,它把操作系 统和硬件平台衔接在一起,对于嵌入式系统的后续软件开发十分重要,在整个开 发中也占有相当大的比例。与熟悉的p c 技术相比而言,它相当于p c 上的b i o s 和引导记录两部分的功能,即完成基本硬件初始化和操作系统的加载,并转入操 作系统引导。 u b o o t ,全称u r n i v e r s a lb o o tl o a d e r ,是遵循g p l 条款的开放源码项目,从 f a d s r o m 、8 x x r o m 、p p c b o o t 逐步发展演化而来。其源码目录、编译形式与 l i n u x 内核很相似,事实上,不少u b 0 0 t 源码就是相应的l i n u x 内核源程序的简 化,尤其是一些设备的驱动程序,这从u b o o t 源码的注释中能体现这一点。但是 u b o o t 不仅仅支持嵌入式l i n u x 系统的引导,它还支持n e t b s d 、v x w b r k s 、q n x ,、 r t e m s 、a r t o s 和l y n x o s 嵌入式操作系统。这是u b o o t 中u i l i v e r s a l 的一层含 义,另外一层含义则是u b o o t 除了支持p o w e r p c 系列的处理器外,还能支持m i p s 、 x 8 6 、a i 蝴、n i o s 、x s c a l e 等诸多常用系列的处理器。这两个特点正是u b o o t 项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来 看,u b o o t 对p o w e r p c 系列处理器支持最为丰富,对l i n u x 的支持最完善。出于 这些的考虑,在课题中首先对u b o o t 进行分析,力求掌握b 0 0 t l o a d e r 初始化的基本 过程和引导l i n u x 的必要准备。 2 2 1 运行过程分析 为了与本文使用的硬件平台尽量保持一致,在分析u b o o t 时主要以a 1 w 系列 的目标板进行分析。它的运行过程对a r m 系列的目标板都是一样的,只是调用的 与硬件有关的底层函数不同。u b o o t 引导l i n u x 的过程可以分成3 个阶段:首先在 f l a s h 中运行,完成硬件最基本的设置,其中就包括s d 洲的初始化,然后将自 身复制到s d 洲中,最后转入s d 洲运行;在s d r a m 中执行各种硬件的初 始化;设置内核参数的标记列表,把内核拷贝到内存,最后跳转到内核的入口。 详细描述如下: 1 ) 程序首先在f 1 a s h 中运行。具体工作包括:设置异常向量表;设置c p u 运行 模式;设置系统的主频;屏蔽中断;关闭m 肌r 功能;初始化s d r a m 控制寄 9 电子科技大学硕士学位论文 存器;将u b 0 0 t 自身复制到s d r a m 中;设置堆栈指针;转入s d r a m 执行【4 】。 这部分用汇编语言编写,在u b 0 0 t c p u ) 【) 【x s t a n s 中,其中x ) ( ) 【表示一种具体 c p u 的名字。 2 ) 程序跳转到s d r a m 中执行u b o o t l :| ba 册厂b o a r d c 中的s t a na n n b o o t ( ) 函数。 该函数依次调用各个部分的初始化函数,包括c p ui i l i t 、b o 砌i n i t 、 i n t 锄l p t j n i t 、e n vi n j t 、i n i b a u d r a t e 、s 舐a l j n i t 、c o n s o l e _ 硒t _ f 、d r a l l o i l i t 和f l a s hi n i t 等等,最后进入m a i n1 0 0 p 。m a i nl o o p 主要用于设置延时等待, 从而确定目标板是进入交互操作模式还是自动引导模式。在设定的延时时间范 围内,目标板将在串口等待输入,当有输入时,系统进入交互操作模式,反之 如果没有接收到相关命令,系统将进入自动引导模式,完成内核的加载及引导。 如果程序进入交互操作模式,则可以响应用户输入的命令,包括内存操作命令, j f l 砒操作命令,下载命令和引导命令,为u b 0 0 t 的使用提供了更大的灵活性。 3 ) 加载l i n u x 就是把l i n 畎映像文件从f l a s h 中拷贝到s d 鼬蝴中特定的地址( 注 意决不能随便拷贝到某个地址,该地址是内核编译后的虚拟地址以及目标平台 s d r a m 的起始地址共同决定的,后面会讲如何计算) ,然后跳转到l i n u x 的 入口执行。但是与引导其它嵌入式操作系统有两点不同:1 ,l i n u x 初始化时必 须要挂载根文件系统,并且需要从这个文件系统中执行一些初始化脚本( 主要 位于e t c 下) ,最后执行b i n 下的s h e l l 程序进入命令行交互。根文件系统的实 现有多种方式,比如最常见的r 锄d i s k 。把r a m d i s k 的映像文件做好以后( 第四 章介绍如何制作基于r 锄d i s k 的根文件系统) ,会固化到n a s h 中并由b o o t l o a d e r 在加载l i n u x 时一起拷贝到s d r a m 中,这样l i n u ) 【才能找到这个根文件系统 并挂载。对于其它类型的根文件系统,如j 凰2 ,不需要b o o n o a d e r 事先拷贝到 s d r a m ;2 ,在引导“n u x 前需要创建引导参数。主要包括s d r a m 的起始地 址和大小,r 锄d i s k 的起始地址和大小( 也可在命令行参数中指定i n i 仃d = ) 【x x , x ) 【) 【) 以及命令行参数( 主要包括根设备r o o t = d e v x x x ,控制台及控制台参数 c o n s 0 1 e - x x xx x xx x x 等) 。创建的方式采用标记列表( t a g g e dl i s t ) ,这是和l i n u x 约定好的。下面会详细阐述如何使用标记列表创建参数。 2 2 2 创建引导参数 l i l l u ) 【2 4 x 以后的内核都期望以标记列表( t a g g e d1 i s t ) 的形式来传递启动参 数。启动参数标记列表以标记朋r a gc o r e 开始,以标记触队gn o n e 结束。 1 0 第二章b o o tl o a d c r 的实现 每个标记由标识被传递参数的t a g _ h e a d e r 结构以及随后的参数值数据结构来组 成。所有这些标记都在一块连续的内存中被创建,同时必须让内核知道它们的起 始位置【5 1 。 数据结构t a g 和t a g j l e a d e r 定义在l i n u x 内核源码的i n c l u d e 姻州s e m p h 头 文件中: t h el i s t 饥d sw i ma i la t a g j 寸o n en o d e 奉 蜘e 血ea t a g _ o n eo x 0 0 0 0 0 0 0 0 s 仃u c tt a g r - h e a d e r u 3 2s i z e ;搴注意,这里s i z e 是字数为单位的幸 u 3 2t a g ; ; s 仃u c tt a g s t m c tt a g e a d e rh d r ; u 】【1 i o n s t m c tt a & 一c o r ec o r e ; s 仃u c t t a gm e i l l 3 2m 锄; s t m c tt a g _ v i d e o t e x tv i d e o t e x t ; s 白r u c tt a gr a m d i s kr a m d i s k ; s 白m c tt a 罟0 n i 仃di i l i t r d ; s t r u mt a & _ s e f i a l n rs e a l n r ; s t m c tt a gr e s i o nr c ! v i s i o n ; s 仃u c tt a g - v i d e o l f bv i d e o l f b ; s t 九j c tt a g c m d l i n ec m d l i n e ; | 奉a c o ms p e c i f i c l s t n l c tt a g a c o ma c o m ; | | 事d c 2 1 2 8 5s p e c i f i c 木 s t m c tt a 眇e n l c l km e m c l k ; 1 1 电子科技大学硕士学位论文 ) u ; ) ; 在嵌入式l i n u x 系统中,通常需要由b o o t l o a d e r 设置的参数有: a 工a g c o r e 、a = r a g l 奠f o n e 、a = r a g _ m e m 、a t a g c m d l i n e 、a t a g _ _ i n i t r d 等。比如,设置a 1 r a gc o r e 的代码如下: p a r 锄s = ( s t m c tt a g 拳) b o o tp a r a m s ; p a r 锄s 一 h d r t a g = 触r a g - 上o r e ; p 础吼s 一 h d r s i z e2t a g i z e ( t a 臣c o r e ) ; p a r 锄s 一 u c o r e f l a g s = o ; p a r 锄s - u c o r e p a g e s i z e = 0 ; p 绷m s - u c o r e r o o t d e v = o ; p a r a m s = t a & j e x t ( p a r a m s ) ; 其中,b o o tp a r a m s 表示启动参数在内存中的起始基地址,指针p a r a m s 是一个s t m c tt a g 类型的指针。宏t a 缈e m ( ) 将以指向当前标记的指针为参数,计 算紧临当前标记的下一个标记的起始地址。这里觚a gc o r e 仅仅表示开始,其 它字段并无意义。 又如设置内存映射情况的示例代码: f o r ( i = o ;i h d r t a g = a 1 队g - m e m ; p a r 锄s - h d r s i z e = t a g - s i z t a j n e m 3 2 ) ; p 黜a m s 一 u m 锄s t a n2m e m o 巧m a p i s t a r t ; p 啪s _ u m e m s i z e = m e m o 巧m 印【i 】s i z e ; p 猢s 2 t a - n e x t ( p a r 锄s ) ; ) ) 可以看出,在m e m o 巧加a p 数组中,每一个有效的内存段都对应一个 a t a gm e m 参数标记。 l i n u x 内核在启动时可以以命令行参数的形式来接收信息,利用这一点可以向 内核提供那些内核不能自己检测的硬件参数信息,或者重载( o v e 盯i d e ) 内核自己检 测到的信息。比如,用这样一个命令行参数字符串“c o n s 0 1 e - 仕y s o ,1 1 5 2 0 0 1 1 8 ”来 通知内核以第一个串口作为控制台,且串口设置为“1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论