lovedrvdev
驱动牛犊
驱动牛犊
  • 注册日期2004-07-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望42点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1008回复:0

新手求教

楼主#
更多 发布于:2005-07-06 23:03
  小弟我要做NT下的PCI驱动开发,用的芯片是PCI9052,这里有几个问题请教
(1)PCI本地寄存器的基地址是I/O映射还是内存映射是由硬件决定的,我的理解是在配置串行EEPROM时设定本地寄存器50h的PCIBAR使能位
(2)NT的service pack第几个版本支持PNP
(3)关于NT下PCI资源的获取,我没有找到源码,谁有请贴出来,我的理解是首先通过枚举PCI设备总线号、设备号和功能号,用HalGetBusData函数找到与PCI板卡的DEVICE ID和VENDOR ID匹配的PCI设备,然后读取PCI配置寄存器的中断线寄存器得到中断号,然后用HalGetInterruptVector将总线相关的中断向量转换为系统的中断向量,并用IoConnectInterrupt制定中断服务,但HalGetInterruptVector函数的几个参数不知道什么意思,BusInterruptLevel就是中断号吧,但BusInterruptVector是什么。如果是PCI本地寄存器的基地址是I/O映射,从PCI配置寄存器读取基地址还需要HalTranslateBusAddres吗?我看了PCI总线规范,向这个基地址写全1,返回的值才知道范围,而且高位部分才是基地址,这段程序怎么编写,PCI9052的I/O地址范围固定为128字节。另外用HalAssignSlotResources,再读取CM_RESOURCE_LIST的方法怎么用
(4)我想用PCI9052处理四个中断怎么做,我的想法是将四个中断两两相或接入两个局部中断输入引脚,再将四个中断同时接其它引脚,并能引起寄存器的改变,中断服务程序通过查询这几个寄存器能判断出是那个中断,当然这几个寄存器必须能被清掉。不知道PCI9052有这样的引脚和寄存器没有。
我初学驱动,希望高手不吝赐教
游客

返回顶部