(电子科学与技术专业论文)基于嵌入式系统的驱动程序及图形显示技术研究.pdf_第1页
(电子科学与技术专业论文)基于嵌入式系统的驱动程序及图形显示技术研究.pdf_第2页
(电子科学与技术专业论文)基于嵌入式系统的驱动程序及图形显示技术研究.pdf_第3页
(电子科学与技术专业论文)基于嵌入式系统的驱动程序及图形显示技术研究.pdf_第4页
(电子科学与技术专业论文)基于嵌入式系统的驱动程序及图形显示技术研究.pdf_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

国防科技大学研究生院学位论文 a b s t r a c t i nt h ep a p e r , u n d e rt h ed e v e l o p m e n to fi n f r a r e di m a g ea c q u i r i n ga n ds t o r i n gb o a r da n d r a d a ri n t e r f e r e n t i a lm a c h i n eb a c k g r o u n d ,i n c u b r a t et h ed r i v e ro ft h eb o a r db a s e do nw i n d o w s 2 0 0 0o p e r a t i n gs y s t e ma n dt h ed i s p l a ya n dc o n t r o ls y s t e m o f t h er a d a ri n t e r f e r e n t i a lm a c h i n e f i r s t ,t h i sp a p e ra n a l y s i st h ec h a r a c t e r i s t i co ft h ef u n c t i o no fi n f r a r e di m a g ea c q u i r i n ga n d s t o r i n gb o a r d ,t h e np o i n to u tt h a tt h el i n c h p i no fd r i v i n gp r o g r a m si si or e q u e s tp r o c e s sa n d r e s o l v ei tb yh a r d w a r ea c c e s s i n g ,i n t e r r u p tp r o c e s s i n g ,d m at r a n s m i t t i n ga n ds oo n o nt h i s b a s i s ,t h ed r i v i n gp r o g r a m su n d e rw i n d o w s 2 0 0 0o p e r a t i n gs y s t e mi se m p l o d e r e d ,i tc a n a c q u i r ea n ds t o r ea sw e l la sd i s p l a yi m a g es y n c h r o n o u s l y , m a k i n gl a t e rp r o c e s sa n ds t u d i e s e a s i l e r t h e n ,t h i sp a p e ra n a l y s i st h es y s t e mn e e do f r a d a ri n t e r f e r e n t i a lm a c h i n e ,a n dp u tf o r w a r d t h es c h e m eo fe m b e d d e dd i s p l a ya n dc o n t r o ls y s t e m i tb a ta r o u n dt h ee x p l o i t u r ef l o wo f e m b e d d e ds y s t e m ,a n df i n i s hp r o g r a m m et h ec o m m u n i c a t i o n so fs e r i a ld e v i c ea n de t h e m e t b e t w e e np ca n de m b e d d e ds y s t e mu n d e rl i n u xo p e r a t i n gs y s t e m o nt h i sb a s i s ,d e s i g na i n t e r a c t i v eg r a p h i c su s e ri n t e r f a c ef o rr a d a ri n t e r f e r e n t i a lm a c h i n eb ym i n i g u is ot h a ti tc a n d i s p l a yw o r k s t a t u so fr a d a ri n t e r f e r e n t i a lm a c h i n es y n c h r o n o u s l y , a n dc h o o s e f r e e l y p r e c o n c e r t e di n t e r f e r e n t i a ls t y l ea n di n t e r f e r e n t i a lw a v e f o r m k e yw o r d s :w d m ,d e v i c ed r i v e r ,a r m ,e m b e d d e dl i n u xs y s t e m ,m i n i g u i , g r a p h i c su s e ri n t e r f a c e 第1 i 页 国防科技大学研究生院学位论文 图目录 图2 1 红外图像采集存储卡原理框图一 图2 2i o 操作的处理顺序 图2 3 中断服务例程流程图一 图2 - 4d p c 例程流程图 图2 - 5 驱动程序和应用程序流程图 图2 6 图像采集与处理一 图3 - 1 显示与控制系统结构图 圈3 2 宿主机与目标机硬件连接示意图一 图3 - 3 固态存储设备的空间分配结构图 图3 - 4b o o t l o a d e r 主要任务流程图 图3 - 5 系统物理内存分布一 图3 - 6 开发板l i n u x 界面 图4 1 显示与控制系统图形界面工作流程 图4 2 图形用户界面的基本元素 图4 3 消息驱动的简单构架示意图 图4 4 显示与控制系统图形界面开发流程图一 图4 5m i i l i g u i 图形用户主晃面 图4 6 串口参数设置 图4 7 干扰参数设置 图4 8 假目标参数设置 第i i 页 _矗m:2坫博甜勉玛”弱弘邵”甜铊舵钙 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它 教育机构的学位或证书而使用过的材料与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了睨确的说明并表示谢意。 学位论文题目:基王蛊盎丕统鲍堕盟焦庄厘圈壁垦丞擅盎丑究 学位论文作者签名:一翔羔妞 日期:j 卅中年,月f 如 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留、使用学位论文的规定。本人授权 国防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子 文档,允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目:蒌王蓝盛亟氲的壅盘焦庄丞图壁显垂挂盔鲤塞 学位论文作者签名:盐趁堡!日期:加乒年i 月日 作者指导教师签名: 缯:望聋日期:坤铲年,j 月,j 日 国防科技大学研究生院学位论文 第一章绪论 1 1课题背景 光电综合侦察装备将可见光、微光、红外、激光等几种传感技术汇集于一个侦察或 侦察攻击系统中,增强了在昼夜、恶劣气候和不良的战场环境条件下对目标的探测和识 别能力以及对抗能力。对光电综合系统的一般要求是尽量采用共同光学系统,进行综合 稳定,采用共同的目标跟踪和影像运动补偿系统等。 我军最新装备的某侦察船舰载光电侦察系统包括可见光侦察系统与红外侦察系统两 部分,主要用途是在舰载导航雷达的导引下,红外热像仪与可见光摄像机构成全天候的 光电侦察系统,对海上目标、岛屿及岸上目标进行昼夜侦察,获取实时性更好、内容更 丰富的图像情报资料,同时,可对海上重要战略目标,如航母等进行跟踪测量,录取目 标的红外、可见光辐射信息。由于目前精确制导的发展方向是基于传感器探测的复合制 导,而复合制导又以雷达、红外以及可见光复合为主。因为这种复合制导具有很强的抗 干扰的能力,而且能使装备了这种技术的精确制导武器能在各种复杂环境下探测、捕 获、识别和正确命中目标,因此获取目标的红外、可见光辐射信息是我国发展复合精确 制导武器的重要前提。舰载光电侦察系统的建立,不仅可提高我军的海上侦察能力具有 重要的意义,而且对于推动我国精确制导技术的发展,目标与环境特性的研究、战场侦 察、低空飞行器( 如巡航弹) 的探测及空对地侦察等领域的研究具有重要的实用意义, 同样地将推动这些学科的发展。 本文第一部分紧紧围绕舰载光电综合侦察系统的红外侦察子系统,进行了红外图像 采集存储卡的驱动程序设计。结合红外图像采集存储卡,把红外摄像机捕获到的红外动 态图像实时地采集并存储,以便于后期的处理。 电子战是一种控制电磁频谱的战斗。电予战科学可分为三大部分:电子支援、电子 干扰和电子抗干扰。电子支援是指敌方雷达和无线电进行侦听。电子干扰是指扰乱、欺 骗和致盲敌方电子设备,它又分为有源干扰( 如噪声干扰和欺骗干扰) 和无源干扰( 如 投放铝箔条带和拽光弹两大类) ,先进的电子干扰根据e s m 收集到的情报采取对抗措 施。电子抗干扰主要包括电子情报和信号情报以及保持友邻部队继续使用电磁频道的有 关行动。 欺骗性干扰是一种特殊的电子干扰,主要用于对付火控雷达和寻的系统,它不是消 除目标信息,而是阻止敌方建立有益的目标信息。它又分为人为性欺骗和模仿欺骗两种 形式,人为性欺骗包括改变或模拟己方的电磁辐射来进行欺骗,模仿性欺骗包括将电磁 辐射引进敌人的倩道,以模拟敌人的发射波。欺骗式干扰呵对付频率转换和频率捷变等 反措施,还可对抗多卜勒脉冲雷达发射的复杂信号。 第1 页 受堕銎茎奎兰堡塞兰堕兰垡笙茎 为我军导弹部队研制的针对机载雷达的欺骗干扰机,能够在敌侦察雷达上产生模拟 车或者车群的假目标,用于保护重点的导弹发射车。力图为我军研制出一种新型灵巧的 分布式雷达欺骗干扰设备,并有可能在短期内成为我军电予战的一个有效手段,为重要 地面设旌、目标提供有效的保护。 本文第二部分则以雷达侦察欺骗干扰机为研究背景,研制了雷达干扰机的显示与控 制系统,能够实时显示干扰机的工作状态,通过系统参数设置,自由选择预定的干扰样 式和干扰波形。 1 2系统设计方案 w i n d o w s 2 0 0 0 操作系统支持用户模式、内核模式两种驱动程序。用户模式驱动程序 是运行在用户模式的系统级代码,例如:一个为虚拟的硬件或者新的环境子系统所写的 虚拟驱动器。既然w i n d o w s 2 0 0 0 不支持直接访问硬件,虚拟驱动器依赖运行在内核模式 的真正的驱动器。本文不讨论用户模式驱动程序。 内核模式驱动程序使用系统级代码编写,且运行在内核模式下,因为内核模式允许 直接访问硬件,这些驱动程序被用来直接控制硬件。 内核模式驱动程序可被进一步的分成两种,遗留模式的驱动程序和w i n d o w s 驱动模 式( w i n d o w sd r i v e rm o d e l ,w d m ) 的驱动程序。遗留模式的驱动程序需要去侦测硬件和与 i o 子系统连接。w i n d o w s 驱动模式的驱动程序支持即插即用,电源管理,热拔插,自动 配置。一个好的w i n d o w s 驱动模式的驱动程序可以在w i n d o w s 9 8 、w m d o w s 2 0 0 0 和 w i n d o w s x p 之间实现源代码级兼容。 红外侦察系统中设计了基于周边元件扩展接口( p e r i a p h e r a lc o m p o n e n ti n t e r f a c e , p c i ) 总线的红外图像采集存储卡,用于从红外摄像机接收红外图像信号,转换成数字信 号,通过p c i 总线传输到p c 机内存缓冲区,在显示器上实时显示并无数据丢失地存储进 海量硬盘。红外图像采集存储卡驱动程序采用w i n d o w s 驱动模式。驱动程序接收到应用 程序的采集数据的命令后,将红外图像数据采用直接存储器存取( d i r e c tm e m o r y a d d r e s s ,d m a ) 模式传输到系统的公用缓冲区,通过事件触发通知应用程序内存拷贝 到用户缓冲区,进行显示并存储到硬盘。 嵌入式技术是近年来日渐普及的电子技术。嵌入式产品咀其体积小、功耗低、处理 能力强等诸多优点,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作 用。 考虑到雷达欺骗干扰机的便携和低功耗的要求,显示与控制系统采用嵌入式方式。 利用基于a r m 9 微处理器$ 3 c 2 4 1 0 的嵌入式硬件平台,通过串行端臼或以太网络与系统 的其他部分进行通信,并通过液晶屏显示出系统的工作状态。人机交互采用更为方便快 捷的触摸屏取代鼠标和键盘。 第2 页 国防科技大学研究生院学位论文 开放源码的l i n u x 操作系统以其内置网络支持、高度模块化、易于移植等优点,已经 成为开发新一代嵌入式产品的技术热点。与此同时,配备一个优秀的图形用户界面,使 产品和用户能进行友善可靠的交互也已成为开发工作中非常紧迫的要求。出于在嵌入式 系统中,其硬件环境比较苛刻,因此要求运行其中的图形界面尽可能的精简,而传统的 窗口系统上不能满足嵌入式系统的要求。所以就需要专门针对l i n u x 的嵌入式图形用户界 面( g r a p h i c a lu s e ri n t e r f a c e ,g u i ) 系统。嵌入式显示与控制系统中使用的m i n i g u l 就是 嵌入式l i n u x 系统下一个轻量级的图形用户界面支持系统,具有占用资源少、高性能、高 可靠性和可配置等特点。它目前已比较成熟,并已被用到很多项目的实际开发中。 1 3本文的主要工作 本课题主要进行基于嵌入式系统的驱动程序设计及显示技术的研究,具体包括以下 几个方面的内容: 基于p c i 总线的红外图像采集存储卡驱动程序设计。 基于a r m 9 的嵌入式显示与控制系统开发。 基于m i l l i g u i 的显示与控制系统图形界面开发。 第3 页 国防科技大学研究生院学位论文 第二章基于p c i 总线的红外图像采集存储卡驱动程序设计 本章节主要介绍了基于p c i 总线的红外图像采集存储卡的驱动程序设计流程。首先 概述了红外图像采集存储卡工作原理,以及与驱动程序设计有关的p c i 总线的硬件环 境。w i n d o w s 驱动模式的驱动程序关键在于内核模式i 0 处理,从硬件访问、中断处理 和d m a 传输三个方面加以解决。 2 1红外图像采集存储卡工作原理 红外图像采集存储卡是红外信息获取与处理系统的前端部分,它的性能直接决定了 系统的性能。 它主要包括电平转换电路、存储、控制、p c i 总线控制器等几个功能模 块,如图2 1 所示。 红外摄 差分数 图2 - 1 红外图像采集存储卡原理框图 具体实现功能如下:红外摄像机输出的信号包括1 4 位的图像数据、时钟信号、帧同 步信号和行同步信号。在接收到主机的采集命令后,存储模块f i f o 将红外图像数据配合 其时钟信号及帧同步信号、行同步信号按帧进行存储。p c i 总线接口控制芯片$ 5 9 3 3 实 现与主机的通信,接收主机的控制命令;d m a 传输采用块模式,从f i f o 中读取红外图 像数据到主机内存。控制模块f p g a 实现对其它各个模块进行统一协调的控制。 酩2p c i 总线概述 利用快速的总线时钟( 3 3 m h z ) 和一些技术,使p c i 构架可以传输3 2 b i t s 的数据速度 达到1 3 2 m b y t e s ,传输6 4 b i t s 的数据速度可以再提高一倍。产生这个快速的数据传输 的原因如下: 第4 页 国荫科技大学研究生院学位论文 1 p c i 协议假定每一个数据的传输都是一个爆发操作,结果,高速的设备将使用 巨大的吞吐量去传输大量的数据。 2 p c l 支持加倍总线管理,允许直接的设备到设备数据传输( 在存储器中无中间停 顿) ,这样使i o 和c p u 操作重迭。 3 一个中央总线仲裁器通过对数据传输进行重迭的仲裁减少了反应时间。它允许 当这个拥有者释放总线的时候,下一个拥有者马上开始操作。 4 一个智能桥放置在主c p u 和p c i 总线之间,作为数据的缓冲区,它减少了花费 的等待数据的时间。f 1 】【2 1 贮2 1 访问寄存器 虽然使用3 2 b i t s 的地址,但是i o 寄存器的寻址空间在8 0 x 8 6 平台上仍然是 6 4 k b y t e ,所以p c i 的i o 寄存器和其它东西必须压缩到这6 4 k b y t e 中。而且,在有 e i s a 或者i s a 总线的系统上,仍然需要避免遗留的e i s a 或者i s a 设备使用这6 4 k b y t e 的空间。 除了i o 寄存器空间和存储器空间外,p c i 还定义了一个配置空间,配置空间将和 自动配置一起讨论。 2 2 2 中断机制 p c i 总线共有四个优先权相同的中断线( i n t a - i n t d ) ,这些中断线可以设定为低有 效,电平触发和可共享状态。一个单功能的设备必须使用i n t a ,多功能的设备可以使 用从i n t a 开始的任意中断线。唯一的限制是一个功能只能连接一个中断线。 对于中断的优先权p c i 总线的规范是没有设定的,但是它通过一个外部的控制器改 变中断请求线给正确的系统中断线。例如:计算器上的转向控制器为了完成将p c i 的 功能请求i n t a i n t d 转换到系统的中断请求i r q o i r q l 5 的其中之一,任何产生中断的 功能必须填写以下两个寄存器: 1 中断引脚寄存器:这个只读寄存器存储p c i 中断线的标识。 2 中断线寄存器:这个可读可写的寄存器存储中断的优先权和中断的向量,在个 人计算器中o x 0 0 一o x o f 与i r q 0 一i r q l 5 相对应。 这是一个非常灵活的方案,因为它不强加给系统设计者任何特殊的策略,这也使它 很容易地支持其它处理器环境。 第5 页 国防科技大学研究生院学位论文 2 2 3d m a 构架 p c i 规范中没有定义副d m a 的使用,p c i 只使用主d m a 或者过程控制i o 。 在固有的d m a 操作中,参与者被称为代理者,在任何的传输中,仅涉及两个代理者 i 发起者:这是一个总线的管理者,它有权使用总线,将要建立一个数据传输操 作。 2 目标者:是p c i 总线当前被发起者寻址的功能,它有数据传输的地址。 因为所有的总线管理者都可以是发起者,所以可以在两个p c i 之间直接传输数据而 不经过主存储器。这个强大的数据传输能力使它可以应用在高速的设备如网卡和视频适 配卡。 p c i 规范中也没有定义仲裁p c i 总线是否有权使用的策略,它只是定义了p c i 总线 仲裁信号的时序。而是由系统定义了确定下个有权使用p c i 总线的方法。 2 2 4 设备缓冲区 p c i 总线使用的设备缓冲区可以使用3 2 b i t s 寻址空间的任何地方,但必须在主c p u 可以访问设备缓冲区之前激活某些p c i 的功能。 p c i 总线的一个有趣的特性是一个单一的功能可以在r o m 中有多个映像,每一个对 应不同的c p u 平台。这个特性给制造商为不同的平台设计产品。p c i 规范为r o m 块定义 了一个标准的头格式,这样,初始化程序可以加载r o m 中适当的部分到主存储器中执 行。 2 2 5自动配置 p c i 规范中定义了p c i 接口的每一个功能必须有自己的2 5 6 b i t s 用来配置p c i 接口 的存储地址。 第一个6 4 b i t s 是头,它有一个固定的结构,剩下的1 9 2 8 i t s 留给p c i 接口卡的设 计者。系统可以使用头去唯一标识一个p c i 接口的功能和给它分配资源。头的内容包括 i 制造厂商,设备类型,版本号码等信息。 2 一对标准的命令和状态寄存器,记录启用各种功能和提供错误信息。 3 一个功能使用的缓冲区和i o 寄存器空间请求的资源列表。 4 一个中断引脚和一个中断线寄存器。 第6 页 国舫科技丈学研究生院学位论文 5 一个指向p c i 设备的r o m 的指针。 在每个功能有2 5 6 b i t s 的情况下,p c i 系统的配置空间可以很容易变得很大,可能 会超过6 4 k b y t e ( 8 0 x 8 6 ) ,虽然可以选择是否映射它们到主存储器,但是它们会占用大 量的空问。为了解决这个问题,p c i 的功能访问配置数据使用了两个寄存器: 1 配置地址寄存器:它标识了总线号码,设备,功能,配置空间的地址。 2 配置数据寄存器:它作为c p u 和配置空间的数据缓冲区。在设最了配置地址寄 存器之后,通过读写配置数据寄存器来读写配景空间。 珏。3内核模式i o 处理 一个i o 请求从用户模式代码到i o 管理器再到驱动程序的整个过程要经过下列几个 阶段: 1 被i o 管理器预处理。i ,0 管理器进行对相关的设备进行设备无关的准备和i o 请 求的确认。 2 被驱动程序预处理。驱动程序建立一个为每个支持的i i o 函数请求入口的派遣列 表。i o 管理器使用i o 请求的函数代码去索引这个列表,然后调用适当的派遣例程。 3 设备操作和请求中断。数据传输和其他操作是被s t a r tf o 例程和中断服务例程 完成。 4 被设备驱动程序后期处理。内核模式的延迟过程调用( d p c ) 派遣器最后调用驱 动程序的延迟过程调用例程去执彳亍驱动程序的后期处理过程。最后标记悬挂的i r p 来告 诉i o 管理器当前的请求已经完成。如果另一个请求正在等待,它将导致i o 管理器用下 一个i r p 去开启设备。 5 被i o 管理器后期处理。一旦驱动程序的d p c 标记了一个i r p , i o 管理器将进 行清除的操作。 i o 操作的处理顺序如图2 - 2 所示。 2 4开发驱动程序的三个主要问题 开发p c i 设备驱动程序w d m ,主要有三个方面的问题:硬件访问、中断处理和 d m a 传输。接下来就这三个方面展开讨论。 ( 1 ) 硬件访问 x 8 6 处理器有两个独立的地址空问,分别是i i o 地址和内存地址。f o 地址空间只有 6 4 k b ,而内存地址空间达到4 g b 。对于微机接口卡,其中的i i o 和存储器芯片可以定位 于这两种独立的地址空间中。一个芯片的地址在f o 地址空间的范围称为i o 映射,在 i o 地址空间的设备只能通过f o 指令来访问。而一个芯片的地址在内存地址空间的范围 称为内存映射,可以通过一些内存访问指令来访问。1 3 1 4 第7 页 国防科技大学研究生院学位论文 用户程序的i o 请求 内校模式 i o t 理曩 创建i r p 确认请求 处理用户缓冲区( b i o 或者d i o 蝴i 驱动程序的派遣倒程 i r p 传递 ls c r 七l l o 例程 1 确认请求的类型 设刮:然慈能掇敝 i 激活设备 l1 程序遁回到i o 曹理嚣 驱动程序的派遣捌程l 传输多个数据 慧认请丧。, i 将i r p 拄起 一 请求i o 管理嚣将s c a r tl l o 例程排队 程序返回到l o 管理舞 解除中断 如果操作末完:挽,开始更多i o 如果撮作来完成,调度d p c hd p c 倒程 d p c 软件中断1 释放控制嚣 i 释放d m a 适配器 1 如果操作完成。标记i r p l 0 管理嚣 处理用户缓冲区 为用户横式通知调度a p c 下一个i r p 出列 图2 - 2i i o 操作的处理顺序 k i o r a n g e 类实现对i o 映射芯片的访问,k m e m o r y r a n g e 类实现对内存映射芯片的 访问。这两个类除了其中的构造函数有不同之处,其他成员函数完全相同。 对于所设计的p c i 设备,其配置空间的基地址寄存器( 0 - - 5 ) 值决定请求的地址空间 类型和大小,驱动程序根据以上情况声明2 个k i o r a n g e 类实例。 k i o r a n g em _ i o p o r t r a n g e 0 ; k i o r a n g e m _ l o p o r t r a n g e l ; 在p n p 启动例程( o n s t a r t d e v i e e ) 中,初始化k o r a n g e 类实例。 当创建p c i 设备驱动程序时,对于定义的空间类型实例,在p n p 启动例程中将自动 包含这些事例初始化的代码。 初始化完成后,就可以调用访问函数了,如下所示: t e m p = m _ i o p o r t r a n g e o i n d ( a m c co pr e g _ m c s r ) ; m _ i o p o r t r a n g e 0 o u t d ( a m c co pr e gm c s r , t e m p ) ; 在p n p 停止和删除例程中,应当使k l o r a n g e 类实例无效。如下所示: m _ i o p o r t r a n g e 0 i n v a l i d a t e o ; mi o p o r t r a n g e l i n v a l i d a t e 0 ; 第8 页 国防科技大学研究生院学位论文 ( 2 ) 中断处理 k i n t e r r u p t 类实现硬件中断的处理。其成员函数包括中断的初始化,及将一个中断服 务例程连接到一个中断和解除其连接等。 中断服务例程不是k i n t e r r u p t 类的成员函数,这样做的目的是减少中断延迟时间。如 果中断延时时间不是问题,可以用m e m b e ri s r 宏声明中断服务例程为k d e v i c e 或其他 类的一个成员函数。 中断服务例程的处理时间应当尽可能地短,并且由于中断服务例程在d i r q l 级别上 运行,很多函数不能调用。所以通常在中断服务例程中,若判断该中断是由自己的设备 产生的,则调用个在d i s p a t c hl e v e l 级别上运行的延迟过程调用。当一个中断服 务例程完成后,旦处理器获得d i s p a t c hl e v e l 的运行权,内核就运行它的延时过 程调用。可以在延迟过程调用例程中做大部分的中断处理工作。 中断服务例程是异步调用的,所以必须考虑其他例程和中断服务例程对共享数据的 保护性访问。中断同步调用函数s y n c h r o n i z e ,即可实现其他例程和中断服务例程对共享 数据的串行访问。中断同步例程也在d i r q l 级别上运行,执行时间应当尽可能地短。 中断处理的中断服务例程和延迟过程调用例程需要声明。 c l a s sa t r l c p c i d e v i c e :p u b l i ck p n p d e v i c e p u b l i c : t h ei s r ( i n t e r r u p ts e r v i c er o u t i n e ) m e m b e r _ i s r ( a t r i c p c i d e v i c e ,i s r _ i r q ) ; t h ed p c ( d e f e r r e dp r o c e d u r ec a l l ) f o rt h ei s r m e m b e rd p c ( a t r l c p c i d e v i c e ,d p c f o r _ i r q ) ; b o o l e a n i s r _ i r q ( v o i d ) ;c o m m e n t _ o n l y v o i dd p c f o ri r q ( p v o i da r g l ,p v o i da r 9 2 ) ;c o m m e n to n l y k i n t e r r u p t m _ i r q ; k d e f e r r e d c a l l m _ d l 扎f o r _ i r q ; ) 当创建驱动程序框架时,若有中断资源,这些是自动生成的。 在p n p 启动例程中,初始化k n t e r r u p t 和k d e f e r r e d c a l l 类实例a i n i t i a l i z ea n dc o n n e c tt h ei n t e r r u p t s t a l = u s = m _ i z q i n i t i a l i z e a n d c o r m e c t ( p r e s l i s t t r a n s l a t e d , l i n k t o ( i s r _ i r q ) , t l l i s ) ; 第9 页 国防科技大学研究生院学位论文 s e t u pt h ed p c t ob eu s e df o ri n t e r r u p tp r o c e s s i n g m _ d p c f o r l r q s e t u p ( l i n k t o ( d p c f o r _ k q ) ,t h i s ) ; 在p l l p 停止和删除例程中,应当使k i n t e r r u p t 类实例断开并无效。如下所示: m _ i r q i n v a l i d a t e o ; 在中断服务例程中,首先判断该中断是否是自己的设备产生的,若不是,返回 f a l s e :若是,保存中断控制状态寄存器,以便延迟过程调用判断中断类型,请求一个 d p c ( d e l a yp r o g r e s sc a l l ) ,然后返回t r u e 。具体流程见图2 3 。 图2 3 中断服务例程流程图 b o o l e a na t r l c p c i d e v i c e :i s r _ i r q ( v o i d ) d e v i c e s t a t u s - - m _ l o p o r t r a n g e 0 i n h ( a m c c 0 pr e q i n t c s r + 2 ) ; 对中断源进行校验 i f ( ( d e v i e e s t a t u s & a n y _ $ 5 9 3 3 i n t 产= 0 ) r e t u r nf a l s et oi n d i c a t et h a t 血i sd e v i c ed i dn o tc a u s et h ei n t e r r u p t r e t u r nf a l s e ; 保存到状态字记忆 l a s t d e v i c e s t a t u s = d e v i c e s t a m s ; 状态字回写 m _ i o p o r t r a n g e 0 o u t b ( a m c co pr e g _ i n t c s r + 2 ,d e v i c e s t a t u s ) ; 禁止中断 x d i s a b l e 5 9 3 3 m a i l b o x i n t e r r u p t 0 ; r e q u e s td e f e r r e dp r o c e d u r ec a l l l t h ea r g u m e n t st or e q u e s tm a yb ea n yv a l u e st h a ty o uc h o o s e 第l o 页 国防科技大学研究生院学位论文 i f ( ! m _ d p c f o r _ i r q r e q u e s t ( n u l l ,n u l l ) ) r e t u r nt r u et oi n d i c a t et h a t0 1 1 1 d e v i c ec a u s e dt h ei n t e r r u p t r e t u r nt r u e ; ) 在延迟过程调用例程中,进行相应的中断处理。判断$ 5 9 3 3 中断类型,若是申请读 数中断,设霞d m a 传输开始;若是读数完成中断,设置d m a 传输结束并发送事件消 息。具体流程见图2 _ 4 。 命每删 i 设置d 置啪r 输开插 设置强啪输结柬 i l 发送事件消息l 图2 - 4 d p c 例程流程图 v o i da t r l c p c i d e v i c e :d p c f o r _ i r q ( p v o i da r g l ,p v o i da r 舀) 若是d m a 设备,应判断中断类型为申请或完毕并区分处理 i f ( l a s t d e v i c e s t a t u s & a t p _ m b 4 3 _ i n t ) 申请读数中断 s e t u p d m a s t a r t o ; ) e l s e i f ( l a s t d e v i c e s t a t u s & a d d o n 2 p c i f i f o _ i n t ) f ,关读数完毕中断 s e m p d m a o v e r 0 ; i f ( m _ a p p n o t i f i c a t i o n e v e n t ) 发送事件通知应用程序触发内存拷贝, m _ a p p n o t i f i c a t i o n e v e n t - p u l s e 0 ; ) ) # e l s e 第1 1 页 国防科技大学研究生院学位论文 ,若不是d m a 设备,直接发送事件通知应用程序 i f ( ma p p n o t i f i c a t i o n e v e n t ) m _ a p p n o t i f i c a t i o n e v e n t - p u l s e ( ) ; # e n d i f m a k ea i po b j e c tt or e f e r e n c et h ec u r r e n ti r p k l r pi ( c u r r e n t l r p 0 ) ; i f ( ! i i s n u l l o ) f i s t a t u s o2s t a t u s _ s u c c e s s ; i i n f o r m a t i o n 0 = o : p n p n e x t i r pc o m p l e t e st h i si r pa n ds t a r t sp r o c e s s i n gf o rt h en e x ti r pi nt h eq u e u e p n p n e x t i r p ( 1 ) ; ) 设景d m a 传输开始需要完成如下工作: 1 允许“读数完毕中断”; 2 产生一个h 脉冲清除r a m 地址: 3 复位f i 内标志位; 4 设置d m a 传输首地址寄存器i 哪a r ; 5 设置d m a 传输字节数寄存器m 盯c ; 设置d m a 传输结束只需要禁止“读数完毕中断”。 通过类k e v e n t 获取应用程序创建的事件的对象指针后,可以发送事件消息通知应用 程序触发内存拷贝。 ( 3 ) d m a 传输 d r i v e r w o r k s 提供了三个类:k d m a a d a p t e r ,k d m a t r a m f e r 和k c o m m o n d m a b u f f e r 类,用于实现d m a 操作。k d m a a d a p t e r 类用于建立一个d m a 适配器,它说明了d m a 通道的特性。k d m a t r a n s f e r 类用于d m a 传输控制。k c o m m o n d m a b u f f e r 类用于申请系 统提供的公用缓冲区。 1 k d m a a d a p t e r 类 对于d m a 传输,驱动程序需要创建一个d m a 适配器对象,它标明一个d m a 通道 的特性和提供串行化访问的服务。 k d m a a d a p t e r 类实现对d m a 适配器的操作。 i n i t i a l i z et h ed e v i c ed e s c r i p t o rf o rt h ed m ao b j e c tu s i n gt h ea s s i g n e dr e s o u r c e d e v i c ed e s c r i p t i o nd d ; r t l z e r o m e m o r y ( & d d ,s i z e o f ( d d ) ) ; d d v e r s i o n = d e v i c ed e s c r i p t i o n d d m a s t e r ;t r u e ; 是否为总线主控设备 d d s c a t t e r g a t h e r = f a l s e ; 是否支持分散聚集 d d d e m a n d m o d e = t r u e ; 第1 2 页 国防科技大学研究生院学位论文 d d a u t o l n i t i a l i z e = f a l s e ; d d d m a 3 2 b i t a d d r e s s e s = t r u e : d d i g n o r e c o u n t = f a l s e ; d d d m a c h a n n e l = o : d d i n t e r f a c e t y p e = p c i b u s ; d d d m a w i d t h = w i d t h 3 2 b i t s ; d d d m a s p e e d = c o m p a t i b l e ; d d m a x i m u m l e n g t h 2 m a x _ d m a _ l e n g t h ; ,i n “i a l i z et h ed m a a d a p t e ro b j e e t i f ( m _ d m a i n i t i a l i z e ( & d d ,m _ l o w e r p d 0 0 ) ) e l s e i n v a l i d a t e ( ) ; r e t u r ns t a t u s ; 是否使用3 2 位物理地址 总线类型 p c i 默认总线宽度 单个传输的最大长度 2 k d m a t r a n s f e r 类 k d m a t r a n s f e r 类控制d m a 的传输。k d m a t r a n s f e r 类要求一个k d m a a d a p t e r 类实 例。如果需要一个公共缓冲区,可以要求一个k c o m m o n d m a b u f f e r 类实例。 启动一个d m a 传输、d m a 传输数据缓冲区物理地址和传输字节数,以及d m a 传 输结束后数据由公共缓冲区拷贝到应用程序数据缓冲区,这些工作都是由k d m a t r a n s f e r 类实现的。 3 k c o m m o n d m a b u f f e r 类 对于d m a 操作,系统提供了一个特殊的内存,即物理上连续的内存,称为公用缓冲 区。k c o m m o n d m a b u f f e r 类实现对公用缓冲区的操作。 k c o m m o n d m a b u f f e r m _ d m a b u f f e r ; 在p n p 启动例程中,初始化类实例。如下所示: # d e f i n em a xd m al e n g t ho x 8 0 0 0 单次d m a 传输大小 # d e f i n ed m at ra n s f e rb y r e s3 2 0 + 2 4 0 + 2一帧图像的大小 d m a t r a n s f e r b y t e s = d m a _ t r a n s f e r _ b y t e s ; m _ d m a b

温馨提示

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

评论

0/150

提交评论