(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf_第1页
(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf_第2页
(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf_第3页
(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf_第4页
(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf_第5页
已阅读5页,还剩56页未读 继续免费阅读

(计算机应用技术专业论文)基于arm的lcu测试系统的设计.pdf.pdf 免费下载

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

文档简介

摘要 机车l c u 单元测试是l c u 单元证明其准确性、可靠性的重要的 一环,是在l c u 单元投放市场和实际运行之前的必要准备。a r m 是 一款e p u 处理器的总称,根据它功耗小,性能优,价格成本低廉的特 点,目前广泛用于嵌入式设备的核心处理器。本文的目标重点就在于 两者的结合之处,通过对a r m 平台的搭建研究和设计了l c u 的单 元测试系统。 本文详细介绍了搭建a r m 工作平台主要的四个步骤:首先是要 建立基本的硬件平台作为实际运行的基础,本文所选用的市面上广为 人知,有较好口碑的韩国三星公司生产的s m d k 2 4 1 0 开发板作为硬 件基础,在此之上进行软件的开发和修改;第二步是得到交叉编译工 具,其目的是编译程序来得到a r m 处理器所能识别的二进制代码, 相当于软件硬编码的翻译工作;第三步是移植b o o t - l o a d e r ,加载所有 启动时需要可执行的二迸制代码至内存中,负责硬件带电启动整个系 统;第四步则是操作系统的移植。选用常见l i n u x 作为操作系统,提 供o s 一级的系统调用,向上为软件层提供硬件的操作接口,向下通 过驱动管理控制硬件,负责协调硬件和软件的工作。 从软件工程的角度出发,遵循设计模式的方法,采用l i n u x 世界 中模块的设计思想,在对l c u 单元的测试情况做出具体分析的前提 下提出了l c u 单元测试系统的整体设计。同时结合嵌入式系统编程 的特点,实现了数据压缩算法和工作状态换算算法,给出了一种简单 快速判断硬件编址的方法,最后,初步讨论了优化算法方案及其可行 性。 关键词a r m ,嵌入式l i n u x ,l c u 测试 a b s t r a c t l o c o m o t i v el c ut e s ti st h el m p o r t a n tp h a s et ov e i l f yl t sv e r a c i t y a n dr e l i a b i l i t y t h ep r e p a r a t i o ni se s s e n t i a lf o rl c u p u tt ot h em a r k e ta n d a c t u a lw o r k a r mi sg e n e r i cn a m eo fo n ek i n do fc p u a c c o r d i n gt oi t s l o w e n e r g y - c o n s u m e r , e x c e l l e n t - p e r f o r m a n c ea n dc h e a p n e s sf e a t u r e s , p e o p l eu s u a l l yu s ei tf o rt h ee m b e d d e dd e v i c ec o r e t h i sp a p e ra i m st o c o m b i n eb o t h :b u i l d i n gt h ea r mp l a t f o r ma n ds t u d y , a n dd e s i g no fl c u t e s ts y s t e m t h i sp a p e ri n t r o d u c e st h ef o u rs t e p st ob u i l dt h ea r mw o r k i n g p l a t f o r mi nd e t a i l :f i r s t ,e s t a b l i s h i n gt h eb a s i ch a r d w a r ep l a t f o r ma st h e b a s eo fp r a c t i c er u n n i n g t h cw e l lk n o w ns m d k 2 4 1 0o b j e c tb o a r d w h i c hi sp r o d u c e db yt h ek o r e as a m s u n gc o m p a n y , i ss e l e c t e da st h e h a r d w a r eb a s e ,w h i c hi sb a s e do nt od e v e l o pa n dm o d i f yt h es o f t w a r e ; s e c o n d ,g e t t i n gt h ec r o s s c o m p i l e rw h o s ea i mi st oc o m p i l es o f t w a r et o g e tb i n a r yc o d ec a nb er u n n i n gi nt h ea r mc p u ;t h i r d ,m i g r a t i n gt h e b o o t l o a d e r , w h i c hi su s e dt ol o a da l lt h en e c e s s a r ye x e c u t a b l eb i n a r y c o d et ot h em e m o r ya n dp r o v i d ep o w e rt os y s t e m ;f o u r t h ,m i g r a t i o no f t h eo s t h eu s u a ll i n u xo si ss e l e c t e d t op r o v i d et h eo sl e v e ls y s t e m c a l l ,w h i c hi st h ei n t e r f a c eo fh i g h e rl e v e ls o f t w a r et oc o n t r o lh a r d w a r e a n dm a n a g e m e n tt ol o w e rl e v e lh a r d w a r eb yd r i v e r , t h a ti s d u t yt oa s s o r t w i t hh a r d w a r ea n ds o f t w a r e i nt h i sp a p e r , t h ew h o l ed e s i g no fl c ut e s ts y s t e mi sp u tf o r w a r d , c o m i n gf r o mt h es o f t - w a r ee n g i n e e r i n gp o i n to fv i e w , f o l l o w i n gt h e m e t h o di nd e s i g np a t t e r n s ,u s i n gt h em o d u l ei d e ai nt h el i n u xw o r l da n d b a s i n go nt h ep r e c o n d i t i o no fc o n c r e t e l ya n a l y s i so fl c u t e s tc a s e a t t h es a m et i m e ,c o m b i n i n gw i t ht h ec h a r a c t e r so ft h ee m b e ds y s t e m c o r d i n g ,t h i sp a p e ri m p l e m e n t sa r i t h m e t i co fd a t ac o m p r e s sa n dw o r k i n g s t a t ec o m p u t e r , p u tf o r w a r das i m p l ea n dq u i c km e t h o dt oj u d g et h e h a r d w a r ea d d r e s s i n g a tl a s t ,t h i sp a p e rs i m p l yd i s c u s s e st h eo p t i m i z e a r i t h m e t i ca n dt h ef e a s i b i l i t y k e yw o r d s a r m ,e m b e d d e d - l i n u x ,l c ut e s t 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。 作者签名: 旷i 夕 ! 月坦日 关于学位论文使用授权说明 本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位 论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论 文;学校可根据国家或湖南省有关部门规定送交学位论文。 期:p 早年月 中南大学硕士学位论文第一章绪论 1 1 概述 第一章绪论 a r _ , m ( a d v a n c e dr i s cm a c h i n e s ) 是一种r i s c 体系的c p u 芯片。和所有的c p u 芯片一样,a r m 芯片通常被固化到电路板上,搭配各种运算和储存芯片,并配 以适当的外围电路元件,如串口,视频或音频处理芯片,来完成一系列的功能和 作用。a r m 技术在最近几年内得到了长足的发展,主要是和其开放性的研发模 式有必然联系。1 9 9 1 年,在英国诞生一家所谓的a r m 公司,该公司的主要业务 在于出售芯片设计技术的授权即a r m 芯片技术。但a r m 公司只从事基于r i s c 技术芯片设计开发,提供知识产权转让设计许可,本身却不直接从事芯片生产; 世界各大半导体生产商购买其a r m 处理的设计,再生产自己公司的a r m 处理 芯片( 甚至如i n t e l 这样的处理器芯片开发公司也从a r m 公司购买这样的知识 产权,其代表产品为x s a c l e ) 。因此使得a r m 技术获得更多的支持,无论是从市 场标准还是各级工业接口的制定都实现的一定的规范,使产品的开发之间的信息 交流更容易,从而降低成本,因此具有竞争力。 a r m 芯片具有低功耗、低成本、高性能的优点,在嵌入式自动化领域中应 用十分广泛,如手机、个人p d a 产品、各种工控仪表和家电设备等等。因为性 价比突出的优势,a r m 正越来越被人们所认识和重视,有着广阔的市场前景。 l c u 检测是机车制造及维护不可缺少的重要一环。如果将a r m 技术运用到l c u 检测中去,势必能紧跟时代潮流,起到物尽其职的作用。 1 2 国内外研究现况及水平 对于整个a r m 体系的研发,目前是这样的情况:国外第一级的企业开发出 成熟的通用r i s c 处理核系列,国外和国内的第二级企业在a r m 的c p u 核的基础上 进行了一些外围扩展,形成了自己的处理器,而众多的第三级中小公司购买这些 处理器并根据不同的实际要求来设计各种各样的开发电路板。 国内的研究倾向于为软件层服务:最著名的当属广州周立功公司【l 邡】,他以 配置a r m 系统功能模块为手段,开发能够运行特制程序的开发板。参考文献4 , 5 】属于同等层次的开发参考书籍,对a r m 开发流程进行说明。参考文献 6 ,7 】 倾向于工作手册的性质,对于a r m 的硬件特性有详细的描述。相比之下国外的 学者倾向于硬件的细节上的处理:d a v i d i s , 9 指出了a r m 架构上开发程序若干有价 值的参考,d o n z e l l i n i 1 0 】等人则研究了面向对象思想在a r m 芯片的实现过程, s e g a r s 【l l j 则提出了高性能a r m 的概念,国内陆洪毅学者则对处理器向量计算进行 1 中南大学硕士学位论文 第一章绪论 分析1 1 2 1 。 本文中采用的深圳优龙公司a r m 开发板就属于这样模式下的开发产品( 图 1 - 1 ) 。该开发板的型号为s t 2 4 1 0 ,采用韩国三星公司的s m d k 2 4 1 0 作为目标基板, 其中的a r m 芯片为$ 3 c 2 4 1 0 ,隶属a r m 9 系列: 图卜1s t 2 1 0a r m 开发板 从这里看出,在国内对a r m 的研究主要集中在大量的实际应用方面,省去 了芯片本身的开发周期并有很好的可靠性的保证,所剩下的问题是对具体需求的 分析,然后开发出现实中的产品。而如果要进行在a r m 平台上l c u 检测的开发, 是处在a r m 体系的中下层。可以对l c u 检测的实际问题进行详细的分析,总结 出对软硬件所要求的功能,择优选择适当的a r m 芯片搭建硬件平台,精心设计 出软件系统。要考察芯片的工作情况,深圳优龙公司出品的s t 2 4 1 0 技术文档1 1 3 】 以及韩国三星公司为其制造的芯片$ 3 c 2 4 1 0 配备的技术文档【1 4 】就属于开发必备 的细节参考。 对于运行在a r m 上的操作系统平台,比较流行的有嵌入式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 研究则十分迅猛。可以是直接改动内核,提 出简化进程的调度方案【1 5 l 来提升操作系统的性能,也可以应分布性【1 6 】和实时性 0 7 的要求,内核各个模块之间信息传递的改善,对内核进行调整0 8 , 1 9 , 2 0 也是重要 的方面。实际上,在上述提到的参考文献中,大部分都以l i n u x 作为研究基础, 搭建l i m l x 的操作系统环境,转而研究各类l i n u x 应用层程序。受此影响本文亦遵 中南大学硕士学位论文第一章绪论 守这样研发模式,选择l i n u x 作为操作系统,最终应用特定的l c u 检测系统程序。 基于异常处理机制【2 1 捌,a r m 核的嵌入式系统在硬件 2 3 1 和软件1 2 4 方面都有 成功范例,参考文献 2 5 ,2 6 成功实现了嵌入式网络控制相关系统设计,这就说 明采用嵌入式l i n u x 系统设计的一般方法f 2 7 ,2 s 捌,对嵌入式l c u 测试系统的设计 有极大的参考作用。开发过程中的调试工作也处于重要地位,参考文献【3 0 】则提 供了其详细的介绍。 l c u 在机车控制方面处于实际应用的地位,关于它的研究从整体到细节都有 涉及:参考文献 3 1 d f 8 b 型机车微机l c u 控制系统设计与开发,它基于实时、 多任务应用操作系统v r t x ;参考文献【3 2 】介绍了一种上位机与l c u 的通信协议; 参考文献 3 3 1 介绍j s s 7 c 型电力机车当中逻辑控制单元发生电流过载的情况分 析,参考文献 3 4 1 对s s 7 d 型机车l c u 的故障情况及原因进行了统计分析,提出 l c u 输出插件电路两种不同的改造方案。 传统的l c u 检测包括人力检测、单片机检测和p c 机通过串口控制开发板检 测。检测行业总是伴随被检测事物本身的工业制造水平发展和进步,l c u 由于其 工业的复杂性,势必要求计算机在测试行业中发挥更重要的作用。稳固的检测标 准,使得l c u 测试产品得以工业化。参考北京蓝天多维科技有限公司成功开发一 款机车的l c u 检测系统,如图1 2 : 图1 - 2 机车i , c l j 检测系统 图片来源:( h t t p :m b j l t k j c o m l e u h t m ) 中南大学硕士学位论文 第一章绪论 1 3 研究的意义和目的 随着硬件性能的提升,超过了传统的检测方法的适用范围,这就要求升级检 测设备,从硬件的角度来符合应用的需求。同时又要在设计时加入便携和灵活的 考虑。尤其是便携式是检测器材设备的重要标准,笨重、不灵活的设备正逐渐失 去吸引力和市场。相对于一个体积庞大的系统,体积小的嵌入式系统对消费方更 具有吸引力。反馈信息的主要通过屏幕显示以及操作的界面简单明了,这符合嵌 入式系统人机交流方式单一的特点。工作环境恶劣的因素下,手提电脑+ 测试应 用程序的普通l c u 测试系统设计方案很可能遭到推翻,但是提盒式的嵌入式系 统却值得考虑,因为可以在提盒中配置抗干扰的内部环境。并且从硬件成本的角 度来分析,嵌入式系统的花费一定是最低的。如果采用l i n u x 的操作系统平台, 能够进一步压缩成本。嵌入式系统由于自身的特点,在应用软件的保密方面占有 优势,因此可以保存商业信息,尤其是软件版权方面具有很好的保护作用。在接 下来的分析中就可以看到,采用了测试项目于程序分离的软件模块设计方案,测 试的种类大大增加,不管是同一种车型的测试项目变更,还是其他车型的测试, 以及是更广泛的一般性l c u 系统的测试,都能够一一得以解决,这就增加了买 方市场。所有这些分析,嵌入式系统都占据的一定优势。传统的l c u 检测手段 在新的要求下劣势日渐突出,这样,a r m 的使用就是一个很好的选择,因为上 述的要求它都有着强劲的支持。 另一个主要问题是软件的重复开发,软件不能够重用,资源不能共享,造成 大量人力与物力资源的浪费。高级语言中库函数的采用,实现了一定程度上资源 的共享,但是无论是广度和深度都还是不够,在减轻劳动强度提高工作效率方面 作用有限。随着软件理论向前的发展,程序的复用性、可维护性和兼容性都有新 的观点和技术出现。尤其是面向对象的方法的应用,使得我们可以利用面向对象 的继承等方法大量重用源代码。采用面向对象的软件的复用技术将大大缩短开发 流程,轻松实现程序系统的修改和扩充,维护起来省时省力,因此在l c u 检测 软件系统开发有着强烈的借鉴意义。 基于a r m 的l c u 检测测试系统是一种新型的l c u 检测方式。a r m 的优 点就是设计周期短,低功耗,性能优越。a r m 能够胜任对实时性要求较高的场 合,是高性能嵌入式开发的主要选择,完全能够满足l c u 检测中的一般要求。 开发出一套通用的l c u 检测软件系统,可以兼容市面上大部分的硬件,提供多 层次和多场合的复用,节省了重复劳动的过程,做到行业标准的统一和规范,从 而具有巨大的市场前景和一般的普遍意义。 4 中南大学硕士学位论文 第一章绪论 1 4 主要研究内容以及目录组织结构 第二章主要讲述如何搭建一个交叉编译器,这是进入嵌入式设备开发的第一 步,有了交叉编译器就可以编译能够实地运行的二进制程序。第三章主要讲述如 何移植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 操作系统。操作系统是应用程序直接面对的平台。 第五章讲述l c u 测试程序的设计与实现,其中用到的几个关键的算法和步 骤都在本文中有涉及。第六章是重新审视程序之后,提出的可供优化的一些观点。 中南大学硕士学位论文 第二章a i l m 交叉编译器的建立 第二章a r m 交叉编译器的建立 2 1a r m 交叉编译器 交叉编译简单的讲就是在一种体系结构的机器上编译出能够运行于另一种 体系机器上的代码。在嵌入式系统的开发中,a r m 交叉编译器具有重要意义1 3 ”。 如果想要在a r m 目标板上开发程序,该程序肯定是基于a r m 体系指令的 二进制代码结构的,不论是操作系统还是应用程序。但是直接在a i e v i 目标板上 开发程序,无论是程序运行速度相对落后还是调试手段比较单一,都严重制约了 开发效率;有些程序的撰写,更加需要在p c 机上才能完成,然后烧制到目标板 上进行实地调试,比如l c d 触摸屏驱动模块开发。交叉编译的作用,就在于在 p c 机上开发程序,交叉编译后,放置到a r m 目标板上去执行。参考图2 - 1 : 图2 - 1 编译顺序说明 重要的三个部分就是编译器g c e 和链接器b i n u t i l s 和库文件g l i b c ,三者合称 交叉编译器。g c c 编译程序源代码,生成目标文件,b i n u t i l s 负责将每个目标文件 联合起来,放到合适的地方,西i b c 是c 语言库。它们既要运行于当前体系的系 统下,又要能生成和处理目标体系的文件,因此称它们为交叉编译器;与软件开 发的一般流程相比,嵌入式系统开发仍然需要用到编译器,连接器和集成开发环 境等等其他的开发工具,只是用来建立应用程序的平台与用来执行应用程序的平 台并不相同,因此这些又可以称为跨平台开发工具p 叫。 6 中南大学硕士学位论文第二章a r i m 交叉编译器的建立 2 2a r m 交叉编译器的搭建原理 这里比较重要的是g e e ,因为它的编译过程比较复杂,要满足一定的条件。 g e e 要编译出运行于其它体系的代码,除了需要编译的目标程序的源代码及 其头文件外还需要符合该体系的头文件,这就是内核的头文件。所以作为交叉编 译用的g c e ,除了在编译其它程序的时候用到头文件,其自身也必须“了解”这些 头文件,它必须掌握目标体系的全部细节,这已经由l i n u x 的内核头文件给出了, 另一点需要注意的是,g c c 会用到c 库,那么就必须对这一切都要了解,所以在 编译g e c 的时候必须有g l i b e 的头文件。 要得到支持c c + + 交叉编译的g e e ,必须有一个编译好的用于目标体系平台的 g l i b e ,而不是仅有g l i b e 的头文件就可以。虽然这时候g l i b e 暂时没有编译出来, 好在编译g l i b e 只要c 支持的g e e 就够了,所以要得到能够交叉编译c 语言的g e e 。 把上述说明的内核头文件和g l i b e 头文件拷贝,用于得到交叉编译c 语言的g e e 。 整个的流程如图2 - 2 : 图2 - 2 编译器的搭建顺序 7 实际处理顺牟 i _ 一 逻辑要赛 - - 中南大学硕士学位论文 第二章a r m 交叉编译器的建立 2 3 工作路径的定义 在为目标板搭建交叉编译器,以及后期为目标板开发定制软件的过程中,会 强烈要求定义一个说明性强,无歧义的目录结构,以便于各种软件包的组织。采 取的安排方式是最直观,这样做是十分有必要的。如,在接下来就会看到,同一 个软件不同版本的存放,以及同一版本号又做了不同的修改的软件,如果不适当 归类,当开发到一定阶段,代码累积到一定程度的时候,势必扰乱开发人员的思 路,不利于记忆,降低了开发效率。同时,在规定的目录下工作,可以强调开发 人员以非r o o t 的身份解压和执行各种软件,这样能够对主机p c 起到保护的作用。 一般的目录安排方式: b o o t l o a d e r 引导加载程序。 b u i l d t o o l s :建立交叉编译器需要用到的软件包。 d e b u g :调试工具软件包。 d o e :软件的开发文档。 i m a g e s :可以烧录到目标板上的二进制镜像,包括引导加载程序,内核以及根文 件系统的镜像。 k e r n e l :各个版本的内核。 r o o t f s :内核运行时的根文件系统。 t m p :临时文件夹。 t o o l s :交叉编译器以及各种c 链接库都放在这里。 当然,各个目录底下会依据实际意义包含各种子目录。比如k e r n e l 目录中 包含有k e r n e l 2 4 1 8 以及k e m e l 2 6 7 ,分别表示2 4 1 8 和2 6 7 两个版本的内核。 因为担心编译工具冲突,总的工作目录不要放在系统目录u s r 或u s r l o c a l 下。 2 4 组件的版本组合选择 将要下载很多的软件工具包。在下载过程中,很容易看到该类软件,它的命 名后缀表明了版本号,如常见的b i n u t i l s ,可能的一个就是b i n u t i l s 2 1 6 t a r g z 。那 么就要注意版本方面的问题。l i n u x 编程体系中约定的习惯,末尾数字为奇数表 示这是一个不太成熟未经过大量测试的版本,反之,末尾数字为偶数表示这是一 个比较成熟运行稳定的版本。在选择软件版本的时候,该条定律就是一条指导规 则。实例上说则b i n u t i l s 2 1 6 很可能比b i n u t i l s 2 1 5 更可靠。 另外一个要考虑的是不同软件的版本搭配问题【1 ”。因为各个软件的开发和维 护是完全独立的,所以并不规定软件之间的搭配是必须的关系。b i n u t i l s 2 1 6 与 g c c 3 4 0 或g c e 3 4 2 的关系是没有强制定义的。比较明智的方法是开发人员从最 8 中南大学硕士学位论文 第二章a r m 交叉编译器的建立 新版本的开发工具搭配试验做起,测试可能使用的版本组合,如果无法建立再依 次换成较旧的版本。这样做法的依据就是最初版本的软件是一定能够搭建成功 的。而互联网上的资料流传比较频繁,借助搜索引擎,可以在各个开发论坛,问 题邮件列表里找出若干个成功的搭配组合,作为参考。需要说明的是,本文在接 下来对于软件版本的选择,就是出于测试的情况而非逻辑上的必然。 2 5lin u x 体系下编译程序的基本过程 在l i n u x 体系下编译程序,和传统的w i n d o w s 编程很不同,这和l i n u x 是开 放源码的特点很有关系。众所周知的是,如果下载到l i n u x 程序软件包,其目录 下的内容是非常丰富的。源码以各种原生的状态提供给下载的用户,包括头文件, 运行时库文件,程序主体资源文件。可以很容易的得到机会去研究这些源码开发 人员的开发习惯,编程风格,以及对待具体情况下所用的技术。然而抛开入的因 素,一个很迫切的问题就是:这样全盘罗列的代码如何被组织起来,最终编译成 为一个可以执行的程序? 其实l i n u x 源码开发人员在早期就意识到了这个问题。他们的解决方案就 是:调整代码之间的相互关系主要还是落在开发人员自己肩上,但是软件功能的 定制和选择则还是依靠下载用户。也就是所谓的m a k e f i l e 和c o n f i g 文件来实现 上述分开的职责。 c o n f i g 文件是一个脚本文件。它的作用方式是通过运行该文件,就会定义一 些常数宏。这些常数宏的存在,来通知底层软件选择哪些模块,源文件中函数实 现哪个功能,甚至于变量是何种类型的定义,等等。因此它又形象的被称为“配 置”文件。 m a k e f i l e 文件作用在于规定了整个工程的编译规则。一个工程中的源文件不 计数,其按类型、功能、模块分别放在若干个目录中,m a k e f i l e 定义了一系列的 规则来指定文件的编译顺序:哪些文件需要先编译,哪些文件需要后编译,如被 调用函数所在的文件就要在调用函数所在文件编译之前;哪些文件需要重新编 译。有些软件的全部编译是一个很消耗时间的过程,如果对于某些文件的小部分 修改导致软件包的全部重新编译,在时间方面就很不合算了。m a k e f i l e 能够确定 是哪些文件得到了修改,从而只对修改过的文件进行编译,这一点就很有实际意 义。开发人员通过编写m a k e f i l e ,就能控制软件包编译过程,而无论下载用户怎 么去配置。 既然清楚了l i n u x 体系下程序源码包的组织机理,就不难理解l i n u x 体系下 编译程序的过程。下载一个软件包后,解压到本地目录下。通过终端进入到该目 录,输入命令: 9 中南大学硕士学位论文 第二章a r m 交叉编译器的建立 c o n f i g u r e 从而实现为软件包的具体配置。也可以是带上参数的形式: c o n f i g u r e - - t a r g e t = $ t a r g e t 一p r e f i x = $ p r e f i x - t a r g e t 表明是那种类型的目标板,t a r g e t 是字符变量,可以预见的是 t a r g e t 将带有a r m 的关键字;一p r e f i x 指示了安装目录,p r e f i x 也是字符变 量,它将是一个路径字符串。 c o n f i g u r e 命令完成以后,在本地文件夹下会出现一个e o n f i g 的文件。然后 在终端可以输入编译命令: m a k e 这时软件就会处于被编译状态。这个过程是很漫长的。举例说明:以1 8 g 的c p u ,2 5 6 m 内存配置的p c 主机,对2 6 系列内核的全部编译,需要花费3 5 分钟左右的时间,并且主机还没有开启其他的应用程序。如果没有语法词法方面 的错误,程序各个部分没有残缺,最后会显示编译成功。 2 6 搭建a r m 交叉编译器 h o s t 主机编译环境为r e d h a t 9 0 ,下载相关的源代码包: 下载地址为: 建立工作目录: b i n u t i l s - 2 1 6 t a r g z g c c - 3 4 2 t a r g z g l i b e 一2 3 2 t a r g z g l i b c l i n u x t h r e a d s - 2 3 2 t a r g z t a r s :在该路径下放下载来的t a r g z 文件 s o u r c e d i r e c t o r y :在该路径下放解压缩后的源文件 b u i l d d i r e c t o r y :在该路径下编译 a n n - c h a i n - t o o l s :把a n n 1 i n u x 交叉编译环境的安装在这里 先设定变量,在解压缩和编译中都会用上。如上文所述,t a r g e t 说明是 何种类型的目标板,p r e f i x 导出了安装路径: l o 中南大学硕士学位论文第二章a r m 交叉编译器的建立 $ e x p o r tp r e f i x = a r m - c h a i n - t o o l s $ e x p o r tt a r g e t = a r m - l i n u x 根据工作目录名,完成下载各个文件并解压缩到s o l u c c 文件夹下。因为 g l i b c l i n u x t h r e a d s 一2 3 2 t a r g z 是线程函数包,它的解压缩路径应该是在g l i b c - 2 3 2 $ e dg l i b c 一2 3 2 $ t a r z x f g l i b e l i n u x t h r e a d s - 2 3 2 t a r g z 2 6 1 编译安装b i n u t i s 因为b i n u t i l s 的编译并不需要k e r n e l 头文件,所以能够第一步执行。 $ c d t a r s b u i l d d i r $ m k d i rb i n u t i l s $ c db i n u t i l s $ 。s o u r e e d i r b i n u t i l s 一2 1 6 c o n f i g u r e 一- t a r g e t = $ t a r g e t - p r e f i x - - $ p r e f i x $ m a k ea l li n s t a l l 输出b i n u t i l s 的路径到环境变量中: e x p o r tp a t h = $ p r e f i x b i n :$ p a t h 2 6 2 安装i n u x 的头文件 清理一下,重新理顺各个模块文件的依靠关系: 将内核源码包的主m a k e f i l e 中的a r c h 变量定义为a r m ,这样就明确了目 标体系: a r c h := a r m 中南大学硕士学位论文第二章a r m 交叉编译器的建立 拷贝头文件,以备g l i b c 编译用: $ m k d i r p $ p r e f i x $ t a r g e t i n c l u d e $ c p d ri n c l u d e l i n u x $ p r e f i x $ t a r g e t i n c l u d e $ e p d ri n e l u d e a s m - a r m $ p r e f i x $ t a r g e t i n c l u d e a s m 2 6 3 编译安装g c c 的c 编译器 g e e 的源码包里提供了很多种其他语言的编译器,在c o n f i g u r e 时指定 一e n a b l e l a n g u a g e s = e ,就能保证只编译c 语言而不包含其他语言( 如j a v a ) 的编 译器。后面第二次编译g e e 的时候也类似,那时只编译c 和c + + 的编译器。此 时g l i b e 尚未真正被编译,所以要求一d i s a b l e - t h r e a d s 关闭线程参数,且因为编译 器默认是动态连接共享库的,d i s a b l e s h a r e d 参数指明为静态连接。 $ 一s o u r c e d i r g c c - 3 4 2 c o n f i g u r e 一- t a r g e t = - $ t a r g e t p r e f i x = $ p r e f i x - - e n a b l e - l a n g u a g e s = e 一- d i s a b l e - s h a r e d - d i s a b l e t h r e a d s $ m a k ea l l i n s t a l l 2 6 4 编译安装g l i b e 利用已经制作好的g e e 来编译,相应的要采用新的a r 命令,建立、修改、 提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以 恢复原始文件内容。同时采用新的r a n l i b 命令产生归档文件索引,并将其保 存到这个归档文件中: $ c c = $ t a r g e t - g c ea r = $ t a r g e t - a rr a n l i b = $ t a r g e t - r a n l i b e n a b l e a d d o i l s 表明加入的附件。要加入的是线程库,因此添加进去: $ s o u r e e d i r g l i b e - 2 3 2 c o n f i g u r e $ t a r g e t p r e f i x = $ p r e f i x $ t a r g e t e n a b l e - a d d o n s - 】i n u x t h r e a d s $ m a k ea l l i n s t a l l 2 6 5 编译安装g c c 的c c + + 编译器 如前所述,表明g e e 支持的语言类型为c c + + : 1 2 中南大学硕士学位论文第二章a r m 交叉编译器的建立 $ 1 i s o u r c e d i r g c c - 3 4 2 c o n f i g u r e - - t a r g e t = $ t a r g e t 一- p r e f i x = $ p r e f i x - - e n a b l e - l a n g u a g e s = e 卅 $ m a k e a l l $ m a k ei n s t a l l 至此,得到一个完整的a r m 交叉编译器。如果用它来编译一个简单的c 文件 t e s t c ,查看其输出属性,显示信息如图2 1 : 图2 - 1a r m 格式二进制代码文件信息显示 中南大学硕士学位论文第三章b o o t - l o a d e r 的移植 第三章b o o t - io a d e r 的移植 3 1b o o t - i o a d e r 的意义 r a m 芯片中存储的内容,在断电时就失去了,所以操作系统的映像都是保 存在可以保持内容的磁盘上,在系统启动时再装入内存。操作系统的容量大小以 及位置却又不可能是常数,所以要采取代理的方法,使用所谓的引导程序。 b o o t - l o a d e r 就是这样的一段小程序,它知道操作系统的映像在何处,装入内存并 运行。当然,b o o t - l o a d e r 是在磁盘上,而且位置是固定的。 嵌入式系统中不乏在e p r o m 或f l a s h 芯片存储操作系统映像的例子,而在 此情况下,映像是可能直接就在上面运行,但是b o o t - l o a d e r 程序不会被省略掉, 有以下的几方面原因: a 操作系统的多样性。就像在p c 机上经常出现的情况一样,同一台机器, 可以有不同的操作系统,同类的操作系统之间又有不同版本或同版本的操作系统 又可以编以不同的命名实体而共存。在嵌入式系统的开发阶段,新的操作系统映 像的更新和保存原先的映像的调试需要,却是必不可少的。b o o t - l o a d e r 则提供了 灵活的切换方法。 b 基于调试原理的考虑。断点是考察程序运行状态的最主要方法,但是断点 的工作原理,是将考察点指令换成一条特殊的跳转指令。而在e p r o m 或f l a s h 芯片上面,实现这样的跳转指令的插入和删除是很困难的,这就势必要求映像运 行在r a m 上面。 c 芯片的速度方面,c p u 在e p r o m 或f l a s h 上运行还是要比在r a m 上运行 要慢。另外,操作系统的映像往往是经过压缩的,需要一个解压缩过程才能执行, 其结果就是加重了优先在r a m 上运行的倾向;另外,仍然需要额外的一段程序 来做相应的工作,不可能出现仅有操作系统映像的情况。 3 2b o o t - l o a d e r 介绍 实际上,b o o tl o a d e r 的实现是完全地取决于硬件环境。最普遍的就是目标 板上c p u 体系结构可能不同,比如说e p u 是隶属于a r m 体系或p o w e r p c 体系。 另外可能出现差别的就是具体的嵌入式板级设备的配置。r o m 芯片和r a m 芯 片的大小,地址的安排,更高级别外设的有无,如红外输出端口,音频视频输 出端口。这些都是应不同实际应用需要而在目标板设计中而选择不同。因此,在 现实的嵌入式世界里建立一个“万能”的b o o t 1 0 a d e r 那就是不可能的。正确的学习 方法,就应该是对b o o t 1 0 a d e r 归纳出一些通用的概念和经验来,以指导实现特 1 4 中南大学硕士学位论文第三章b o o t 1 0 a d e r 的移植 定的目标板上运行的b o o t l o a d e r 。 3 2 1b o o t - i o a d o r 的内容 从固态存储设备上启动的b o o t - l o a d e r 大多都是两个阶段的启动过程,即启 动过程可以分为基于特定c p u 体系的汇编语言所写的s t a g el 和基于c 语言所写 的s t a g e2 两部分。通常会包括以下步骤 3 7 1 : 从s t a g e l 第一条指令处开始执行程序。 硬件设备初始化。 准备r a m 空间来加载b o o t - l o a d e r 的s t a g e 2 部分。 拷贝加载b o o tl o a d e r 的s t a g e 2 部分。 设置好堆栈。 跳转至s t a g e 2 的入1 2 1 点,开始执行s t a g e 2 。 初始化本阶段要使用到的硬件设备。 检测系统内存映射。 将内核映像和根文件系统映像从f l a s h 芯片上加载到r a m 空间中。 为内核设置启动参数。 跳转至内核。 3 2 2b o o t - i 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 应该包含两种不 同的操作模式:“启动加载”模式和“下载”模式。启动加载模式即b o o t 1 0 a d e r 从目 标机上的某个固态存储设备上将操作系统加载到r a m 中运行,“下载”模式中 目标板上的b o o t 1 0 a d e r 将通过串口连接或网络连接等通信手段从主机下载文件, 如内核映像和根文件系统映像等。从主机下载的镜像通常首先b o o t 1 0 a d e r 保存 到目标板的r a m 中,然后再被b o o t 1 0 a d e r 写到目标机上的f l a s h 类固态存 储设备中。那么很清楚的是“下载”模式更多的开发人员调试时使用,而第一次安 装内核与根文件系统时候肯定要采用“下载”模式;在产品发布的时候,b o o t - l o a d e r 显然必须工作在“启动加载”模式下,用户并不参与启动的过程。 3 2 3b o o t - l o a d e r 的开发流程 设计a r m 处理器的a r m 公司开发了一套称为a d s 的开发软件。a d s 是 一个相当完备的i d e ,提供了a r m 汇编语言和e 语言的支持,且有良好的开发界 面和

温馨提示

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

评论

0/150

提交评论