[DSP] 数字传输系统的 PCI 上位机 WinDriver 驱动设计

[复制链接]
4599|41
 楼主| god9987 发表于 2020-11-25 09:13 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 09:15 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 09:16 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 09:18 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 09:19 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 09:20 | 显示全部楼层
内核模式设备驱动程序的可移植性主要是指能够在基于同一内核运行机制
的操作系统之间进行移植。因为Windows XP、Windows98和Windows 2000操作系
统都是基于Windows NT平台发展而来,所以在Windows XP操作系统下开发的设备
驱动程序的源代码应当支持在其他NT平台上编译运行[
33]
。为了实现这种可移植
性,开发者需要使用C语言来编写设备驱动程序避免使用高级语言而造成不兼容
问题,避免因使用ANSIC标准规定之外的语言而造成驱动代码无法编译通过[
34]

如果使用编译器厂商的专有平台,则需要用条件编译指令隔离这些代码。需要注
意的是,由于操作系统之间存在差异,即使遵循以上设计方针也有可能在某些方
面影响设备驱动程序的可移植性。
 楼主| god9987 发表于 2020-11-25 10:03 | 显示全部楼层
因为不同的操作系统的资源配置不同,不同的硬件设备具有的资源不同,所
以要避免在驱动程序中对系统设置和设备特征的直接引用,可以使用操作系统的
HAL来代替直接引用。首先在驱动程序代码中要避免对设备的直接引用,通过操
作系统内核层的硬件抽象层(HAL)工具或调用低级总线驱动程序,或者设计一
个定制或标准的控制接口,通过控制面板程序与用户进行通信。然后,应当使用
注册表存储配置信息以保证硬件配置信息在计算机重新启动后依然存在。
 楼主| god9987 发表于 2020-11-25 10:07 | 显示全部楼层
在Windows XP操作系统中,CPU根据当前所有正在运行的线程的优先级决定
对每一个线程的时间和资源分配。线程抢先取决于线程的优先权,即设备驱动程
序执行运行在一个随时可能被其他线程抢先的环境中。对于运行于操作系统内核
层的内核模式设备驱动程序来说有三个意义重要的优先级值:PASSIVE_LEVEL,
DISPATCH_LEVEL,以及设备中断请求级DIRQL[
35]
。对于这三个优先级别来说,正
常线程执行在PASSIVE_LEVEL上优先级较低;软件中断执行在DISPATCH_LEVEL上,
比正常线程优先级高;优先级最高的是硬件中断信号,高于正常线程和软件中断。
所以只有当CPU的IRQL高于PASSIVE_LEVEL级即在赋予中断请求高于CPU一般线程
的优先级的情况下才不会发生线程抢占。所以必须假设设备驱动程序在任何时刻
都有可能被操作系统更为基本的操作任务抢占CPU,从而设备驱动程序会失去控
制权。
 楼主| god9987 发表于 2020-11-25 10:08 | 显示全部楼层
对于多处理器计算机,Windows XP 操作系统使用对称多处理器模型,即所
有的处理器等同。用户模式应用程序和系统任务可以在任何一个处理器上执行运
行,每一个处理器都平等地访问内存。但是由于多个处理器可能同时访问同一个
共享数据或共享硬件资源,所以设备驱动程序需要解决同步问题。在 Windows XP
平台上,可以通过同步对象——自旋锁来解决多处理器的同步问题。
 楼主| god9987 发表于 2020-11-25 10:13 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:15 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:16 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:17 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:18 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:19 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:22 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| god9987 发表于 2020-11-25 10:23 | 显示全部楼层
与 DDK、WDK 等开发工具相比,WinDriver 允许开发者在用户模式下开发
驱动程序,并为开发者搭建了驱动程序底层代码,因此开发者不需要掌握深厚的
操作系统知识,也不需要掌握 PCI 硬件设备原理,开发者只要学习 WinDriver
的开发流程,就可以通过调用 WinDriver 提供的 API 函数开发 PCI 驱动程序,开
发者节省了大量时间与精力,提高了驱动程序开发效率。虽然通过 WinDriver 开
发的是用户模式下的驱动程序,但是这并不影响驱动程序的性能,因为 WinDriver
向开发者提供了内核插入模式,开发者可以将性能要求高的代码通过内核指令传
入到内核,这样代码将直接运行在内核模式下以达到性能要求。WinDriver 还向
开发者提供了友好的开发向导,允许开发者不通过代码,仅使用开发向导来浏览
和检测硬件设备资源。根据 WinDriver 指导手册,该设计成功实现了基于 DSP
TMS320C6416 的 PCI 上位机驱动程序,驱动程序能够与 DSP 硬件板卡通信交换
数据。但是本设计实现的也仅仅是驱动程序框架,对于定制功能还需要进一步开
发。在以后的工程中,可以直接在本框架内添加功能函数代码以实现定制功能。
对于使用 WinDriver 开发驱动程序,存在的问题主要是对 WinDriver 环境的
依赖。因为 WinDriver 的高度封装,使用 WinDriver 开发的驱动程序,必须在操
作系统中安装 WinDriver 软件,这个问题限制了驱动程序的应用范围。如果深入
研究使用 WinDriver 开发驱动程序,如何脱离 WinDriver 环境运行驱动程序是一
个必须解决的问题。
八层楼 发表于 2020-12-3 10:24 | 显示全部楼层
pci板卡选的什么型号的
观海 发表于 2020-12-3 10:26 | 显示全部楼层
这个驱动都可以用来做什么呢
guanjiaer 发表于 2020-12-3 10:28 | 显示全部楼层
如何进入内核模式呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部