




已阅读5页,还剩64页未读, 继续免费阅读
(信号与信息处理专业论文)基于通用处理平台的高速数据传输技术.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着现代信息科学技术的发展 实时图像处理技术在实际应用中越来越广泛 研究切 实有效的图像处理算法 优化算法结构 采用具有高速运算能力的处理器进行高速实时处 理 有机结合软件和硬件 就成为解决图像处理算法复杂性和实时性之间矛盾的有效途径 同时也要将设计好的算法尽快地进行仿真 试验 以检验算法的可行性 考虑到算法通常 是用w i n d o w s 平台下的v c 或者l i n u x 下的g c c 开发的 所以开发出一种基于p c 的实时 图像处理平台 可以很方便的将这些算法移植到这个实时处理平台上 检验其可行性 同 时也可以利用现代p 4 处理器的高速运算能力 进行实时处理 因此具有很高的实践价值 本文深入地分析了在w i n d o w s 编制基于w d m 驱动程序的过程 在深入理解了w i n d o w s 操作系统的工作原理的基础上 给出了具体的驱动程序和设计思路 同时设计了应用程序 的软件框架 同时本文也深入分析了l i n u x 内核及其数据结构 在理解内核各部分之间的协作和联 系的基础上 描述了在l i n u x 下构建本设计方案的过程 思路 给出了一个具体的设计方 案 试验表明 本设计方案在帧频为8 0 0 c s 时 数据包为6 4 k b 时 达到了1 1 8 m b s 的传 输速度 接近了p c i 的理论传输速度1 3 3 m b s 达到了预期的目标 关键词 p c i w d m 驱动程序 l i n u x a b s t r a c t w i t hd e v e l o p i n go fi m a g ep r o c e s s i n gt e c h n o l o g y i ti se f f e c t i v er o u t et h a tr e s e a r c h i n g a v a i l a b i l i t yi m a g ep r o c e s s i n ga r i t h m e t i c i n t r o d u c ei n t e g r a t e c i r c u i ta n dh i g hs p e e dp r o c e s s o r a c h i e v eh i 曲s p e e dp a r a l l e lp r o c e s s i n t e g r a t es o f t w a r ea n dh a r d w a r et os o l v ea n t i n o m yo f c o m p l e xi m a g ep r o c e s s i n ga r i t h m e t i ca n dr e a lt i m e a l s o w en e e dt oe m l u l a t eo u rw e l l d e s i g n e d a l g o r i t h ma n dt e s ti ta ss o o na sp o s s i b l e w h i c h c a r lt e l lu sw h e t h e ri tc a nb ed o n e u s u a l l y t h e a l g o r i t h mi sd e v e l o p e db yv c u n d e rw i n d o w so rg c cu n d e rl i n u x u n i x w i t hai m a g e p r o c e s s i n ge m l u l a t o rb a s e do np c w ec a np o r to u ra l g o r i t h mt ot h i se m l u l a t o ra n dt e s tt h i s a l g o r i t h me a s i l y m e a n w h i l e w i t ht h eh i 曲s p e e dp r o c e s s o r p 4m a d eb yi m e l w ec a nd os o m e r e a lp r o c e s s i n g s o d o i n gt h i sj o bw i l lb ew e l l w o r t h i n e s s t h i sa r t i c l ed e s c r i b eh o wt od e s i g naw d md e v i c ed r i v e r a f t e ru n d e r s t a n d i n gh o wt h e w i n d o w sw o r k sa n do f f e r e daw e l l d e s i g n e dd e v i c ed r i v e ra sw e l la si d e ao fh o wt o i m p l e m e n t m e a n w h i l e w ed e s i g n e daa p p l i c a t i o nf r a m e t h i sa r t i c l ea l s od e e p l ya n a l y s es t r u c t u r eo fl i n u xk e m e la n dr e l a t i o nb e t w e e nt h ee a c h p a r to ft h ek e m e la n dd e s c r i b eh o w t ob u i l dt h i sp r o j e c tu n d e rl i n u x a n do f f e r e dai m p l e m e n t i d e a t h er e s u l to ft e s ts h o w st h a tw h e nf r a m ef r e n q u e n c yi s8 0 0 c sa n dt h es i z eo fd a t ap a c k a g e i s6 4 k b t h ed a t at r a n s f e rw i l lb e118 m b s w h i c hi sw e l la c h i e v e do u rr e q u i r e m e n t k e yw o r d s p c i w d m d e v i e ed r i v e r l i n u x 本人申明 本人郑重申明 所呈交的学位论文 是本人在导师的指导下 独立 进行研究所取得的成果 除文中已经注明引用的内容外 本论文不包含 任何其他个人或集体已经发表或撰写过的科研成果 对本文的研究做出 重要贡献的个人和集体 均已在文中以明确方式标明 本人完全意识到 本声明的法律责任由本入承担 论文作者签名 主互日期 扣s s g 关于学位论文使用授权的声明 本人完全了解中国科学院光电技术研究所有关保留 使用学位论文 的规定 同意中国科学院光电技术研究所保留或向国家有关部门或机构 送交论文的复印件和电子版 允许论文被查阅和借阅 本人授权中国科 学院光电技术研究所可以将本学位论文的全部或部分内容编入有关数 据库进行检索 可以采用影印 缩印或其他复制手段保存论文和汇编本 学位论文 保密论文在解密后应遵守此规定 论文作者签名 彳务彳 i 导师签名 酶吼一 第一章引言 第一章引言 1 1 课题来源 本课题来源于国家8 6 3 计划预研课题 主要是针对目前对算法仿真平台的需求 以及 对大数据量接口的要求 设计一套实现高速数据传输接口的软件解决方案 1 2 课题研究目的和意义 实时图像处理是国际信号处理领域的前沿热点课题 在许多领域有着广泛的应用 如 应用在天文观测 粒子碰撞 交通监控 工业探伤 生物医学 电视跟踪等方面 随之而 来的是图像类型越来越广泛 背景越来越复杂 系统的运算量越来越多 因此实时图像处 理要有足够高的处理速度 以降低系统的动态延迟 确保其大带宽和高跟踪精度 同时图 像处理算法也是一个非常活跃的研究领域 一直在不断进步 开发出了许多优秀的算法 但是在过去成像跟踪系统中 算法开发出来 需要先转化为d s p 汇编语言 再加载入专用 的图像处理平台 通常是用d s p f p g a 实现 以检验算法的可行性 这样既浪费了人力做 这一转化工作 同时也使算法的验证变得很迟缓 不利于算法开发者深入研究 同时 从 c c d 相机输入的数据量很大 需要高速的传输接口将信号引入处理平台进行处理 同时 也需要将处理后的信号实时反馈 以满足实时性的需要 为了解决这个矛盾 开发出一种 基于p c 机的图像处理实时仿真系统具有积极的意义 随着微处理器性能不断提高 特别多核处理器的引入 使得传统p c 机在运算速度上 不断加强并且多任务工作的性能不断提高 这样对于我们建立基于p c 的实时图像处理平 台提供了硬件上的有力支撑 因此建立高速数据传输接口对于我们建立这个平台具有重要 的意义 数据传输接口的速度越快 平台的实时性就越好 1 3 国内外现状和发展趋势 p c i 总线是i n t e l 公司推出的一种高性能局部总线 其数据总线为3 2 位 且可扩展为 6 4 位 最大传输率为1 3 2 2 6 4 m b s 是目前使用非常普遍的一种总线 并且支持多组外围 设备 不受制于处理器 为中央处理器与高速外围设备提供一座沟通的桥梁 提高了数据 吞吐量 p c i 总线具有严格的总线规范 这就保证了它具有良好的兼容性 符合p c i 总 线规范的扩展卡可以插入任何p c i 系统可靠地工作 目前实现p c i 接口一般采用专用器件 有效方案分为两种 使用可编程逻辑器件 采用可编程逻辑器件实现p c i 接口比较灵活 可以利用的器件也比较多 但由于p c i 协议的复杂性 其接口的实现比i s a 等总线要困难 的多 这种方案难度比较大 设计周期较长 采用专用接口器件不仅对p c i 协议有良好的 基于通用处理平台的高速数据传输技术 支持 而且提供设计者良好的接口 这些都大大减少了设计者的工作量 w i n d o w s 操作系统是目前世界上使用最多的桌面系统 其上有丰富的软件资源可以利 用 目前大多数的图像处理算法都是用w i n d o w s 下的v c 集成开发环境开发的 作为全 世界最大的软件公司 微软定义出了了一套新的驱动程序开发规范 w d m w d m 通过提供 一种灵活的方式来简化驱动程序的开发 在实现对新硬件支持的基础上减少并降低所必须 开发的驱动程序的数量和复杂性 l i n u x 操作系统来自一个大学生的个人爱好 经过十几年的发展 它已经成为了是目 前系统软件业的热点 具有开放源代码 服从p o s i x 规范 价格便宜 功能强大的优点 目前国内在接口技术上大多采用了p c i 接口 并且通常也使用专用接口器件 但由于 硬件人员对操作系统内核并不熟悉 所以 通常的做法是使用w i n d r i v e r 这个工具来编制 设备驱动程序 w i n d r i v e r 是将底层细节封装成一个个a p i 函数 编程人员只需要要在应 用层编写程序 通过调用a p i 函数就可以得到控制设备的目的 它的特点是简单 容易 上手 不需要理解操作系统的底层结构 特别适合熟悉v c 的编程人员 同时它也提供 了若干工具 方便了程序员进行调试等等 但是正是由于封装的特性 导致了它产生的驱 动程序在执行时效率较低 速度较d d k 和d r i v e r s t u d i o 编制的程序要慢 并不能满足我 们对传输速度的要求 因此本文在详细研究m i c r o s o f t 的w d m 编程规范的基础上 设计出了一套基于 p c i 9 0 5 4 接口芯片的高速数据传输接口的软件层的解决方案 编制了p c i 9 0 5 4 在w i n d o w s 2 0 0 0 x p 的驱动程序 并完成了对应应用程序的软件框架 并且也对整个系统进行了仿真 演示 取得了满意的效果 同时考虑到未来开源软件的发展如火如荼 以及国家大力提倡在国防工业使用开源的 操作系统 例如l i n u x 所以也提供了在l i n u x 下的该接口设计的软件解决方案 得到了 预期的效果 1 4 主要研究工作 在大量查阅文献的基础上 深入细致地分析了w d m 的编程规范 w i n d o w 2 0 0 0 x p 的底 层数据结构和p c i 9 0 5 4 的数据说明书 同时也深入研究了l i n u x 的内核源代码 完成了以 下几个方面的工作 1 设计并实现了采用p c i 9 0 5 4 的图像传输接口的软件框架 编制了基于w d m 的p c i 9 0 5 4 的驱动程序和应用程序 第一章引言 2 设计了在l i n u x 操作系统下的d e m o 程序 使设计思想能够跨平台实现 3 对a r d e n c e 的w i n d o w sr t x 进行了摸索 基于通用处理平台的高速数据传输技术 第二章硬件结构 2 1 引言 p c i 总线是i n t e l 等公司于1 9 9 3 年推出的一种高性能局部总线 其数据总线为3 2 位 且可扩展为6 4 位 最大传输率为1 3 2 2 6 4 m b t s 是目前使用非常普遍的一种总线 并且 支持多组外围设备 不受制于处理器 为中央处理器与高速外围设备提供一座沟通的桥梁 提高了数据吞吐量 p c i 总线具有严格的总线规范 这就保证了它具有良好的兼容性 符合p c i 总线规范的扩展卡可以插入任何p c i 系统可靠地工作 目前实现p c i 接口一般采用专用器件 有效方案分为两种 使用可编程逻辑器件 采用可编程逻辑器件实现p c i 接口比较灵活 可以利用的器件也比较多 但由于p c i 协 议的复杂性 其接口的实现比i s a 等总线要困难的多 这种方案难度比较大 设计周期 较长 采用专用接口器件不仅对p c i 协议有良好的支持 而且提供设计者良好的接口 这些都大大减少了设计者的工作量 有鉴于此 我选用了p c i 9 0 5 4 这种专用的p c 接口芯 片 2 2 主要的硬件设计结构图 c i 9 0 5 4 眦总线控常蟠 参 ip c i 总线 参 系统内存 l 处理梗块 l 图2 1 硬件结构图 2 3p c i 9 0 5 4 结构和性能 p c i 9 0 5 4 是美国p l x 公司继p c i 9 0 5 2 之后推出的又一低成本p c i 总线接口芯片 低 功耗 p q f p1 7 2 p i n s 封装 它采用了先进的p l x 数据管道结构技术 可以使局部总线快 速转换到p c i 总线上 第二章硬件结构 2 3 1p c i 9 0 5 4 主要特性 2 3 1 1p c i 9 0 5 4 的主要特性如下 符合p c i v 2 1 v 2 2 规范 包含p c i 电源管理特性 支持v p d v i t a lp r o d u c td a m 的p c i 扩展 支持p c i 双地址周期 地址空间高达4 g b 具备1 2 0 准备报文单元 完全兼容1 2 0v 1 5 规范 提供了两个独立的可编程d m a 控制器 每个通道均支持块和s c a t t e r g a t h e r d m a 方式 d m a 通道0 支持请求d m a 方式 在p c i 启动模式 p c i9 0 5 4 可插入类型1 和类型2 的配置周期 在p c i 和l o c a lb u s 的数据传送速率高达1 3 2 m b s 支持本地总线 l o c a lb u s 直接接1 2 1m o t o r o l am p c 8 5 0 或m p c 8 6 0 系列 i m e li 9 6 0 系列 i b m p p c 4 0 1 系列及其它类似总线协议设备 本地总线速率高达5 0 m h z 支持复用 非复用的3 2 位地址 数据 本地总线可为 三种模式 m 模式 c 模式和j 模式 可利用模式选择引脚加以选择 具有可选的串行e e p r o m 接口 本地总线时钟由外部提供 该时钟可和p c i 时钟异步 具有8 个3 2 位m m l b o x 寄存器和2 个3 2 位d o o r b e l l 寄存器 2 3 1 2p c i 9 0 5 4 的内部结构组成 p c i9 0 5 4 内部有6 种可编程的f i f o 其长度如表2 1 所示 以实现零等待突发传 输及本地总线和p c i 总线之间的异步操作 表2 1p c i 9 0 5 4 的f i f o f i f o l e n g t h p c ii n i t i a t o rr e a d 1 6d w o r d s p c ii n i t i a t o rw r i t e 3 2d w o r d s p c i t a r g e t r e a d1 6d w o r d s p c i t a r g e t w r it e3 2d w o r d s d m ar e a d 3 2d w o r d s d m aw r i t e3 2d w o r d s 基于通用处理平台的高速数据传输技术 p c i 9 0 5 4 的内部结构如图2 2 所示 i l f 挺耐 融 融赫 i p a o 口m 咯 i i l a e a lc a r l f i g l 5 妇i im i mi l 毛日毓嘲 i m l n 如i z 矗l l 口n 八 ii 一 a 哪f p c i 日叫l o 翻1 8 蚺 2 铀b s b 拓 瞄i i e s 翩f j o s 涮溺礴f h 威b t 暑 害 hj9 黼一 i p c l 如断晰e i l 1 0 p e ti卜 i n i e r t a e e 竺 卜t m x q 一 p c j 白时r d i l 啪j 耐x 瞻8 一西t 口晒8 雪 2 w i d m 柏 1 8 o r 3 2 鼯p a 日咀 嚣揣 h d 嗽州虻妇 cfi i 留擗i 卜 7 d m a x w s li i1d m a o hl c c p c l h d m a x f m i e n f f m 弋 c o b n v 4 黼 叫 p c it a r g e tw i l l e 一 1 喘訾 卜一 u 捌 v wn 洲豳 h i i 1 li n f p c i t m g e r e a d i t x i a d a q d a t j 善 c l o 吲n l m c i1 2 0 m 唧 l i d m a l id m a s 酬g 8 岍l lu 1 种dx f e rl 图2 2p c i 9 0 5 4 的内部框图 p c i 9 0 5 4 还提供了一个串行e e p r o m 配置接口 容量2 k 字节 在配置存储器中存放了 厂家标示 设备标示以及本地总线的基地址空间 i o 空间 中断控制信号等信息 当初 始化时 系统自动将串行e e p r o m 中的配置参数装入p c i 配置寄存器 并根据本地总线 对内存 v o 端口和中断的需求统一划分 自动配置 2 3 1 3p c i 9 0 5 4 的总线操作 p c i 9 0 5 4 的总线操作包括p c i 总线操作和本地总线操作 对于p c i 总线操作 它完全 遵守2 2 版本p c i 规范 下面主要讨论一下本地总线操作 p c i 9 0 5 4 本地总线支持非多路 复用3 2 位地址 数据总线 多路复用3 2 位和8 位 1 6 位或3 2 位本地总线设备从属访问 运行速率高达5 0 m h z 可以获得2 0 0 m b s 的本地总线突发传输速率 p c i 9 0 5 4 有3 种工作方式 分别为c m 和j 模式 m 模式主要是针对m o t o r o l a 公 司高性能m p c 8 5 0 8 6 0 的应用而设计的 主要应用在电信领域 j 模式的接口设计相对比 第二章硬件结构 较麻烦 比较常用的是c 模式 c 模式下p c i 9 0 5 4 分为p c ii n i t i a t o r 操作和p c it a r g e t 操作 在p i ci n i t i a t o r 操作过程 中 本地处理器或本地总线主控设备能够直接通过p c i 9 0 5 4 访问p c i 总线 发起 l o c a l t o p c i 的数据传输 而在p c it a r g e t 操作过程中 p c i 总线主控设备可以以可编程 的等待状态 总线宽度和突发传输功能访问p c i 9 0 5 4 的三个本地空间 空间0 空间1 和 扩充r o m 空间 2 3 1 4p c i 9 0 5 4 的d m a 突发模式 p c i 9 0 5 4 集成了两个互相独立的d m a 通道 每个通道都支持b l o c kd m a 和 s c a t t e r g a t h e rd m a 通道0 还支持d e m a n dd m a 传输方式 b l o c kd m a 要求p c i 主机或l o c a l 主机提供p c i 和l o c a l 的起始地址 传输字节数 传输方向 主机设定d m a 开始位启动数据传输 一旦传输完成 p c i 9 0 5 4 设定d m a 传 输结束位 结束d m a 如果中断允许位被使能 在传输结束时p c i 9 0 5 4 将向主机申请中 断 在d m a 传输中 p c i 9 0 5 4 既是p c i 总线的主控器又是l o c a l 总线的主控器 s c a t t e r g a t h e rd m a 要求主机在p c i 空间或l o c a l 空间设定d e s c r i p t o r 模块 模块包 括p c i 和l o c a l 的起始地址 传输字节数 传输方向和下一个d e s c r i p t o r 模块的地址 p c i 9 0 5 4 载入第一个d e s c r i p t o r 模块并发起传输 连续加载下一个模块 直到它侦测到 链结束位 有效 p c i9 0 5 4 设置 传输结束位 或者申请p c i 或l o c a l 中断 这种模式下 p c i 9 0 5 4 也可以在每个模块加载时有效中断信号结束d m a 传输 若d e s c r i p t o r 模块在本 地存储空间 可以编程使d m a 控制器在每次d m a 传输结束后清除传输字节数 2 4p c i 结构简介 符合p c i 2 1 规范的系统最多可能有2 5 6 个p c i 总线 用一个字节表示系统中的p c i 总线 也就是b u sn u m b e r 每个p c i 总线可挂2 5 6 个功能设备 一个物理设备中能完成一 种功能即是一个功能设备 功能设备也用一个字节表示 其中高5 位表示3 2 个p c i 物理 设备 即d e v i c e n u m b e r 每个物理设备最多有8 个功能 用低3 位表示 即f u n c t i o n n u m b e r 图2 3 描绘了典型的p c i 体系结构 2 4 1 配置空问简介 每个功能设备都有一个相互独立的配置空同 2 5 6 个字节 可以分为两部分 一个是 6 4 字节的配置首区 一个是1 9 2 字节的设备特殊配置寄存器空间 前6 4 字节是s p e c i f i c 规定 有相同的格式 而后1 9 2 字节随不同的设备变化 前6 4 字节的内容随其中首区类 基于通用处理平台的高速数据传输技术 型的值的不同而变化 在p c i 2 1 中定义两种首区类型 n o n b d d g e 和b r i d g e 图2 3 p c i 体系结构 图2 4 描述了p c i 的配置寄存器空间 3210 d e v i c ei dv e n d o ri d s t a t u sr e g i s t e rc o m m a n dr e 酉s t c r c l a s sc o d es u b c l a s sc o d e p r o g 1 f r e v i s i o ni d b i s th e a d e rt y p e l a t e n c yt i m e r c a c h el i n es i z e b a s ea d d r e s sr e g i s t e r0 b a s ea d d r e s sr e g i s t e r1 b a s ea d d r e s sr e g i s t e r2 b a s ea d d r e s sr e g i s t e r3 b a s ea d d r e s sr e g i s t e r4 b a s ea d d r e s sr e g i s t e r5 c a r db u sc i sp o i n t e r s u b s y s t e mi d s u b s y s t e mv e n d o ri d e x p a n s i o nr o m b a s ea d d r e s s r e s e r v e d r e s e r v e d m a xl a tm i ni a t i n t e r r u p tp i ni n t e r r u p tl i n e 图2 4p c i 配置首区结构 n o n e b r i d g e 其中比较重要的几项是 1 1v e n d o ri d 一由p c is i g 分配给生产厂商的n u m b e r s o s 中的p c i 设备检测程序 通常利用这项和d e v i c ei d 项来检测设备是否插入系统 2 d e v i c ei d 由厂商自己分配给产品的n u m b e r s 第二章硬件结构 3 c o m m a n d r e g i s t e r 一控制设备基本功能 4 s t a t u sr e g i s t e r 一显示p c i 设备的状态 5 h e a d e rt y p er e g i s t e r b i t7 是否多功能设备 b i t6 o 配置首区模式 6 i n t l i n e 指示设备的中断连接在系统中断控制器的那一中断上 7 i n t p i n 指示设备用那一中断引脚上 o o 不使用中断引脚 0 1 i n l a 0 2 i n t b 撑 0 3 i n t c 拌 0 4 i n t d 8 基本地址寄存器 在操作系统管理机器以前 上电运行的软件要建立一种稳定 的地址映射 这样必须判断设备是否需要地址映射 映射到m e m o r y 或i o 中 映射多大的空间 所有这些都由基本地址寄存器泱定 b i t 0 泱定映射到m e m o r y 还是比i 映射到m e m o r y 的寄存器结构如下 b i t 0 0 b i t 2 1 类型 一 0 0 4 g b 空间的任一地方 叭 低1 m b 空间 1 0 6 4 位空间 1 l 保留 b i t 3 p r e f e t c h a b l e b i t3 1 4 基地址 映射到i o 的寄存器结构如下 b i t 0 1 b i t l 保留 b i t 3 1 3 i o 基地址 地址空间大小的决定 向基本地址寄存器写全1 然后扫描返回值 如果m e m o r y 地址从第四位开始扫描 i o 地址从第三位开始扫描 e x p a n s i o nr o m 从第1 1 位开始扫描 假设l o w b i t 等于第 一个非零值 地址空间的大小为2 的l o w b i t 次方 f o re x a m p l e 向1 0 d w o r d 写 9 基于通用处理平台的高速数据传输技术 o x f f f f f f f f h 返回f f f 0 0 0 0 0 h 表示m e m o r y 地址映射于4 g b 空间的任一地方 地 址空间大小为1 0 4 8 5 7 6 即1 m b 图2 5 描述了p c i p c i 桥的配置首区结构 32l0 d e v i c e i dv e n d o ri d s t a t u sr e g i s t e rc o m m a n d r e g i s t e r c l a s sc o d es u b c l a s sc o d e p r o g i f r e v i s i o ni d b i s th e a d e rt y p e l a t e n c yt i m e r c a c h el i n es i z e b a s ea d d r e s sr e g i s t e r0 b a s ea d d r e s sr e g i s t e r1 s e c o n d a r yl a t e n c y s u b o r d i n a t eb u s s e c o n d a r yb u sp r i m a r yb u sn u m b e r t i m e rn u m b e rn u m b e r s e c o n d a r ys t a t u s l i m i ti 0b a s e m e m o r yl i m i tm e m o r yb a s e p r e f e t c h a b l em e m o r yl i m i tp r e f e t e h a b l em e m o r yb a s e p r e f e t c h a beb a s eu p p e r3 2b i t s p r e f e t c h a b l el i m i tu p p e r3 2b i t s f ol i m i tu p p e r1 6b i t si ob a s eu p p e r1 6b i t s r e s e r v e d e x p a n s i o nr o m b a s ea d d r e s s b r i d g ec o n t r o l l e ri n t e r r u p tp i ni n t e r r u p tl i n e 图2 5p c i p c i 桥的首区结构 2 4 2 对配置空间的访问 对配置空间的访问可以用b i o sc a l l 和直接地址的访问 下面仅仅叙述直接地址访 问 b i o sc a l l 对我们本次设计用处不大 p c i 2 1 规定两种访问机制 即配置机制1 和配置机制2 配置机制2 为向前兼容而定 在以后的桥路中不再支持 配置机制1 它采用了两个双字i o 位置 第一个双字位置 c f 8 h 是一个读写寄存器 命名为c o n f i ga d d r e s s 另一个双字位置 c f c h 命名为c o n f i gd a t a 通过对 c o n f i ga d d r e s s 写指定的总线号设备号功能号以及寄存器的值 然后对 c o n f i gd a t a 读写就可以对指定寄存器进行读写操作 c o n f i ga d d r e s s 的格式如下 b i t3 1 e n a b l ec o n f i g u r a t i o ns p a c em a p p i n g b i t3 0 2 4 r e s e r v e d b i t2 3 16 b u s 第二章硬件结构 b i tl5 1 d e v i c en u m b e r b i tl0 8 f u n c t i o nn u m b e r b i t7 2 r e g i s t e rn u m b e r b i t1 0 0 0 访问方法 读寄存器的值 d w o r da d d r20 x 8 0 0 0 0 0 0 0 lj w o r d c o u s 0 x f f 1 6 1 d e v i c e o x l f 1 1 i f u n c 0 x 0 7 8 i r e g 0 x f c 确定偏移量 d w o r d o r i g i n p 0 x c f 8 保存前值 o u t p d 0 x c f 8 a d d r 输出偏移量 v a l u e i n p d o x c f c 读双字值 o u t p d 0 x c f 8 o r i 曲 恢复原值 写寄存器 d w o r da d d r20 x 8 0 0 0 0 0 0 0 l 1 d w o r d b u s 0 x f f 1 6 i d e v i c e 0 x l f 1 1 i f u n c 0 x 0 7 8 i r e g 0 x f c d w o r d o r i g2i n p d 0 x c f 8 o u t p d 0 x c f 8 a d d r o u t p d o x c f c v a l u e 写双字值 o u t p d 0 x c f 8 o r i g 配置机制2 将p c i 配置空间映射到c p u 的4 k i o 空间 当允许p c i 空间映射时 任何对i o 空间c 0 0 0 一c f f f 的读写均转化为p c i 配置操作 不允许p c i 空间映射时 对 那个地址范围的操作均引导到系统中的适当的i o 2 1 使用了两个寄存器 配置空同允许 寄存器 c s e c f 8 h 和前向寄存器 f o r w o r d 一c f a h c s e 寄存器的格式如下 b i t 0 s p e c i a lc y c l ee n a b l e b i t l 一3 f u n c t i o nn u m b e r b i t4 7 n o n z e r 0 2 a l l o wc o n f i g u r a t i o n 写目标b u s 号到前向寄存器 写一字节的值给c f 8 这个字节不产生特殊周期 堑 塑竺型兰鱼塑壹垩墼堡堡塑垫查 允许配置映射 确定设备功能号 对c 0 0 0 一c f f f 的读写就是对相应寄存器的读写 c x y z h 中x 代表物理设备号 y z 的高6 位表示寄存器号 读寄存器的值 b y t e o l d e n a b l e i n p 0 x c f 8 b y t e o l d b u s h a p 0 x c f a o u t p 0 x c f a b u s o u t p 0 x c f 8 0 x s o e n a b l ec o n f i g u r a t i o ns p a c e w o r d a d d r 2 0 x c 0 0 0 l d e v i c e 0 x 0 f 8 r e g v a l u e2 i n p d a d d r o u t p o x c f a o l d b u s o u t p 0 x c f 8 o l d e n a b l e 写寄存器的值 b y t eo l d e n a b l e i n p 0 x c f 8 b y t e o l d b u s i n p 0 x c f a o u t p 0 x c f a b u s o u t p o x c f 8 0 x 8 0 e n a b l ec o n f i g u r a t i o ns p a c e w o r da d d r30 x c 0 0 0f d e v i c e 0 x 0 f d e v i c e e x t e n s i o n d e v i c e t y p e 是一个枚举常量 描述设备类型 i o 管理器基于l o c r e a t e d e v i c e 的 个参数初始化这个成员 过滤器驱动程序有可能需要探测该值 s t a c k s i z e 统计从该设备对象开始向下直到p d o 之间的设备对象个数 该域 的目的是告诉其它代码 如果把该设备对象的驱动程序作为其i r p 的第一发送 对象 那么应在这个i r p 中创建多少个堆栈单元 s t a c kl o c a t i o n w d m 驱动 程序通常不需要修改该值 因为创建设备堆栈的支持函数会自动完成这个任 务 a 1 i g n m e n t r e q u i r e m e n t 是一个位掩码 执行d m a 传输的设备直接使用内存中 的数据缓冲区工作 h a l 要求d m a 传输中使用的缓冲区必须按某个特定界限对 第三章在w i n d o w s 下的设计与实现 齐 而且设备也可能有更严格的对齐需求 a l i g n m e n t r e q u i r e m e n t 域表达了 这个约束 它要求的地址边界减一 3 2 2 41 1 0 请求包 i r p w i n d o w s2 0 0 0 x p 的i o 子系统是一个包驱动的系统 在这个系统中每个i o 操作可 以通过一个i r p 来描述 从编程的角度看 i r p 是i o 管理器在响应一个i o 请求时从非 分页系统内存中分配的一块大小可变的数据结构内存 i o 管理器每受到一个来自用户的 请求就创建一个该结构 并将其作为参数传给驱动程序的d i s p a t c h x x x s t a r t l o 等例程 该结构中存放有请求的类型 用户缓冲区的首地址 用户请求数据的长度等信息 驱动程 序处理完这个请求后 也在该结构中添入处理结果的有关信息 调用i o c o m p l e t e r e q u e s t 将其返回给i o 管理器 用户程序的请求随即返回 每个i r p 可以被看成由两个部分组成 固定部分和一个i o 堆栈 i r p 的固定部分包 含关于请求的信息 i 0 堆栈则包含一系列i o 堆栈单元 i os t a c kl o c a t i o n 单元 的数目应与驱动程序堆栈中处理这一请求的驱动程序数目相同 每个单元对应一个将处理 该i r p 的驱动程序 i r p 的结构如图3 7 所示 绍 图3 7i r p 的结构 1 i r p 固定部分的域 图3 8 显示了i r p 固定部分的数据结构 以下是对结构中允许驱动程序访问的域的介 基于通用处理平台的高速数据传输技术 1 m d l a d d r e s s 域指向一个内存描述符表 m d l 该表描述了一个与该请求关联 的用户模式缓冲区 如果顶级设备对象的f l a g s 域为d o d i r e c t i o 则i o 管理器为i r p m jr e a d 或i r pm 3w r i t e 请求创建这个m d l 如果一个 i rp m j d e v i c ec o n t r o l 请求的控制代码指定m e t h o d j n d i r e c t 或 m e t h o d o u t d i r e c t 操作方式 则i o 管理器为该请求使用的输出缓冲区创建 一个b 1 1 l m d l 本身用于描述用户模式虚拟缓冲区 但它同时也含有该缓冲区 锁定内存页的物理地址 为了访问用户模式缓冲区 驱动程序必须做一点额 外工作 t 律 i 墨誊势 m d l a d d r e s s f l a g s a s s o c i a t e l r p 下 f 基默如 豁兰啪 i o s t a t u s r e q u e s t o r m o d ep e n d i n g r e t u r n e dl s 嚣 燕0 拳娃p 茳卜豢越r 瓣嘲0 0 0 器誊颦 c a n c e l i c a n c e l l r q l i t p e 簟皲f 黟嗡n 弼留冀ti 德牲露鑫塞髓o f t 鼎簿鹱鼙 驰嚣 s b 0 誊e f 蠢 p n q 譬棼精嚣r c a n c e l r o u t i n e u s e r b u f r e r t a j l 图3 8i r p 的数据结构 2 f l a g s 域包含一些对驱动程序只读的标志 但这些标志与w d m 驱动程序无关 3 a s s o c i a t e d i r p 域是一个三指针联合 其中 与w d m 驱动程序相关的指针是 a s s o c i a t e d l r p s y s t e m b u f f e r s y s t e m b u f f e r 指针指向一个数据缓冲区 该缓冲区位于内核模式的非分页内存中 对于i r p m j r e a d 和i r p m jw r i t e 操作 如果项级设备指定d ob u f f e r e di o 标志 则i o 管理器就创建这个数 据缓冲区 对于i r pm jd e v i c e c o n t r o l 操作 如果1 1 0 控制功能代码指出 需要缓冲区 见第九章 则i o 管理器就创建这个数据缓冲区 i o 管理器把 用户模式程序发送给驱动程序的数据复制到这个缓冲区 这也是创建i r p 过 第三章在w i n d o w s 下的设计与实现 程的一部分 这些数据可以是与w r i t e f i l e 调用有关的数据 或者是 d e v i c e i o c o n t r o l 调用中所谓的输入数据 对于读请求 设备驱动程序把读 出的数据填到这个缓冲区 然后i o 管理器再把缓冲区的内容复制到用户模 式缓冲区 对于指定了m e t h o db u f f e r e d 的t o 控制操作 驱动程序把所谓 的输出数据放到这个缓冲区 然后i o 管理器再把数据复制到用户模式的输 出缓冲区 4 i o s t a t u s 是一个仅包含两个域的结构 驱动程序在最终完成请求时设置这 个结构 i o s t a t u s s t a t u s 域将收到一个n t s t a t u s 代码 而i o s t a t u s i n f o r m a t i o n 的类型为u l o n g p t r 它将收到一个信息值 该信息值的确切含 义要取决于具体的i r p 类型和请求完成的状态 i n f o r m a t i o n 域的一个公认用 法是用于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏化营销策略分析-洞察及研究
- 稳定靶向纳米胶束构建-洞察及研究
- 手指画培训课件
- 科技部合同范本D007-技术咨询合同6篇
- 人教版四年级数学上学期第1单元大数的认识综合素养评价卷(含答案)
- 湖南省娄底市涟源市2024-2025学年七年级下学期期末道德与法治试题(含答案)
- 混沌态热力学分析-洞察及研究
- 手卫生指征培训课件
- 学生法制安全教育培训课件
- 低温信号转导及调控靶点分析-洞察及研究
- 脑电图基础知识及判读课件
- 病毒性脑炎临床路径(2016年版)
- 装修公司审计报告范本
- IATF16949项目移交管理程序
- 第三节酒店业的演变-课件
- GB/T 8758-2006砷化镓外延层厚度红外干涉测量方法
- GB/T 6396-2008复合钢板力学及工艺性能试验方法
- GB/T 35759-2017金属清洗剂
- ABB缠绕型干式变压器
- GB/T 21063.1-2007政务信息资源目录体系第1部分:总体框架
- 第三讲:新闻真实性分析课件
评论
0/150
提交评论