完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位大哥,小弟最近遇到一个头疼的问题。我最近在弄windows下的WDM驱动,是一块基于pci9054的数据采集卡的驱动。
问题一: 系统发出IRP_MN_START_DEVICE后,在相应的IRP处理函数中获取到访问pci9054芯片内部寄存器的基地址pcibar1(I/O映射),及访问本地地址空间0的基地址pcibar2(内存映射),还有中断资源。但是读取pcibar1+LAS0RR,pcibar1+LAS0BA等,并非从EEPROM加载的值,而需要我手动配置CNTRL[29]和CNTRL[30]重新加载EEPROM的值。为什么系统上电的时候没有配置好??? 部分代码如下: //CNTRL寄存器的偏移地址为0x6C ULONG cntrl_value = READ_PORT_ULONG((PULONG)(pdx->pcibar1+0x6C)); //软件复位 WRITE_PORT_ULONG((PULONG)(pdx->pcibar1+0x6C), cntrl_value|0x40000000); //触发pci9054从EEPROM重新加载本地配置寄存器 WRITE_PORT_ULONG((PULONG)(pdx->pcibar1+0x6C), cntrl_value&0xDFFFFFFF); WRITE_PORT_ULONG((PULONG)(pdx->pcibar1+0x6C), cntrl_value|0x20000000); //软件复位 WRITE_PORT_ULONG((PULONG)(pdx->pcibar1+0x6C), cntrl_value&0xBFFFFFFF); 问题二: 按问题一的方法重新加载EEPROM的值之后,通过WRITE_REGISTER_ULONG((PULONG)(pdx->pcibar2+偏移地址), 数值),但是发现有些寄存器无法读写???如偏移地址0x20, 0x30, 0x34, 0x40。为什么??? 注:没有重新加载EEPROM之前,本地空间0所有的偏移地址都无法读写,读出的都是0xFFFFFFFF。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
3683 浏览 0 评论
7599 浏览 0 评论
5673 浏览 0 评论
3739 浏览 1 评论
4881 浏览 0 评论
请问一下qspi mtsr引脚传输一次32bit后引脚不拉低怎么解决?
183浏览 2评论
253浏览 2评论
最近UJA1023开发遇到问题了,各位大神有谁知道可以替代这颗芯片的
339浏览 1评论
291浏览 1评论
185浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 22:43 , Processed in 0.386046 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号