WEB开发网
开发学院软件开发VC pci卡设计心得 阅读

pci卡设计心得

 2006-04-08 11:38:57 来源:WEB开发网   
核心提示: 再说软件驱动,我说过我编的是vxd,pci卡设计心得(4),用vtools编的,可以用vc++直接编译成vxd文件,则表明没法找到,那就要找找自己的原因了,至于为什么必须用vxd驱动我想就不用说了,我的vxd的主要任务就是在系统中找到我的pci卡

再说软件驱动,我说过我编的是vxd,用vtools编的,可以用vc++直接编译成vxd文件,至于为什么必须用vxd驱动我想就不用说了。我的vxd的主要任务就是在系统中找到我的pci卡,并读出本地芯片所映射的内存物理地址,在windows系统中,用户程序不能直接访问物理地址,只能使用线性地址,所以vxd还有做的一件事就是将物理地址转换成线性地址供win app使用。  vxd查找pci卡就是靠搜索vendorID和deviceID,它是通过依次搜索总线号和设备号(具体什么意思我也说不清,反正知道就行了),看是否有符合指定的vendorID和deviceID,如果符合则认为找到了pci卡的配置空间,因为配置空间的第一个双字就是vendorID和deviceID.然后向下面的地址依次读就可以读出pci卡的配置空间其他信息,包括space0映射的内存基地址。读出此地址来再进行物理地址到线性地址的转换,就可以完全供win app使用了(可以通过指针访问),来读取9052 local上挂的芯片了。

具体的查找方式主要通过vxd程序中首先向io地址0xcf8写入最高位为1的双字0x80000000,这个数的第16到23位代表了总线号,第11到15位代表了设备号,第8到14位代表了功能号,然后就可以读取io地址0xcfc的双字,如果有效的话说明此pci配置空间地址上挂了一个pci卡,从0xcfc读出的数则为此pci卡配置空间的第一个双字,即vendorID和deviceID,我是将vendorID和deviceID一起使用的,即判断读出的双字是否等于我在9052配置eeprom中标定的数,如果是则说明找到了我的pci卡,如果不是则继续找。向0xcf8写入的数+0x800,在继续

读0xcfc,依次下去,直到找到。如果当此数加到0x80ffff00时还没找到(即总线号搜索完毕),则表明没法找到,那就要找找自己的原因了,可能是板子的配置错了。

上一页  1 2 3 4 5 6  下一页

Tags:pci 设计 心得

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接