Win2000/XP下读写数据终端设备PCI寄存器的方法及系统技术方案

技术编号:2918335 阅读:720 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种Win2000/XP下读写数据终端设备PCI寄存器的方法及系统,所述方法包括:Win32应用程序通过虚拟设备驱动为自身所在进程向Win2000/XP操作系统申请IO端口读写权限,Win32应用程序向Win2000/XP操作系统发出读写PCI寄存器的请求,若Win2000/XP操作系统鉴权同意该请求,Win32应用程序根据PCI寄存器地址确定出PCI协议数,并通过向特定IO端口写入所述PCI协议数来实现对PCI寄存器的读写;所述系统包括权限申请模块、驱动申请权限模块、鉴权模块和寄存器读写模块。本发明专利技术使得Win32应用程序能够以间接方式读写PCI寄存器。

【技术实现步骤摘要】

本专利技术涉及通信领域的数据终端设备,尤其涉及一种Win2000/XP下读写 数据终端设备PCI寄存器的方法及系统。
技术介绍
基于PCMCIA ( Personal Computer Memory Card International Association, PC机内存卡国际联合会)物理接口的数据终端设备,往往内置USB主控制器 芯片,例如NEC和Philips 1562等等,这些芯片在PC侧以符合PCI( Peripheral Component Interconnect,外部设备互连)总线协议的USB( Universal Serial Bus , 通用串行总线)主控制器的形式存在,同时暴露出PCI寄存器,通常芯片厂家 对主控制器的配置信息就保存在这些寄存器中。芯片出厂时配置信息通常被固化在PCI寄存器中,对于需要修改寄存器值 的场合, 一般通过昂贵的专有设备来实现。而芯片应用厂商往往没有专有设备, 出于成本和兼容性的考虑,只能在PC机中对PCI寄存器进行修改。在Win98的操作系统下,现有技术可通过直接访问IO端口来实现PCI寄 存器的读写,而在Win2000/XP的操作系统下,由于Win2000/XP操作系统把 系统分层,使得Win32程序,即普通的应用程序无法直接对PCI寄存器进行读 写,从而导致在必须使用Win2000/XP操作系统的场合,无法完成对PCI寄存 器的读写。
技术实现思路
统,用以解决现有技术中无法在Win2000/XP下用Win32应用程序读写数据终端设备的PCI寄存器的问题。一种Win2000/XP下读写数据终端设备PCI寄存器的方法,包括步骤A、 Win32应用程序通过虚拟设备驱动为自身所在进程向Win2000/XP操 作系统申请IO端口读写权限;B 、 Win32应用程序向Win2000/XP操作系统发出读写PCI寄存器的请求, 若Win2000/XP操作系统鉴权该Win32应用程序所在进程具有IO端口读写权 限,则同意该请求;C、 Win32应用程序根据PCI寄存器地址确定出PCI协议数,并通过向特 定10端口写入所述PCI协议数来实现对PCI寄存器的读写。所述步骤A与步骤B之间还包括虛拟设备驱动向Win32应用程序回复权 限申请成功消息的步骤。Win32应用程序采用异步方式通过输入输出控制函数和虛拟设备驱动通信。所述步骤A具体包括步骤Win32应用程序为自身所在进程向虚拟设备驱动申请10端口读写权限; 虚拟设备驱动申请非緩冲空间,根据Win32应用程序所在进程的IO许可位图将空间大小设定为8K字节,将其中和PCI寄存器有关的IO端口地址位赋值为1,其余赋值为0;虚拟设备驱动将所述空间的内容覆盖到Win32应用程序所在进程的IO许可位图中。所述步骤B中,当Win2000/XP操作系统对Win32应用程序所在进程进行 10端口访问鉴权时,允许Win32应用程序所在进程访问赋值为1的10端口地 址位,使得Win32应用程序可以读写PCI寄存器。 '虚拟设备驱动将所述空间的内容覆盖到Win32应用程序所在进程的10许 可位图中之前,先对Win32应用程序所在进程的IO许可位图的内容进行备份 处理;Win32应用程序读写PCI寄存器完成后,虚拟设备驱动根据所述备份的10 许可位图的内容来恢复Win32应用程序所在进程的10许可位图。Win32应用程序根据数据终端设备的总线号、设备号、功能号及目标读写 PCI寄存器的地址确定出一个32位的PCI协议数。所述PCI协议数的第0至7位是目标PCI寄存器的地址,第8至10位是 PCI功能号的值,第11至15位是PCI设备号的值,第16至23位,是PCI总 线号的值,第24至30位是保留的,为O,第31为是PCI配置空间使能位,设 置为1。一种Win2000/XP下读写数据终端设备PCI寄存器的系统,包括权限申请 模块、驱动申请权限模块、鉴权模块和寄存器读写模块,其中,权限申请模块,属于Win32应用程序,用于通过驱动申请权限模块为自身 所在进程向Win2000/XP操作系统申请10端口读写^又限;驱动申请权限模块,属于虚拟设备驱动程序,用于为Win32应用程序向 Win2000/XP操作系统申请10端口读写权限;鉴权模块,属于Win2000/XP操作系统,用于鉴权Win32应用程序所在进 程是否具有IO端口读写权限;寄存器读写模块,属于Win32应用程序,在OS鉴权模块确定Win32应用 程序所在进程具有10端口读写权限时,用于根据PCI寄存器地址确定出PCI 协议数,并通过向特定10端口写入所述PCI协议数来实现对PCI寄存器的读 写。还包括权限释放模块和驱动释放权限模块,其中,权限释放模块、属于Win32应用程序,通过和驱动释放权限模块交互,完 成自身所在的Win32应用程序的10端口读写权限的释放;驱动释放权限模块,属于虚拟设备驱动程序,用于通过和Win2000/XP操 作系统交互为Win32应用程序释放IO端口读写权限。本专利技术通过虚拟设备驱动来为Win32应用程序和PCI硬件搭桥,以间接的方式使得Win32应用程序能够读写PCI寄存器,从而解决了现有技术中无法在 Win2K/XP下用Win32程序读写数据终端设备的PCI寄存器的问题,达到了方 便的PCI寄存器读写的效果,节省了时间和成本,提高了数据终端设备产品研 发的定制化能力和速度。附图说明图1为本专利技术Win2000/XP下读写数据终端设备PCI寄存器的系统的结构 框图;图2为本专利技术Win2000/XP下读写数据终端设备PCI寄存器的方法的流程图;图3为本专利技术中虚拟设备驱动为Win32应用程序所在的进程申请读写IO 端口的权限的流程图;图4为本专利技术中PCI协议数的示意图;图5为本专利技术中Win32应用程序通过向特定10端口写入PCI协议数的示意图。具体实施方式为解决上述现有技术中存在的无法在Win2000/XP下用Win32应用程序读 写数据终端设备的PCI寄存器的问题,本专利技术通过虛拟设备驱动来为Win32 应用程序和PCI硬件搭桥,以间接的方式使得Win32应用程序能够读写PCI 寄存器。下面将结合各个附图对本专利技术的具体实现过程进行进一步详细的说明。 请参阅图1,该图为本专利技术Win2000/XP下读写数据终端设备PCI寄存器 的系统的结构框图,由图中可见,本专利技术所述系统从逻辑的角度涉及到4个层 面, 一是Win32应用层,二是驱动层,三是OS(操作系统)层,四是PCI硬 件层。其中OS层和PCI硬件层是已有的技术,也就是说OS层指Win2000/XP,已经提供了对读写IO端口的鉴权,由于现有技术中Win32应用程序的IOPM (10 Permission Bit Map, IO许可位图)无法通过该鉴权,而导致不能读写IO 端口,更不能读写PCI寄存器。PCI硬件层是指数据终端设备,这类设备一般 都嵌入了 USB和PCI的转接芯片,而这些芯片的配置寄存器如果能够方便的 被读写,将给数据卡厂商带来极大的便利性和可扩展性。Win32应用层和驱动 层是本专利技术的重点,本专利技术根据Win32应用程序不被OS内核信任,而虚拟设 备驱动被内核信任的特点,利用虛拟设备驱动来为Wi本文档来自技高网...

【技术保护点】
一种Win2000/XP下读写数据终端设备PCI寄存器的方法,其特征在于,包括步骤:A、Win32应用程序通过虚拟设备驱动为自身所在进程向Win2000/XP操作系统申请IO端口读写权限;B、Win32应用程序向Win200 0/XP操作系统发出读写PCI寄存器的请求,若Win2000/XP操作系统鉴权该Win32应用程序所在进程具有IO端口读写权限,则同意该请求;C、Win32应用程序根据PCI寄存器地址确定出PCI协议数,并通过向特定IO端口写入所述 PCI协议数来实现对PCI寄存器的读写。

【技术特征摘要】

【专利技术属性】
技术研发人员:毕泽红
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1