位置:51电子网 » 技术资料 » 其它综合

VB环境下实现PCI设备底层访问的两种方法

发布时间:2007/8/29 0:00:00 访问次数:614

    摘要:介绍了在VB开发环境下,对PCI设备进行底层访问的两种方法:一种是通过用用户自己编写的动态连接库(DLL)实现,二是利用WINDRIVER提供的VB运行库编写直接访问硬件接口函数,并对两种方法行了比较。

    关键词:WINDRIVER PCI 动态连接库 应用程序接口

VB集成化编程语言一种功能强大而容易上手的开发工具,在用户界面、数据库、多媒体、网络编程等方面,VB可谓得心应手。然而VB有限的硬件编程能力以又使得许多硬件开发者对此深感无奈。尤其在工业控制,测控技术等领域,自行设计开发的I/O卡,数据采集卡等在WIN32下的驱动常常需要借助DDK,VtooIsD等工具进行艰苦而又长期的内核模式开发。本文介绍了在VB开发环境下访问PCI设备的方法。对于其他设备,方法与此大同小异。

在VB开发环境下,用户要访问诸如数据采集卡之类硬件上的PCI设备,一般来说有两种途径:一是直接访问,即用VB直接编写访问PCI设备的接口函数(这种方法要有相关软件的支持);二是间接访问,即VB调用其它编程语言(如汇编,C/C++等)写的底层驱动模块(一般封装成动态连接库DLL的形式)实现。

1 PCI总线的配置空间

PCI规范定义了三种地址空间,除了存储器和I/O地址空间外,为支持PCI设备系统资源的自动配置,还定义了配置地址空羊。

PCI总线的配置空间由256个字节组成,分为预定首区和设备关联区。预定首区包括开始64个字节,对所有的PCI设备来说,都必须支持该区的设置;设备关联区的寄存器有不同的的PCI设备厂家自己定义。

配置空间的预定的首区分两个部分,前16个字节的定义对各类PCI设备而言都是相同的,后48个字节空间根据设备支持的功能有不同的分配。首区类型定义了该空间的分配情况(目前只有一种类型00H)。表1是首区的组织结构。

所有的PCI设备必须支持首区的供应商ID、设备ID、指令和状态区。对于其他寄存器的使用可根据设备的楞能来选择。对于不同的PCI设备,其供应商ID由PCI SIG分配以确保唯一性,而设备ID则由供应商自己分配。

2 PCI设备的配置过程

PCI总线的配置空间规范保证了所有PCI设备对“即插即用”的支持。

系统在上电后,“即插即用”BIOS通过隔离算法读取每一个“即插即用”设备的资源申请数据,并分配相应的系统资源,同时检查资源的冲突情况,然后引导、加载操作系统,并将控制权交给操作系统;如果加载的是“即插即用”操作系统(WINDOWS 95及以后版本),那么操作系统将接管系统的资源管理权,它首先从BIOS读取“即插即用”设备的资源配置信息,并仲载资源冲突情况,然后配置BIOS尚未配置的“即插即用”设备,将设备的配置信息写入配置管理器,最后激活无资源冲突的“即插即用”设备,装载相应的设备驱动程序。

对于PCI设备来说,系统完成引导之后,除了将资源的分配写入系统的配置管理器外,还写入了相应的PCI配置寄存器。程序可以通过直接读取设备的配置寄存器来得到设备的I/O,存储器等资源配置情况。

3 VB下PCI设备的访问

驱动程序访问PCI设备的过程一般包括扫描PCI总线,相找指定的PCI设备,确定I/O等资源分配情况,进行I/O、存储器、中断以及DMA等操作。VB本身并不能实现上述对PCI设备的访问过程,下面介绍在VB下通过其他途径实现对PCI设备的访问。

3.1 VB直接访问

WINDRIVER为VB只提供了非常有限的I

    摘要:介绍了在VB开发环境下,对PCI设备进行底层访问的两种方法:一种是通过用用户自己编写的动态连接库(DLL)实现,二是利用WINDRIVER提供的VB运行库编写直接访问硬件接口函数,并对两种方法行了比较。

    关键词:WINDRIVER PCI 动态连接库 应用程序接口

VB集成化编程语言一种功能强大而容易上手的开发工具,在用户界面、数据库、多媒体、网络编程等方面,VB可谓得心应手。然而VB有限的硬件编程能力以又使得许多硬件开发者对此深感无奈。尤其在工业控制,测控技术等领域,自行设计开发的I/O卡,数据采集卡等在WIN32下的驱动常常需要借助DDK,VtooIsD等工具进行艰苦而又长期的内核模式开发。本文介绍了在VB开发环境下访问PCI设备的方法。对于其他设备,方法与此大同小异。

在VB开发环境下,用户要访问诸如数据采集卡之类硬件上的PCI设备,一般来说有两种途径:一是直接访问,即用VB直接编写访问PCI设备的接口函数(这种方法要有相关软件的支持);二是间接访问,即VB调用其它编程语言(如汇编,C/C++等)写的底层驱动模块(一般封装成动态连接库DLL的形式)实现。

1 PCI总线的配置空间

PCI规范定义了三种地址空间,除了存储器和I/O地址空间外,为支持PCI设备系统资源的自动配置,还定义了配置地址空羊。

PCI总线的配置空间由256个字节组成,分为预定首区和设备关联区。预定首区包括开始64个字节,对所有的PCI设备来说,都必须支持该区的设置;设备关联区的寄存器有不同的的PCI设备厂家自己定义。

配置空间的预定的首区分两个部分,前16个字节的定义对各类PCI设备而言都是相同的,后48个字节空间根据设备支持的功能有不同的分配。首区类型定义了该空间的分配情况(目前只有一种类型00H)。表1是首区的组织结构。

所有的PCI设备必须支持首区的供应商ID、设备ID、指令和状态区。对于其他寄存器的使用可根据设备的楞能来选择。对于不同的PCI设备,其供应商ID由PCI SIG分配以确保唯一性,而设备ID则由供应商自己分配。

2 PCI设备的配置过程

PCI总线的配置空间规范保证了所有PCI设备对“即插即用”的支持。

系统在上电后,“即插即用”BIOS通过隔离算法读取每一个“即插即用”设备的资源申请数据,并分配相应的系统资源,同时检查资源的冲突情况,然后引导、加载操作系统,并将控制权交给操作系统;如果加载的是“即插即用”操作系统(WINDOWS 95及以后版本),那么操作系统将接管系统的资源管理权,它首先从BIOS读取“即插即用”设备的资源配置信息,并仲载资源冲突情况,然后配置BIOS尚未配置的“即插即用”设备,将设备的配置信息写入配置管理器,最后激活无资源冲突的“即插即用”设备,装载相应的设备驱动程序。

对于PCI设备来说,系统完成引导之后,除了将资源的分配写入系统的配置管理器外,还写入了相应的PCI配置寄存器。程序可以通过直接读取设备的配置寄存器来得到设备的I/O,存储器等资源配置情况。

3 VB下PCI设备的访问

驱动程序访问PCI设备的过程一般包括扫描PCI总线,相找指定的PCI设备,确定I/O等资源分配情况,进行I/O、存储器、中断以及DMA等操作。VB本身并不能实现上述对PCI设备的访问过程,下面介绍在VB下通过其他途径实现对PCI设备的访问。

3.1 VB直接访问

WINDRIVER为VB只提供了非常有限的I

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!