(计算机应用技术专业论文)基于arm的嵌入式系统驱动程序设计.pdf_第1页
(计算机应用技术专业论文)基于arm的嵌入式系统驱动程序设计.pdf_第2页
(计算机应用技术专业论文)基于arm的嵌入式系统驱动程序设计.pdf_第3页
(计算机应用技术专业论文)基于arm的嵌入式系统驱动程序设计.pdf_第4页
(计算机应用技术专业论文)基于arm的嵌入式系统驱动程序设计.pdf_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

摘要 本论文研究了嵌入式系统的体系结构和发展状况,对a r m 处理器的工作模 式、寄存器的设置和分配进行了研究,同时对于微处理器$ 3 c 2 4 1 0 进行了分析和 讨论。 论文在研究了嵌入式l i n u x 操作系统内核的同时,重点分析了本研究中用到 的嵌入式l i n u x 操作系统a r ml i n u x 。研究了在微处理器$ 3 c 2 4 1 0 上实现内存管 理、进程调度、中断处理和系统调用的机制。并且研究了嵌入式l i n u x 设备驱动 程序的特点、层次结构、框架、功能,对l i n u x 下的设备驱动程序的基本理论进 行了详细地分析。在研究s a m s u n g 公司$ 3 c 2 4 1 0 芯片的基础上,在$ 3 c e b 2 4 1 0 开发板上进行了a r ml i n u x 系统的移植研究工作。最后实现嵌入式l i n u x 操作系 统下u s b 设备的驱动程序的编程设计。 关键词:嵌入式系统设备驱动程序嵌入式l i n u x $ 3 c 2 4 1 0 a b s t r a c t t h i sp a p e rh a ss t u d i e dt h ee m b e d d e ds y s t e m sa r c h i t e c t u r ea n dd e v e l o p m e n ts t a t u s ,t h e o p e r a t i o nm o d e l ,t h e s c t i n ga n dd i s t r i b u t i n go fr e g i s t e r i na r mp r o c e s s o rh a v ea l s ob e e n s t u d i e d ,e m b e d d e ds y s t e mm i c r o p r o c e s s o rs a m s u n g $ 3 c 2 4 1 0h a sb e e na n a l y z e da n dd i s c u s s e d t h i sp a p e rh a sa n a l y s z e dt h ek e r n e lo f t h ee m b e d d e dl i n u x t h ee m p h a s e so f t h es t u d yp u to n e m b e d d e dl i n u xo p e r a t i o ns y s t e ma r ml i n u xw h i c hi sa p p l i e db yt h i ss u b j e c t t h er e s e a r c ho n m i c r o p r o c e s s o r $ 3 c 2 4 1 0i n c l u d e s r e a l i z a t i o no fe m sm e m o r y , p r o c e s ss c h e d u l i n g , i n t e r r u p t d i s p o s a l a n ds y s t e mc a l lm e c h a n i s m t h eb a s i cp r i n c i p l eo fl i n u xd e v i c e d r i v e r st h e c h a r a c t e r , a r c h i t e c t u r e ,f u n c t i o no ft h el i n u xd e v i c ed r i v e r sa l ea l ld e s c r i b i n gh e r e o nt h eb a s i so f r e s e a r c ho ns a m s a n g $ 3 c 2 4 1 0c h i p ,t r a n s p l a n t i n ga r ml i n u xi n $ 3 c e b 2 4 1 0b l o c kh a sb e e n d o w n l o a d e d ,w h i c hi n c l u d el i n u xk e r n e lt r a n s p l a n t i n g , a m e n d i n gf i l es y s t e m s f i n a l l yt h eu s b d r i v e rp r o g r a mi sr e a l i z e di nl i n u x k e y w o r d :e m b e d d e ds y s t e m d e v i c ed r i v e r se m b e d d e dl i n u x $ 3 c 2 4 1 0 创新性声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:生垒笛日期丝1 2 :! 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。( 保密的 论文在解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名:越冯 新躲垃 日期趟盟 :歹 日期三! ! z :! ! f 第一章绪论 第一章绪论 当前嵌入式系统的应用得到了高速的发展,基于嵌入式系统的各种应用已经 逐步进入人们的生活之中。在消费电子及企业计算市场,对嵌入式系统的需求从 来都未像今天这般为i t 业所重视。从掌上电脑、软交换机到即插即用的电子邮件 服务器,我们可以深切地感受到i t 产品市场正面临着这样三个互相关联的机遇: 下一代互联网的自主运算趋势;企业对i t 解决方案后台化、简单化的诉求;消费 者期待网络功能强大、简单易用、扩展方便、稳定低耗的下一代手持计算设备。 这三方需求正在拉动一个以消费电子设备、自主计算网络部件和功能服务器等产 品为代表的全新嵌入式系统及相关产品、解决方案市场快速产生。 1 1 嵌入式系统发展概况 2 0 世纪7 0 年代单片机的出现,标志着嵌入式系统的诞生。之后嵌入式技术 的发展经历了s c m 、m c u 、s o c 三个阶段。s c m 即单片微型计算机( s i n g l ec h i p m i c r o c o m p u t e r ) 阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。 “创新模式”获得成功,奠定了s c m 与通用计算机完全不同的发展道路。m c u 即 微控制器( m i c r oc o n t r o l l e ru n i t ) 阶段,主要的技术发展方向是:不断扩展满足 嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化 控制能力。它所涉及的领域都与对象系统相关。当前随着微电子技术、i c 设计、 e d a 工具的发展,基于s o c ( s y s t e mo nc h i p ) 的应用系统设计再次地推进了嵌入 式软件与硬件系统进一步融合嵌入,嵌入式软件是其灵魂与核心。 早期的嵌入式应用即单片机只是使用8 位的芯片执行一些单线程的程序,不 存在进程及内存管理等方面的问题,只能完成比较简单功能的操作。2 0 世纪8 0 年代出现商业级的嵌入式“操作系统”,并在其上编写嵌入式应用软件。1 9 8 1 年, r e a d ys y s t e m 开发出世界上第一个商业嵌入式实时内核( v t r x 3 2 ) 。2 0 世纪9 0 年代以后,出现实时多任务操作系统( r ! i o s ) ,并作为一种软件平台逐步成为目 前国际嵌入式系统的主流。 由于在过去的十多年里,计算机产业不断朝着更小的系统方向发展,嵌入式 系统也与之一起为这些小型机器提供了更多的功能。嵌入式系统是当前计算机单 板级系统开发的热点,而嵌入式操作系统作为嵌入式系统的软件核心也相应的得 到了迅速的发展。要开发一个嵌入式系统,要求从系统的角度着手,需要软硬件 人员协同工作。 基于a r m 的嵌入式系统驱动程序设计 在硬件方面,嵌入式系统的核心部件是各种类型的嵌入式处理器。目前全世 界嵌入式处理器的品种总量已经超过1 0 0 0 多种,流行体系结构有3 0 几个系列。 上市的c p u 供应商,m o t o r o l a 、i n t e l 、a m d 等都开始生产性能优秀的嵌入式微 处理器。还有一些公司,如a r m 、m i p s 等厂商,只设计但并不生产c p u ,他们 把生产权授予世界各地的半导体制造商。其中,a r m 系列的处理器由于各种优 点,是近年来在嵌入式系统方面最具有影响力的微处理器。a r m 的设计非常适 用于小的电源供电系统。除了大量的数字无线电话在使用a r m 外,a r m 还应用 于一些小型专用系统中。目前a r m 系列的微处理器已经在占据了国内和国外的 很大一部分市场,应用非常广泛。 在软件方面,操作系统是嵌入式系统一个非常重要的组成部分。在上个世纪 9 0 年代,陆续出现了一些非常优秀的实时多任务的操作系统,目前应用最广的几 个嵌入式操作系统为嵌入式l i n u x 、v x w o r k s 、w i n d o w sc e 等,嵌入式l i n u x 操 作系统因其价格低廉、功能强大又易于移植的特性而正在被广泛采用。在嵌入式 l i n u x 操作系统当中,驱动程序的设计开发的重要性已经越来越明显,各个半导 体厂商以及操作系统厂商纷纷开发设计在l i n u x 下的设备驱动程序。 当前嵌入式系统主要的技术热点包括嵌入式操作系统、系统芯片设计、应用 软件开发和嵌入式内容服务。而嵌入式驱动程序设计则属于嵌入式操作系统设计 的部分。 1 2 课题研究的目的和意义 由于嵌入式系统是根据应用而采用不同的硬件环境,所以针对不同的硬件设 备大量不同的驱动程序被运用到系统之中。本论文所研究的就是在基于某种硬件 环境的驱动程序设计及实现。由于驱动程序是属于嵌入式操作系统内核代码的一 部分,研究驱动程序的基本原理和工作流程对理解嵌入式l i n u x 内核的进程调度 和中断机制都有很大帮助。 本文在s a m s u n g 公司$ 3 c 2 4 1 0 处理器为核心的嵌入式开发板上,研究设计了 u s b 和网络适配器( 即网卡) 的驱动程序,并实现了其在开发系统中的移植实现, 为实际的嵌入式系统驱动程序开发提供了一些解决方案。 1 3 本文的工作内容 论文研究的主要内容分为三个部分。 第l 部分包括第2 章和第3 章。第2 章介绍了嵌入式系统的基本概念、特点 和应用领域;a r m 类处理器的体系结构;基于a r m 架构的$ 3 c 2 4 1 0 处理器构 第一章绪论 成的硬件平台$ 3 c e b 2 4 1 0 的框架等,第3 章主要研究了嵌入式操作系统l i n u x 下 设备驱动程序设计的基本原理并详细的分析了a r ml i n u x 的工作机制,详细介绍 了a r ml i n u x 中的中断处理和内存管理的实现过程 第2 部分是l i n u x 操作系统的移植。介绍了如何把a r ml i n u x 移植到 $ 3 c e b 2 4 1 0 的过程,其中包括开发环境的搭建、启动程序的构建、内核的移植、 文件系统的搭建以及移植后系统初始化的工作实现。 第3 部分介绍了在现有硬件环境中的两个驱动程序开发过程和实现。 第二章嵌入式系统及a r m 概述 5 第二章a r m 概述及硬件资源介绍 嵌入式系统总体上可以划分成硬件和软件两部分。硬件一般由高性能的微处 理器和外围接口电路组成,软件一般由实时操作系统和其上运行的应用软件构成, 软件和硬件之间由中间层连接。嵌入式处理器的类型很多,对嵌入式系统的研究, 不仅需要了解基本概念、基本原理,还需要确定研究的处理器类型。本章将从嵌 入式系统的基本概念、特点和目前应用广泛的a r m 体系架构的处理器及嵌入式操 作系统等多个方面进行初步的研究。 2 1 a r m 处理器的介绍 2 1 1a r m 处理器的工作模式和异常处理机制 a r m ( a d v a n c e dr i s cm a c h i n e s ) 是一个公司的名字,它于1 9 9 0 年1 1 月在英 国剑桥成立,前身为a c o r n 计算机公司,该公司当前主要是出售芯片技术授权。 它主要设计a r m 系列r i s c 处理器内核,也授权a r m 内核给生产和销售半导体的合 作伙伴,另外也提供基于a r m 架构的开发设计技术。如软件工具、评估板、调试 工具、应用软件、总线架构和外围设备单元等等。现在a r m 被普遍认为是对一类 微处理器的通称,a r m 的3 2 位体系结构目前被公认是业晃领先的3 2 位嵌入式r i s c 微处理器结构。 a i i m 微处理器支持7 种运行模式,分别如下: 用户模式( u s r ) :a r m 处理器正常的程序执行状态。 快速中断模式( f i q ) :用于高速数据传输或者通道处理。 外部中断模式( i r q ) :用于通用的中断处理。 管理模式( s v c ) :操作系统使用的保护模式,当复位或者软中断指令执行的 时候就会进入此模式。 数据访问中止模式( a b t ) :当数据或指令预取中止时进入此模式,可用于 虚拟存储及存储保护。 未定义指令中止模式( u n d ) :当未定义的指令执行的时候进入该模式,可 用于支持硬件协处理器的软件仿真。 系统模式( s y s ) :运行具有特权的操作系统任务。 a r m 微处理器的运行模式可以通过软件改变,也可以通过外部中断或者异 常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下 的时候,某些被保护的系统资源是不能访问的。除用户模式外,其余的5 种模式 6 基于a r m 的嵌入式系统驱动程序设计 称为非用户模式或者特权模式( p r i v i l e g e dm o d e s ) ,其中除去用户模式和系统模 式外的5 种又称为异常模式( e x c e p t i o nm o d e s ) ,每种异常模式都对应处理其相 应的异常类型发生的情况,就是专门用来处理异常所用的工作模式,或者用来处 理需要访问受保护的系统资源等情况。 a r m 约定,a r m 指令都为3 2 位的指令,字为4 个字节( 即3 2b i t s ) ,半字 为2 个字节( 1 6b i t s ) ,一个字节为8b 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 状态。在程序的执行过程中,微 处理器可以随时在两种工作状态之间切换,并且,处理器的工作状态的转变并不 影响处理器的工作模式和相应寄存器中的内容。 a r m 指令集和t h u m b 指令集均有切换处理器状态的指令,并可在两种工作状 态之间切换,但a r m 微处理器在开始执行代码时,应该处于a r m 状态。进入t h u m b 状态:当操作寄存器的状态位( 位o ) 为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 f 、a b o r t 、s w i 等) ,则异常处理返回时,自动切换到 t h u m b 状态。 进入a r m 状态:当操作数寄存器的状态为0 时,执行b x 指令可以使微处理器 从t h u m b 状态切换到a r m 状态。此外,在处理器进行异常处理时,把p c 指针放入 异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换 到a r m 状态。 当正常的程序执行流程发生暂时的停止时,称之为异常( e x c e p t i o n s ) 。可 见,a r m 体系结构中异常的概念类似于我们通常说的中断的概念。在处理异常之 前,当前处理器的状态必须保酲,这样当异常处理完成之后,当前程序可以继续 执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 a r m 体系结构目前只支持7 种异常类型,它们按优先级从高到低依次为: ( 1 ) ;复位:当处理器的复位电平有效的时候,产生复位异常,程序跳转到 复位异常处理程序执行。其进入的处理器模式为管理模式,其异常向量的地址为: o x 0 0 0 0 ,0 0 0 0 。 ( 2 ) :数据中止:若处理器数据访问指令的地址不存在,或该地址不允许当 前指令访问时,产生数据中止异常。其进入的处理器模式为数据访问中止模式。 其异常向量的地址为:o x 0 0 0 0 ,0 0 1 0 。 ( 3 ) :f i q ( 快速中断请求) :当处理器的快速中断请求引脚有效,且c p s r 第二章嵌入式系统及a r m 概述 7 中的f 位为0 的时候,产生f i o 异常。其进入的处理器模式为f i q 模式,其异常 向量的地址为:o x 0 0 0 0 ,0 0 1 c 。 ( 4 ) :i r q ( 外部中断请求) :当处理器的外部中断请求引脚有效,且c p s r 中的i 位为0 的时候,产生i r q 异常,系统的外部设各可通过该异常请求中断服 务。其进入的处理器模式为i r q 模式,其异常向量的地址为:o x 0 0 0 0 ,0 0 1 8 。 ( 5 ) :指令预取中止:若处理器预取指令的地址不存在,或该地址不允许当 前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行的时候, 才会产生指令预取中止异常。其进入的处理器模式为数据访问中止模式。跟数据 中止异常产生进入的模式一样,其异常向量的地址为:o x 0 0 0 0 ,0 0 1 0 。 ( 6 ) :未定义指令中止:当a r m 处理器或协处理器遇到不能处理的指令时, 产生未定义指令异常,可使用该异常机制进行软件防真。其进入的处理器模式就 是未定义指令中止模式,其异常向量的地址为:o x 0 0 0 0 ,0 0 0 4 。 ( 7 ) :软件中断:该异常由执行s w i 指令产生,可用于用户模式下的程序调 用特权操作指令,可使用该异常机制实现系统功能调用。其进入的处理器模式为 管理模式,其异常向量的地址为:o x 0 0 0 0 。0 0 0 8 。 当系统运行的时候,异常随时可能会发生,当一个异常出现后,a r m 微处理 器会执行以下几步操作: ( 1 ) :将下一条指令的地址存入相应的连接寄存器l r ,以便程序在处理异 常返回的时候能从正确的位置重新开始执行。若异常是从a r m 状态进入,l r 寄存 器中保存的是下一条指令的地址,若异常是从t h u m b 状态进入,则在l r 寄存器中 保存当前p c 的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入 的。注意,t h u m b 状态下的时候,当异常向量地址加载入p c 时,处理器自动切换 到a r m 状态。 ( 2 ) :将c p s r 复制到相应的s p s r 中。 ( 3 ) :根据异常类型,强制设置c p s r 的运行模式位。 ( 4 ) :强制p c 从相关的异常向量地址取下一条指令执行,从而跳转到相应 的异常处理程序处。如果需要,还可以设置中断禁止位,以禁止中断发生。 异常处理完毕之后,a r m 微处理器会执行以下几步操作从异常返回: ( 1 ) :将连接寄存器l r 的值减去相应的偏移量后送到p c 中。 ( 2 ) :将s p s r 复制回c p s r 中。 ( 3 ) :若在进入异常处理的时候设置了中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理 程序不需要返回。 8 基于a r m 的嵌入式系统驱动程序设计 2 1 2a r m 处理器的寄存器介绍 a r m 的寄存器总共有3 7 个,分别为3 1 个通用寄存器和6 个状态寄存器。 其中,在通用寄存器中,又分3 种类型的寄存器: ( 1 ) 未分组寄存器r 0 r 7 ,这8 个寄存器可以运行在所有的运行模式下,未 分组寄存器都指向同一个物理寄存器。它们未被系统用作特殊的用途,所以,在 中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的 物理寄存器,这样的话可能会造成寄存器中数据的破坏,这一点在进行程序设计 的时候一定要注意。 ( 2 ) 分组寄存器r 8 r 1 4 ,对于分组寄存器,它们每一次所访问的物理寄存 器与处理器当前的运行模式有关。对于r 8 r 1 2 ,每个寄存器对应两个不同的寄存 器,当使用f i q 模式时,访问寄存器r 8 ;当使用除f i q 模式以外的其f i q r 1 2i i q 他 模式时,访问寄存器r 8u s r - r 1 2u s r 。 对于r 1 3 和r 1 4 ,每个寄存器则对应6 个不同的物理寄存器,其中一个是用 户模式和系统模式共用,另外5 个物理寄存器对应于其他5 种不同的运行模式。 寄存器r 1 3 在a r m 指令中常用作堆栈指针,但这只是一种习惯用法,用户 也可以使用其他的寄存器作为堆栈指针。而在t h u m b 指令集中,某些指令强制性 的要求使用r 1 3 作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理 寄存器r 1 3 ,在用户应用程序的初始化部分,一般都要初始化每种模式下的r 1 3 , 使其指向该运行模式的栈空间,这样,当程序的运行进入异常模式的时候,可以 将需要保护的寄存器放入r 1 3 所指向的堆栈,而当程序从异常模式返回的时候, 则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。 r 1 4 也称作子程序连接寄存器或者连接寄存器l r 。当执行b l 子程序调用指 令的时候,r 1 4 中得到r 1 5 ( 程序计数器p c ) 的备份。其他情况下,r 1 4 用作通 用寄存器。与之类似,当发生中断或者异常的时候,对应的分组寄存器r 1 4 、_svc r 1 4i r q 、r 1 4 丘q 、r 1 4a b t 和r 1 4m a d 用来保存r 1 5 的返回值。除此之外,在 每一种模式下,寄存器r 1 4 还常用于保存子程序的返回地址,当用b l 或b l x 指 令调用子程序的时候,将p c 的当前值复制给r 1 4 ,执行完子程序以后,又将r 1 4 的值复制回p c ,即可完成子程序的调用返回。 ( 3 ) 程序计数器p c ( r 1 5 ) 寄存器r 1 5 用作程序计数器( p c ) 。当处理器执行在a r m 状态的时候,所 有指令都是3 2b i t s 宽,因为r 1 5 用来存放的是指令的地址,所有指令必须为w o r d 对齐,所以p c 值由b i t s 3 1 :2 1 决定,b i t s 1 :0 未定义。同理,当处理器执行在t h u m b 状态的时候,所有指令1 6b i t s 宽,必须为半字对齐,所以p c 值由b i t s 3 1 :1 】决定, 第二章嵌入式系统及a r m 概述 9 b i t s o 】未定义。 除了通用的寄存器,还有6 个程序状态寄存器,其中1 个用来作c p s r ( c u r r e n t p r o g r a ms t a t u sr e g i s t e r ,当前程序状态寄存器) ,c p s r 可以在任何模式下被访问。 它包括条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控 制和状态位。每一种异常模式下都有一个专用的物理状态寄存器。称为s p s r ( s a v e dp r o g r a ms t a t u sr e 西s t e r ,备份的程序状态寄存器) ,共有5 个。当异常发 生的时候,s p s r 用于保存c p s r 的当前值,从异常退出的时候可以用s p s r 来恢 复c p s r 。由于用户模式和系统模式不属于异常模式,它们没有s p s r ,当在这两 种模式下访问s p s r 的时候,结果是未知的。 以上都是在a r m 状态下的寄存器组织,在t h u m b 状态下的寄存器集是a r m 状态下寄存器集的一个子集,程序可以直接访问8 个通用寄存器( r 0 r 7 ) 、程 序计数器( p c ) 、堆栈指针( s p ) 、连接寄存器( l r ) 和c p s r 。同时,每一种特 权模式下都有一组s p 、l r 和s p s r 。其中,t h u m b 状态下和a r m 状态下的r o r 7 是相同的,c p s r 和所有的s p s r 也是相同的。t h u m b 状态下的s p 对应于a r m 状态下的r 1 3 ,l r 对应于r 1 4 ,程序计数器对应于r 1 5 。 2 2 $ 3 c 2 4 10 的硬件介绍 2 2 1 $ 3 c 2 4 1 0 处理器的介绍 $ 3 c 2 4 1 0 微处理器是一款由s a m s u n ge l e c t r o n i c sc o 。l t d 为手持设备设计 的低功耗、高度集成的微处理器,采用2 7 2 脚f b g a 封装,内含一个a r m 9 2 0 t 内 核和如下片内外围: 1 个l c d 控制器( 支持s t n 和t f t 带有触摸屏的液晶显示器) s d r a m 控制器 3 个通道的u a r t 4 个通道的d m a 4 个具有p w m 功能的计时器和1 个内部时钟 8 通道的l o 位a d c 触摸屏接口 i * 2 c 总线接口 1 个u s b 主机接口,1 个u s b 设备接口 2 个s p i 接口 s d 接口和m m c 卡接口 1 1 7 位通用i o 口和2 4 位外部中断源 1 0 基于a r m 的嵌入式系统驱动程序设计 8 通道1 0 位a d 控制器 在时钟方面$ 3 c 2 4 1 0 x 也有突出的特点,该芯片集成了一个具有日历功能的 r t c 和具有p l l ( m p l l 和u p l l ) 的芯片时钟发生器。m p l l 产生主时钟,能够使处理 器工作频率最高达到2 0 3 m h z 。这个工作频率能够使处理器轻松运行于w i n d o w s c e ,l i n u x 等操作系统以及进行较为复杂的信息处理。u p l l 产生实现主从u s b 功能 的时钟。 $ 3 c 2 4 1 0 将系统的存储空间分成8 组( b a n k ) ,每组大小是1 2 8 m b ,共1 g 。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 x 采用n g c s 7 :o 8 个通 用片选信号选择这些组。 $ 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 具有三种启动方式,可通过0 m 1 :0 管脚进行选择。 2 2 2 $ 3 c e b 2 4 1 0 开发板的介绍 s 3 c e b 2 4 1 0 开发板是以s a m s u n g $ 3 c 2 4 1 0 处理器为基础并配合安装l i n u x 操作 系统,通过对处理器各个接口进行外扩,从而实现处理器提供的各种功能,其硬 件特征如下: ( 1 ) 开发板以s a m s u n g $ 3 c 2 4 1 0 处理器为内核,该处理器提供2 0 0 m h z 的高频率和 最低程度的电源消耗,所以它适用于各种移动设备。 ( 2 ) 开发板可配合安装l i n u x 内核,l i n u x 以其稳定性和开源性著称,所以用户可 以在一个相对稳定的环境中运行程序,并且可利用l i n u x 在网络方面的稳定性能。 ( 3 ) 应用程序可以在没有永久存储设备的环境中运行,采用f l a s h 文件系统可以在 容量和可靠性方面提供最大化的应用。 ( 4 ) $ 3 c e b 2 4 1 0 各种扩展接口在开发过程最大程度地实现系统的外扩性能。 $ 3 c e b 2 4 1 0 开发板上集成有: 处理器:s a m s u n g $ 3 c 2 4 1 0 ( 2 0 0 m n z ) 内存:s a m s u n gs d r a m 3 2 m 闪存:i n t e ls t r a t af l a s h2 m 以太网口驱动:l a nc s 9 9 0 0 al o b 勰e t 音频驱动:a u d i oa c9 7 显示驱动:d i s p l a y6 4 叮 实时钟驱动:r t c 4 5 1 3 第二章嵌入式系统及a r m 概述 1 1 以太网口:1 个串口:2 个 j t a g 调试口:1 个u s b 口:1 个( s l a v e ) p c m c i a :ls l o tc f :1s l o t 扩展接口:1 2 0p i nc o n n e c t o rf o rg p i o 、数据和地址总线 第三章嵌入式l i n u x 下设备驱动程序设计原理 1 3 第三章嵌入式l i n u x 下设备驱动程序设计原理 为了使嵌入式系统的开发更加方便和快捷,需要有专门负责管理存储器分配、 中断处理、任务调度等功能的软件模块,这就是嵌入式操作系统。嵌入式操作系 统中的每一个外围物理设备键盘、显示器、鼠标、磁盘、串口、网络适配器 等都有专用于控制该设备的设备驱动程序。设备驱动程序一般集成在操作系统内 核中,这样不同的应用程序就可以共享这些代码。它封装了控制的细节,并通过 一个特殊接口输出一个经典操作集。当应用程序需要使用设备时,内核通过访问 该设备对应的文件节点,利用虚拟文件系统( v f s ) 调用该设备的相关处理函数。因 而,一个驱动程序就是一个函数和数据结构的集合,它的目的是实现一个简单的 管理设备的接口。内核用这个接口请求驱动程序控制设备的i o 操作。 3 1l i n u x 内核模块机制 3 1 1l i n u x 内核模块的引入 l i n u x 操作系统的内核是单一体系结构( m o n o l i t h i ck e r n e l ) 的,也就是说, 整个内核是一个单独的非常大的程序。与单一体系结构相对的是微内核体系结构 ( m i c r ok e r n e l ) ,比如w i i l d o w s n t 采用的就是微内核体系结构。微内核体系的结 构特点是操作系统的核心部分是一个很小的内核,实现一些最基本的服务,如创 建和删除进程、内存管理、中断管理等等,而文件系统、网络协议等其他部分都 在微内核外的用户空间里运行。这两种体系的内核各有优缺点。使用微内核的操 作系统具有很好的可扩展性而且内核非常的小,但这样的操作系统由于不同层次 之间的消息传递要花费一定的代价所以效率比较低。对单一体系结构的操作系统 来说,所有的模块都集成在一起,系统的速度和性能都很好,但是可扩展性和维 护性就相对比较差。为了弥补单一体系结构的这种缺陷,l i n u x 操作系统使用了 一种全新的机制模块,用户可以根据需要,在不需要对内核重新编译的情况 下,模块能动态地载入内核或从内核移出。 3 1 2l i n u x 内核模块的定义 模块( m o d u l e ) 是在内核空间运行的程序,实际上是一种目标对象文件,没有 链接,不能独立运行,但是其代码可以在运行时链接到系统中作为内核的一部分 运行或从内核中取下,从而可以动态扩充内核的功能。这种目标代码通常由一组 函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的 1 4 基于a r m 的嵌入式系统驱动程序设计 功能。模块机制的完整叫法应该是动态可加载内核模块( 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 的内核可 以达到最小,即内核中实现一些基本功能,如从模块到内核的接口,内核管理所 有模块的方式等等,而系统的可扩展性就留给模块来完成。 3 1 3 使用模块机制的优缺点 使用模块的优点: 使得内核更加紧凑和灵活。 修改内核时,不必全部重新编译整个内核,可节省时间。系统中如 果需要使用新模块,只要编译相应的模块然后使用特定用户空间的程序 将模块插入即可。 模块可以不依赖于某个固定的硬件平台,即使它依赖于某些特殊的 硬件特点。 模块的目标代码旦被链接到内核,它的作用和静态链接的内核目 标代码完全等价。所以,当调用模块的函数时,无须显式的消息传递。 但是,内核模块的引入也带来一定的问题: 由于内核所占用的内存是不会被换出的,所以链接进内核的模块会 给整个系统带来一定的性能和内存利用方面的损失。 装入内核的模块就成为内核的一部分,可以修改内核中的其他部分, 因此,模块的使用不当会导致系统崩溃。 为了让内核模块能访问所有内核资源,内核必须维护符号表,并在 装入和卸载模块时修改符号表。 模块会要求利用其他模块的功能,所以,内核要维护模块之间的依 赖性。 3 1 4 模块的使用 模块是和内核在同样的地址空间运行的,模块编程在一定意义上说也就是内 核编程。但是并不是内核中所有的地方都可以使用模块。一般是在设备驱动程 序、文件系统等地方使用模块,而对l i n u x 内核中极为重要的地方,如进程管理 和内存管理等,无法通过模块来实现,必须直接对内核进行修改来完成。 在l i n u x 内核源程序中包括的一些模块有文件系统,所有的s c s i 高级驱动程 序,大多数的s c s i 驱动程序,多数c d r o m 驱动程序和以太网驱动程序等等。 第三章嵌入式l i n u x 下设备驱动程序设计原理 1 5 每一个模块都有一个引用计数器,存放在m o d u l e 对象的t i c u s c c o u n t 域中。 这个计数器的主要功能是确保模块可以安全地卸载。我们应该有这样一个共识, 一个模块还在工作的时候是不能被卸载的,比如当文件系统还被安装在系统上时 就不能删除这个文件系统类型,而且我们也不能在还有程序使用某个字符设备时 就去掉它。这个计数器是这样工作的,当开始执行模块功能所涉及的操作时就递 增计数器,在操作结束时递减这个计数器。什么时候可以卸载这个模块呢? 当然是 只有这个计数器的值为0 的时候。 在l i n u x m o d u l e h 中,定义了三个宏来维护使用计数: m o di n cu s ec o u n t 当前模块计数加1 m o d d e c u s ec o u n t当前模块计数减l m o d1 nu s e计数非0 时返回真 计数器的当前值可以在p r o c m o d u l e s ( 或者使用l s m o d 命令) 中每一项的第 三个域找到。这个文件显示系统中当前共加载了哪些模块,每一项对应一个模块, 其中的域包括模块名,模块使用的页数和当前计数器的值。 将模块插入到内核的方法有两种,第一种是用i n s m o d 命令人工地把模块加 载,另一种方法就是模块根据需要时自动加载,这种方法叫做按需载入。按需装 入需要执行m o d p r o b e 程序。要卸载一个模块使用r m m o d 命令。 3 2l i n u x 下的设备驱动程序概述 3 2 1 设备驱动程序的定义及分类 设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动为应用程序 屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文件。应用程序就 可以像操作普通文件一样对硬件设备进行操作。驱动程序是内核的一部分,故运 行在内核态( 用户的应用程序是运行在用户态) ,是和内核连接在一起的程序。 应用程序是通过设备文件来和驱动程序建立联系,即通过对设备文件的读写从而 对驱动程序发送命令。 设备驱动程序是这样一类软件:它们控制着设备的操作动作,并且提供了一 个可用的程序接口使其他程序能够与这个设备互动。各种设备驱动程序构成了它 们所控制的硬件和操作系统内核之问的一个过渡层次。这个层次扎根于硬件,服 务于内核,极大地简化了内核的设计和应用,它向外界提供了一个精心定义的接 口,具体的工作将由各个设备驱动程序去完成,而内核就不必亲自去与每一个设 备打交道了。这也意味着操作系统的内核部分只要还能适应有关模型的框架,就 可以在不了解各种不同设备具体情况的前提下被编写出来并做进一步的开发。比 1 6 基于a r m 的嵌入式系统驱动程序设计 如说,如果想给l i n u x 内核新增加一种文件系统,我们并不需要全部重写内核代 码,并且这一工作能够通过现有代码的再使用相对容易地得到完成。就拿文件系 统来说吧,它被分为一个普遍意义上的虚拟文件系统v f s 和各种注册在v f s 上 的特定文件系统。内核的一切主要部分都是按这种方式设计的。这就提高了整体 上的模块化水平,新设备驱动程序的设计工作也因此而更容易进行。如图3 1 所 不o i内核 l虚拟文件系统( v f s ) 图3 1 内核的文件系统 在l i n u x 中输入输出设备被分为3 类:块设备,字符设备和网络接口。本 文只讨论前两种设备类型,这种分类的使用方法,可以将控制不同i o 设备的驱 动程序和其他操作系统软件成分分离开来。例如文件系统仅仅控制抽象的块设备, 而将与设备有关的部分留给低层软件,即驱动程序。 字符设备指那些无需缓冲区可以直接读写的设备,如系统的串口设备 d e v c u a 0 和d e v c u a l 。块设备则仅能以块为单位进行读写的设备,如软盘、硬盘、 光盘等,典型块的大小为5 1 2 或1 0 2 4 字节。 从名称使人想到,字符设备在单个字符的基础上接收和发送数据。为了改进 传送数据的速度和效率,块设备在整个数据缓冲区填满时才一起传送数据。在 l i n u x 中,对每一个设备的描述是通过主设备号和从设备号,其中主设备号描述 控制这个设备的驱动程序,也就是说驱动程序和主设备号是一一对应的,从设备 号是用来区分同一个驱动程序控制的不同设备。 3 2 2 i o 软件 i o 软件的总体目标就是将软件组织成一种层次结构,低层软件用来屏蔽具 体设备细节,高层软件则为用户提供一个简洁规范的界面。这种层次结构很好地 体现了i o 设计的一个关键的概念:设备无关性,其含义就是程序员写的软件无 需修改就能读出软盘、硬盘以及c d r o m 等不同设备上的文件。 输入,输出系统的层次结构及各层次的功能如图3 , 2 所示。从图可以看出,用 户进程的下层是设备无关的软件,在l i n u x 中,设备无关软件的功能大部分由文 第三章嵌入式l i n u x 下设备驱动程序设计原理 1 7 件系统去完成,其基本功能就是执行适用于所有设备的常用的输入输出功能,向 用户软件提供一个一致的接口。其结构如图3 3 所示。 进行i 0 调用:格式化i 0 命令;保护;阻塞;缓冲;分配 建立设备寄存器;检测状态 当f o 结束时唤醒设备服务子程序 执行i ,o 操作 图3 2 输入输出系统的层次结构及各层次的功能 对设备程序的统一接口 设备命名 设备保护 提供一个独立与设备的块 缓冲 块设备的存储分配 分配和释放独占设备 错误报告 图3 3 设备无关软件的功能 设备无关的软件具有以下特点。 1 ) 文件和设备采用统一命名。设备无关软件负责将设备名映射到相应的驱动 程序,一个设备名唯一地确定一个索引节点,索引节点中包含了主设备号和从设 备号,通过主设备号可以找到相应的设备驱动程序,通过从设备号确定具体的物 理设备。 2 ) 对设备提供的保护机制同文件系统一样都采用r w x 权限。 3 ) 数据块的大小可能对于不同的设备其大小不一样,但操作系统屏蔽这一事 实,向高层软件提供了统一的逻辑块的大小。 4 ) 为了解决数据交换速度的匹配问题,采用了缓冲技术,对于缓冲区的管理 由文件系统去完成。 5 ) 块设备的存储分配也是由文件系统去处理。 6 ) 对于独占设备的分配和释放属于对临界资源的管理。 1 8 基于a r m 的嵌入式系统驱动程序设计 3 2 3l i n u x 下的设备文件与设备文件系统d e v i l 设备文件是用来表示l i n u x 所支持的大多数设备的,每个设备文件除了设备 名,还有3 个属性:即类型、主设备号、从设备号。 设备文件是通过m k n o d 系统调

温馨提示

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

评论

0/150

提交评论