(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf_第1页
(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf_第2页
(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf_第3页
(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf_第4页
(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(电力电子与电力传动专业论文)基于嵌入式linux驱动程序的研究与设计.pdf.pdf 免费下载

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

文档简介

a b s t r a c t a b s t r a c t f o rt h ev a r i e t yo fe m b e d d e dd e v i c e ,s p e c i f i cd e v i c ed r i v e rm u s tb ed e s i g n e da n d d e v e l o p e d i na d d i t i o n ,d e v i c ed r i v e rp l a y sav e r yi m p o r t a n tr o l ei nt h ee m b e d d e d s y s t e m s o ,d e v i c ed r i v e rb a s e do ne m b e d d e dl i n u xs y s t e mi sr e s e a r c h e da n dd e s i g n e d i n - d e p t hi nt h i st h e s i s t h eh a r d w a r ep l a t f o r my l p 2 4 10d e v e l o p m e n tb o a r di su s e da s t h et a r g e tm a c h i n ea n dw i n d o w so p e r a t i n gs y s t e m ,v m w a r ev i r t u a lm a c h i n ea n dl i n u x o p e r a t i n gs y s t e ma r eu s e da ss o f t w a r ed e v e l o p m e n tp l a t f o r m i ti sn e c e s s a r yf o rc r e a t i n g c r o s s c o m p i l i n ga n dd e b u g g i n ge n v i r o n m e n td u et or e s e a r c ha n dd e s i g no f d e v i c ed r i v e r t h eh i e r a r c h ya n di m p l e m e n t a t i o nm e c h a n i s mo fl i n u xd e v i c ed r i v e ra r el u c u b r a t e d t h ek e yt e c h n i q u er e l a t i v et ot h el i n u xd e v i c ed r i v e ri n c l u d i n gm e m o r ya n di oa c c e s s , c o n c u r r e n tc o n t r o l ,b l o c k i n ga n dn o n - b l o c k i n ga n di n t e r r u p th a n d i n ga r es t u d i e d t a k ea l e dc h a r a c t e rd r i v e rf o re x a m p l e ,t h ed e s i g no fc h a r a c t e rd e v i c ed r i v e ri se x p l o r e d ,i t s i n f r a s t r u c t u r ei sa c c o m p l i s h e da n dt h ec o n t r o lo fl e d l i g h ti sr e a l i z e du n d e rt h el i n u x o p e r a t i n gs y s t e m f u r t h e r m o r e ,l c dd r i v e rp r o g r a m ma r ed e s i g n e du s i n gf r a m e b u f f e r t e c h n o l o g y , w h i c hc o n t r o ll c dh a r d w a r ec o m p l e t e l ya n di n t e r a c tw i t l lk e r n e l i ti s t e s t e db yt h ea p p l i c a t i o nd i s p l a y i n gac l u s t e ro fc o n c e n t r i cc i r c l e so nt h el c d t h e r e s u l ts h o w st h a tt h el c dd e v i c ed r i v e ri ss t a b l ea n dr o b u s t ,m e e t i n gt h er e q u i r e m e n to f t h ed e v e l o p m e n to ft h eg r a p h i c a lu s e ri n t e r f a c e ,a c h i e v i n gt h ed e s i g ng o a l s k e y w o r d :e m b e d d e d l i n u xd e v i c ed r i v e rf r a m e b u f f e rl c d 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名: 潍日期硷纽毕 西安电子科技大学 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。( 保密的 论文在解密后遵守此规定) 本学位论文属于保密,在年解密后适用本授权书。 本人签名:诗酱娶轧 导师签名: 日期 日期 第一章绪论 第一章绪论 本章简单介绍了嵌入式系统的特点及l i n u x 操作系统,并说明了选择l i n u x 作 为嵌入式操作系统的优势,讨论了目前l i n u x 的研究现状与发展前景以及本课题研 究的重大意义,介绍了论文的章节分配和各个部分的主要内容。 1 1 1 嵌入式系统 1 1研究背景 嵌入式系统( e m b e d d e ds y s t e m ) 可以定义为:以应用为中心、以计算机技术 为基础、软硬件可裁剪、适用于应用系统对功能、可靠性、成本、体积、功耗严 格要求的专用计算机系统【l l 。从上述定义可以看出嵌入式系统是针对特定应用的软 硬件综合体,一般具备以下几方面的特征: 1 嵌入式系统通常是面对用户、面向产品、面向特定应用的; 2 嵌入式系统是先进的计算机技术、半导体技术以及电子技术与各个行业具 体应用相结合的产物; 3 嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、 可靠性、成本、体积等要求; 4 嵌入式系统开发需要专门的开发工具和环境; 5 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在储存 器芯片或单片机中; 1 1 2l i n u x 操作系统 l i n u x 操作系统核心最早是由芬兰的l i n u st o r v a l d s 于1 9 9 1 年9 月在芬兰赫辛 基大学上学时发布的( l i n u x0 0 1 版,第一个正式向外公布的l i n u x 内核版本) , 后来经过众多世界项尖的软件工程师不断修改和完善,l i n u x 得以在全球普及开 来,在服务器领域及个人桌面领域得到越来越多的应用1 2 j 。l i n u x 是在g n u 公共 许可权限下免费获得的,是一款符合p o s i x 标准的多用户、多任务、支持多线程 和多c p u 的类u n i x 操作系统。l i n u x 以其高效性和活跃性著称。l i n u x 模块化的 设计结构,使得它既能够在价格昂贵的工作站上运行又能够在廉价的p c 机上实现 全部的u n i x 特性。l i n u x 当前有很多发行版本,流行的有:r e d h a tl i n u x 、d e b i a n l i n l a x 、r e f l a g sl i n u x 、u b u n t u 等 3 1 。 2 基于嵌入式l i n u x 驱动程序的研究与设计 1 1 3 嵌入式l i n u x 由于集成电路技术的飞速发展,嵌入式系统的开发从单片机时代进入到了一 个“系统 开发的阶段,嵌入式操作系统也逐渐走上了历史舞台。从国内和国外 来看,嵌入式操作系统主要有w i n d o w sc e 、v x w o r k s 、p s o s 、p a l mo s 等。l i n u x 是一个成熟、稳定的操作系统,由于其在嵌入式开发方面具有其它操作系统无可 比拟的优势,经过这几年的发展,已迅速跻身主流嵌入式开发平台。l i n u x 作为嵌 入式操作系统的优势在于【4 】: 1 l i n u x 是开放源代码的免费软件。只要遵守g p l 的规定,就可以免费获得 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 的文档以及强大的技术支持。 3 l i n u x 内核功能强大,性能高效、稳定。l i n u x 的内核非常稳定,它的高效 和稳定性已经在各个领域,尤其是在网络服务器领域得到了事实的验证。 4 l i n u x 能够支持多种体系结构,是支持微处理器种类最多的操作系统。目前, l i n u x 已经被移植到数十种硬件平台上,几乎所有主流的硬件平台,如x 8 6 、a r m 、 p p c 、m i p s 、a l p h a 、s p a r c 等,l i n u x 都支持。 5 l i n u x 拥有强大的网络功能。随着嵌入式系统的发展,嵌入式系统与i n t e m e t 结合得越来越紧密。与其它操作系统相比,l i n u x 在网络方面有较大的优势,基本 上所有的网络协议和网络接口都可以在l i n u x 上找到。 6 l i n u x 大小和功能可定制。l i n u x 继承了u n i x 的优秀设计思想,内核与用户 界面完全独立,各部分的可定制性很强,可以按照需求进行定制和配置,这对于 硬件资源有限的嵌入式系统是一个理想的选择。 1 2目前研究现状及发展前景 嵌入式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 的研究开发主要集中在以下几个方面p j : 实时性:在数据采集、控制、音视频等设备中,对操作系统的实时性有比较 高的要求。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 还没有比较完善的集成开 发环境,特别是基于图形界面的特定系统定制平台的研究与w i n d o w s 操作系统相 比还存在差距。因此,要使嵌入式l i n u x 在嵌入式操作系统领域中的优势更加明显, 整体集成开发环境还有待提高和完善。 如今,人类已经进入了后p c 时代,嵌入式技术已被广泛应用于科学研究、工 程设计、军事技术、以及文艺、商业等方面,成为后p c 时代的主力军。于此同时, 嵌入式l i n u x 操作系统也在嵌入式领域蓬勃发展,它不仅继承了l i n u x 的源码开 放、内核稳定性强、软件丰富等特点,而且还支持几乎所有的主流处理器和硬件 平台【6 】。嵌入式硬件系统和l i n u x 系统的有机结合,成为后p c 时代计算机最普遍 的应用形式。嵌入式l i n u x 技术在中国有巨大的发展潜力和市场需求。有数据显 示,未来两年里,在计算机、消费电子、通信、汽车电子、工业控制和军事国防 这六个主要应用领域,嵌入式l i n u x 产品将达到8 0 亿美元的市场规模。可见这个 行业的前景是非常乐观的。 1 3 研究意义 从国家战略目标与产业发展来看,嵌入式软件特别是嵌入式操作系统是实现 传统制造业转型与提升的关键技术,它对整体提升我国制造业的竞争能力、大幅 度地增强我国软件自主创新能力意义重大。但是我国当前嵌入式系统研究和开发 的整体水平不高,与国际领先水平还有较大的差距,国内的嵌入式设备生产商大 多数还是采用国外的商用嵌入式操作系统。而免费开源的l i n u x 在嵌入式领域的发 展为我国发展自己的嵌入式操作系统,扭转p c 机软件市场的被动局面提供了难得 的机遇,也为振兴国内软件行业找到了最佳的突破口。设备驱动程序在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 设备驱动的研究是一个 很好的课题,具有重要的社会和商业价值。 4 基于嵌入式l i n u x 驱动程序的研究与设计 1 4 论文结构 全文共分七章,具体内容如下: 第一章:绪论。概述了本论文的研究背景,目前现状与发展前景,介绍本文 的主要研究工作。 第二章:a r m 及嵌入式开发平台。本章主要分析了a r m 的特点、工作模式 以及y l p 2 4 1 0 开发板和$ 3 c 2 4 1 0 处理器。 第三章:创建嵌入式l i n u x 软件开发环境。创建交叉编译环境,配置n f s 、 m i n i c o m 服务,为设备驱动程序的开发与调试做好充分的准备工作。 第四章:设备驱动程序关键技术研究。研究了l i n u x 下设备驱动程序的特点、 分类、层次结构、框架、功能和特性等,分析了与l i n u x 设备驱动程序有关的内存 与f o 访问,并发控制,阻塞与非阻塞,中断处理等关键技术。 第五章:字符设备驱动程序设计。本章深入的研究了字符设备驱动程序的编 程方法及其原理,分析了字符设备常用的数据结构和编程的框架,以及用户空间 访问驱动程序的i o c t l 方法,并设计了l e d 驱动程序。 第六章:l c d 与f r a m b u f f e r 驱动程序的研究与实现。本章分析l c d 的硬件 原理与l c d 控制器,深入研究了帧缓冲与l c d 的重要数据结构与关键代码,自 行设计了l c d 驱动程序并对其进行了测试。 第七章:结论与展望。总结了本文的主要工作以及进一步的工作展望。 第二章a r m 及嵌入式开发平台 第二章a r m 及嵌入式开发平台 由于l i n u x 驱动程序是连接上层应用程序与底层硬件的桥梁,所以有必要理解 它所运行的硬件平台,这对l i n u x 驱动程序的设计很有帮助。因此,本章将介绍相 关的硬件平台。 2 1a r m 处理器 a r m ( a d v a n c e dr i s cm a c h i n e s 的缩写) 是一种3 2 位的r i s c ( r e d u c e d i n s t r u c t i o ns e tc o m p u t e r ) 处理器的通称,也是目前非常流行的一类嵌入式处理器。 1 9 9 1 年a r m 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用 a r m 技术知识产权核的微处理器,已遍及工业控制、消费电子产品、通信系统和 无线系统等各类产品市场,基于a r m 技术的微处理器的应用大约占据了3 2 位的 r i s c 微处理器7 5 以上的市场份额,a r m 技术正在逐步渗入到我们生活的各个 方面1 7 ,引。 2 1 1a r m 处理器的特点 a r m 处理器的广泛应用,来自于a r m 处理器自身的优良性能。a r m 处理器 有如下特点【9 】: 1 小体积、低功耗、低成本、高性能。 2 支持t h u m b ( 1 6 位) a r m ( 3 2 位) x 2 指令集。 3 大量使用寄存器,指令执行速度更快。 4 大多数数据操作都在寄存器中完成。 5 寻址方式灵活方便,执行效率高。 6 指令长度固定。 2 1 2a r m 处理器工作状态 a r m 约定,a r m 指令为3 2 位指令,字为4 个字节( 即3 2 b i t s ) ,半字为2 个 字节( 1 6 b i t s ) ,一个字节为8 b i t s 。从编程的角度看,a r m 微处理器的工作状态一般 有两种,并可在两种状态之间切换。第一种为a r m 状态,此时处理器执行3 2 位 的字对齐的a r m 指令。第二种为t h u m b 状态,此时处理器执行1 6 位的,半字对 齐t h u m b 指令。当a r m 微处理器执行3 2 位的a r m 指令集时,工作在a r m 状 态:当a r m 微处理器执行1 6 位的t h u m b 指令集时,工作在t h u m b 状态。在程 序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工 6 基于嵌入式l i n u x 驱动程序的研究与设计 作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。 状态切换方法:a r m 指令集和t h u m b 指令集均有切换处理器状态的指令,并 可在两种工作状态之间切换。但a r m 微处理器在开始执行代码时,应该处于a r m 状态。进入t h u m b 状态:当操作寄存器的状态位( 位0 ) 为1 时,可以采用执行b x 指令的方法,使微处理器从a r m 状态切换到t h u m b 状态。当处理器处于t h u m b 状态时发生异常( 如i r q 、f i q 、u n d e r , a b o r t 、s w i 等) ,则异常处理返回时,自 动切换到t h u m b 状态。进入a r m 状态:当操作数寄存器的状态为o 时,执行b x 指令可以使微处理器从t h u m b 状态切换到a r m 状态。此外,在处理器迸行异常 处理时,把p c 指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序, 也可以使处理器切换到a r m 状态。 2 1 3a r m 处理器模式 a r m 处理器支持7 种运行模式,分别如- f 1 0 】: 1 用户模式( u s 0 : 2 快速中断模式( f i q ) : 3 夕f 、部中断模式( i 咖: 4 管理模式( s v c ) : 5 数据访问终止模式( a b 0 : a r m 处理器正常的程序执行状态。 用于高速数据传输或通道处理。 用于通用的中断处理。 操作系统使用的保护模式,当复位或者软中断指令 执行时就会进入此模式。 当数据或指令欲取终止时进入该模式,可用于虚拟 存储及存储保护。 6 系统模式( s y s ) : 运行具有特权的操作系统任务。 7 未定义指令中止模式( u i l d ) :当未定义的指令执行时进入该模式,可用于支持 硬件协处理器的软件仿真。 a r m 微处理器的运行模式可以通过软件改变,也可以通过外部中断或者异常 处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下的 时候,某些被保护的系统资源是不能被访问的。除用户模式外,其余的6 种模式 称为非用户模式或者特权模式( p r v i l g e d e dm o d e s ) ,其中除去用户模式和系统模式 外的5 种又称为异常模式( e x c e p t i o nm d o e s ) ,每种异常模式都对应处理其相应的 异常类型发生的情况,就是专门用来处理异常所用的工作模式,或者用来处理需 要访问受保护的系统资源等情况。 第二章a r i d 及嵌入式开发平台 7 2 2y l p 2 4 1 0 嵌入式开发平台分析 2 2 1y l p 2 4 1 0 开发板 y l p 2 4 1 0 开发板是深圳优龙公司推出的嵌入式开发平台。该平台采用了基于 a r m 9 架构的嵌入式芯片s 3 c 2 4 1 0 a ,在尽可能小的电路板面积上集成了6 4 m s d r a m 、6 4 mn a n d f l a s h 、以太网卡、音频输入与输出、u s b h o s t 、u s b s i a v e 、 标准串口、液晶显示屏、触摸屏、调试口、红外通信收发器、a ,d 和d a 转换模 块、各种卡插座( s d m m c 卡、i d e 硬盘) 、用户按键和指示灯等丰富的硬件资源, 并且引出c p u 的5 0 根信号引脚,作为u s e r 接口以便用户进行硬件扩展【1 1 1 。 2 2 2s 3 c 2 4 1 0 处理器 $ 3 c 2 4 1 0 是韩国三星公司的一款基于a r m 9 2 0 t 内核的1 6 3 2 位砒s c 嵌入 式微处理器,主要面向手持设备以及高性价比、低功耗的应用。运行的频率可以 达到2 0 3 m h z 。a r m 9 2 0 t 核由a r m 9 t d m i 、存储管理单元( m m u ) 和高速缓存 三部分组成。其中m m u 可以管理虚拟内存,高速缓存由独立的1 6 k b 地址和1 6 k b 数据高速c a c h e 组成。删9 2 0 t 有两个协处理器:c p l 4 和c p l 5 。c p l 4 用于 调试控制,c p l 5 用于存储系统控制以及测试控制。其内核结构如图2 1 所示【1 2 】: 图2 1a r m 9 2 0 t 内核结构图 $ 3 c 2 4 1 0 a 内部结构较复杂,提供可扩展的功能模块较多,主要有a r m 9 2 0 t 内核( 1 6 3 2b i tr i s cc p u ) ,独立的1 6 k b 指令和1 6 k b 数据缓存,m m u 虚拟内存 管理单元,l c d 控制器( 支持s t n 和t f t ) ,n a n df l a s h ,系统管理单元( s d r a m 控制器) ,3 通道u a r t ,4 通道d m a ,4 通道具备p w m 功能的定时器,i o ,r t c ( 实 时时钟) ,8 通道1 0b i t 精度a d c 和触摸屏控制器,i i c 总线接口,i i s 数字音频总 8 基于嵌入式l i n u x 驱动程序的研究与设计 线接口,u s b 主机,u s b 设备,s d m m c 卡控制器,2 通道s p i 和p l l 数字锁相 环组成。其内部结构如图2 2 所示: l c dl c dl 肛a i 龇l 弧l 广叫 l 瞒附溉l 臣田 i 删? 竺稚j b 出 i l - 炳”,i l 嘲i 筒 p l 一陋 力 i 繁田旧 8 n i t l 、广y “ l 麓戮i s l m a 浊i 、r 1 , f 嗣”崎 图2 2s 3 c 2 4 1 0 扩展模块框图 $ 3 c 2 4 1 0 集成了一个具有日历功能的r t c 和具有p l l ( m p l l 和u p l l ) 的 芯片时钟发生器。m p l l 产生主时钟,能够使处理器工作频率最高达到2 0 3 m h z 。 $ 3 c 2 4 1 0 将系统的存储空间分为8 组( b a n k ) ,每组的大小是1 2 8 m b ,共1 g b 。 b a n k 0 到b a n k 5 的开始地址是固定的,用于r o m 或s r a m 。b a n k 6 和b a n k 7 用 于r o m ,s r a m 或s d r a m ,这两个组可编程且大小相同。b a n k 7 的开始地址是 b a n k 6 的结束地址,灵活可变。所有内存块的访问周期都可编程。$ 3 c 2 4 1 0 采用 n g c s 7 :0 通用片选信号选择这些组。$ 3 c 2 4 1 0 支持从n a n df l a s h 启动, n a n df l a s h 具有容量大,比n o rf l a s h 价格低等特点。系统采用n a n df l a s h 与s d r a m 组合,可以获得非常高的性价比。$ 3 c 2 4 1 0 具有三种启动方式,可以通 过o m 1 :o 】管脚进行选择: o m 1 :o = o o 时处理器从n a n df l a s h 启动; o m 1 :0 = 0 1 时处理器从1 6 位宽的r o m 启动; o m 1 :0 = 1 0 时处理器从3 2 位宽的r o m 启动。 图2 3 为s 3 c 2 4 1 0 复位后,分别从n a n df l a s h 启动和不从n a n df l a s h 启动的内 存映射图: 口口曰曰田回 国圈固匡 第二章a r m 及嵌入式开发平台 锄曲p9 0 啼 花肇 1g 翰m 啪s r c 翱臂s 朗函研孽删删 夏鲰n 嘲s 删f u r d mr 羁咖 图2 3s 3 c 2 4 1 0 复位后内存映射 用户可以将引导代码和操作系统镜像存放在外部的n a n df l a s h 中,并从 n a n d f l a s h 启动。当处理器在这种启动模式下复位时,内置的n a n df l a s h 将访 问控制接口,并将代码自动加载到内部s r a m ( 此时该s r a m 定位于起始地址空 间0 x 0 0 0 0 0 0 0 0 ,容量为4 k b ) 并且运行。之后,s r a m 中的引导程序将操作系统 镜像加载到s d r a m 中,操作系统就能够在s d r a m 中运行。启动完毕后,4 k b 的启动s r a m 就可以用于其它用途。如果从其它方式启动,启动r o m 就要定位 于内存的起始地址空间0 x 0 0 0 0 0 0 0 0 ,处理器直接在r o m 上运行启动程序,而4 k b 启动s r a m 被定位于内存地址的o x 4 0 0 0 0 0 0 0 处。 2 3 本章小结 本章重点分析了y l p 2 4 1 0 开发板的特点,a r m 处理器的特点、工作状态以及 各种模式,研究了$ 3 c 2 4 1 0 处理器的内部结构与外部扩展模块,并分析了$ 3 c 2 4 1 0 的两种启动模式。 第三章创建嵌入式l i n u x 软件开发环境 l l 第三章创建嵌入式l i n u x 软件开发环境 与w i n d o w s 下的程序设计不同,l i n u x 没有提供现成的软件开发集成环境,这 就需要自己创建软件开发环境,来完成程序的编辑、编译、链接到最后可执行代 码的运行。本章将逐步创建l i n u x 软件开发环境。 3 1 l i n u x 软件开发环境 l i n u x 开发环境有以下3 种组合方式:其一,w m d o w $ 操作系统+ c y g w i n 工具; 其二,w i n d o w s 操作系统+ v m w a r e 工具+ l i n u x 操作系统;其三,l i n u x 操作系统+ 自带的开发工具。对于第一种组合方式,由于c y g w i n 仅仅是一个w i n d o w s 平台 下的l i n u x 模拟环境,与真实的l i n u x 环境还存在很大差别,有很多局限性。第三 种组合方式是最完整最全威的l i n u x 系统开发方式,但是对于习惯w i n d o w s 系统 的l i n u x 初学者来说比较困难。因此,本文选用第二种组合方式,其中v m w a r e 工具用的是v m w a r ew o r k s t a t i o n5 5 3 版本,l i n u x 操作系统为r e d h a t ( 2 4 2 0 8 的内核) ,v m w a r e 是一个“虚拟机”软件。它可以在一台机器上同时运行二个或更 多的操作系统。与“多启动”系统相比,v m w a r e 采用了完全不同的概念。多启动系 统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。v m w a r e 是 真正“同时”运行多个操作系统,在主系统平台上,系统切换就像w o r d e x c e l 应用 程序那样切换。这种组合对于实际开发应用来说比较广泛,因为在v m w a r e 工具 中可以安装l i n u x 系统,可以完全实现l i n u x 系统开发,几乎和在真正的l i n u x 下 开发没有什么区别,并且其最大的好处是在l i n u x 系统和w i n d o w s 系统之间切换 非常方便。并且在v m w a r e 下配置共享文件夹,可以很方便的实现l i n u x 系统和 w i n d o w s 系统之间数据的共享。 3 2 1交叉编译 3 2 创建交叉编译工具链 交叉编译是在一个平台上生成另一个平台上的可执行代码。交叉编译是嵌入 式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在 本机编译生成,而是由另一台机器编译生成。一般把前者成为目标机,后者称为 宿主机,见图3 1 。采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供 足够的资源供编译过程使用,因而只好将编译工程转移到高性能的宿主机中进行。 因此硬件需要目标板和p c 机,软件上需要与目标板平台兼容的编译工具包下载并 且安装、编译目槲j 。 1 2 基于嵌入式l i n u x 驱动程序的研究与设计 图3 1 交叉编译图 3 2 2 创建a r ml i n u x 交叉编译工具链 构建交叉编译工具链有3 种方法。方法一,分步编译和安装交叉编译工具链 所需要的库和源代码,最终生成交叉编译工具链。该方法比较困难,适合想深入 学习构建交叉工具链的人。方法二,通过c r o s s t o o l 脚本工具来实现一次编译生成 交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也会非常少。 方法三,直接通过网上下载已经制作好的交叉编译工具链。该方法的优点是简单 省事,但毕竟是别人构建好的并不一定适合所要编译的程序,也许会出现许多莫 名奇妙的错误。所以本文选用方法二构建交叉编译工具链。 c r o s s t o o l 是一组脚本工具集,可构建和测试不同版本的g c c 和g l i b c ,用于那些 支持g l i b c 的体系结构。用c r o s s t o o l - f 具构建所需资源如表3 1 所示。 安装包下载地址 c r o s s t o o l 一0 4 2 t a r g zh t t p :k e g e l c o m c r o s s t o o l l i n u x 一2 6 10 t a r g z f t p k e r n e l o r g b i n u t i l s 2 15 t a r b z 2 f t p g n u o r g g c c 一3 3 6 t a r g z卸g n u o r g g l i b c - 2 3 2 t a r g zf t p g n u o r g 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 n u o r g l i n u x l i b c h e a d e r s 2 6 12 0 t a r b z 2 f t p g n u o r g 表3 1 构建交叉编译工具链所需资源 创建a r ml i n u x 交叉编译工具链的过程如下: 1 准备资源文件: 首先从网上下载这些资源文件,然后将这些工具包文件放在新建的h o m e c y p 目录 下,最后在该目录下解压c r o s s t 0 0 1 0 4 2 t a r g z ,命令如下: 拌c d h o m e c y p 孝t a r - x z v f c r o s s t o o l 0 4 2 t a r g z 2 建立脚本文件: 建立自己的编译脚本,起名为a r m l i n u x s h ,为了简化编写a r m l i n u x s h ,寻找一个最 第三章创建嵌入式l i n u x 软件开发环境 1 3 接近的脚本文件d e m o a r n l s h 作为模板,然后将该脚本的内容复制到a r m l i n u x s h , 修改a r m l i n u x s h 脚本,具体操作如下: 撑e dc r o s s t 0 0 1 0 4 2 撑c pd e m o a r m s h a r m l i n u x s h 舟v ia r m l i n u x s h 修改后的a r m l i n u x s h 脚本内容如下: 拌! b i i l s h s e t - e x t a r b a l l sd i r = h o m e c y p 拌定义工具链源码所存放的位置 r e s u l t 群定义工具链的安装目录t o p = o p t c r o s s t o o l e x p o r tt a r b a l l s d i rr e s u l t ,t o p g c cl a n g u a g e s = ”c 。c + + ”撑定义支持c ,c + + 语言 e x p o r tg c c - l a n g u a g e s r n k d i r p $ r e s u l tt o p存创建o p t c r o s s t o o l 目录 群编译工具链,该过程需要数小时完成。 e v a l c a ta l t n d a tg c c - 3 3 6 - g l i b c - 2 3 2 d a t 、s ha 1 1 s h 一一n o t e s t e c h od o n e 3 建立配置文件: 在a r m l i n u x s h 脚本文件中需要注意a l x l l d a t 和g c c - 3 3 6 - g l i b e 一2 3 2 d a t 两个文件, 这两个文件是作为c r o s s t o o l 的编译的配置文件。其中a r m d a t 文件的内容如下,主 要用于定义配置文件、定义生成编译工具链的名称以及定义编译选项等。 k e r n e l c o n f i g = p w d 、a r m c o n f i g 撑内核的配置 t a r g e t = a r m 1 i n u x存编译生成的工具链名称 t a r g e t c f l a g s = - o ” 稃编译选项g e c - 3 3 6 一g l i b e - 2 3 2 d a t 文 件内容如下,该文件主要定义编译过程中所需要的库以及它定义的版本。 b i n u t i l s d i r = b i n u t i l s 一2 1 5 g c c _ d i r = g c c 3 3 6 g l i b c _ d i r = g l i b c 一2 3 2 g l i b c t h r e a d s _ f i l e n a m e = g l i b c - l i n u x t h r e a d s - 2 3 2 l i n u x d i r = l i n u x - 2 6 10 l i n u xs a n i t i z e dh e a d e rd i r = l i n u x 1 i b e h e a d e r s 2 6 1 2 0 4 执行脚本文件: 将c r o s s t o o l 的脚本和配置文件准备好之后,开始执行a r m l i n u x s h 脚本来编译工具。 具体执行命令如下: 群c dc r o s s t 0 0 1 0 4 2 基于嵌入式l in u x 驱动程序的研究与设计 # a r m l i n u xs h 经过数小时漫长编译之后,会在,o p 讹r 0 鹞t o o i 目录下生产新的交叉编译工具其中 包括以下内容: 一l i n u x a d d r 2 1 i n e a n n - l i n u x g a n n l i n u x i da r m - l i n u x s i z e a r m l i n u x - a r a r m - l i n u x - g c ca r m l i n u x - n ma r m - l i n u x s t r i n g s a r m l i n u x a sa r m - l i n u x - g c c - 336a r m - l i n u x o b j c o p ya r i i l - l i a u x - s t r l p a r m - l i n u x - c + + a r m - l i n u x g c c b u g a r m - l i n u x - o b j d u m pf i x - e m b e d d e d - p a t h s a i i n l i n u x _ c + + n i t a r m - l i a u x - g c o v a r m l i n u x - r a n i b a r m - i i n u x - c p p a r m - l i n u x - g p r o f a r m l i n u x - r e a d e l f s 添加环境变量: 将产生的编译工具链路径添加到环境变量p a t h 上去,添加的方法是在系统 e t c b 雏h r c 文件的塌后添加下面一行: e x p o r t p a t h = o p t c r o s s t o o l g c e 一336 一g l i b c 一2 32 a r m - l i n u x b i n :$ p a t h 设置完环境变量,也就意味着交叉编译工具链已经构建完成。 3 3m i n c o m 配置 嵌入式系统开发的程序是在硬件开发板上运行的,可以通过串口线将其运行 信息输出到宿主机的显示器上,这样可以监控目标机的运行状态。l i n u x 下的 m i n i c o m 功能与w i n d o w s 下的超级终端功能相似。m i n i c o m 是一个界面好,并且容 易使用的串口通信程序,利用它可以很方便地对串行端口监控,是嵌入式l i n i i x 开 发环境中非常重要的一个组成部分。其配置步骤如下: 1 在命令行中键八“m i n i c o m ”,雇动m i n i c o m 软件。m m i c o m 在启动时默认 会进行初始化配置,如图32 所示: 圉32m i t x i g o m 暂 始化界面 2m i n i c o m 启动后先按c t r + a 键,再按z 键。按0 键进入配置界面( 见 第三章创建嵌 式l i n u x 软件开发环境 图33 ) 按上下键选择s e r i a lp o r ts e t u p ,进入端口设置界面,这里有几个重要选项 改为如下值: a s e n 甜d e v i c e d e v t t y s o( 端口号使用串口1 ) e - - b s p p a r b i t s 1 1 5 2 0 0 8 n i ( 波特率) f 、e 硬件流、软件流都改为n o 。 图33m i n i e o m 配置 3 配置正确后,键入回车返回上级配置界面,并将其保存为默认配置,如图 3 4 所示。之后,可重新启动n l i n i c o m 使刚才配置生效,再连上开发板的串口线之 后,就可在m i n l

温馨提示

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

评论

0/150

提交评论