poco2008
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2009-07-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:2832回复:4

PCI9054 PCI to Local DoorBell

楼主#
更多 发布于:2009-07-11 11:52
现使用PCI9054 PCI to Local DoorBell向硬件发送指令,出现下面的情况
一般情况下,我写完门铃后,硬件能及时清除该中断,我查询寄存器Interrupt Control/Status的20位,为0,则我执行其他工作,正常;
不知什么时候,我写了门铃后,我反复查询寄存器Interrupt Control/Status的20位,一直为1,说明硬件没有清楚该中断;然后硬件重新烧入程序,反复查询寄存器Interrupt Control/Status的20位,还是一直为1,硬件说如果有中断,他一定会清楚门铃中断,有没有可能寄存器Interrupt Control/Status的20位为1,而中断电平为高(无中断为高,有中断为低)?
我重新再写门铃,发现反复查询寄存器Interrupt Control/Status的20位,还是一直为1,此时门铃能写入么,硬件能收到中断么?
我重新启动操作系统,然后门铃下发就正常了,这是为什么啊?
请大侠赐教!
poco2008
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2009-07-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-07-11 15:16
咋没有大侠能解答一下疑惑呢?大侠们都关注什么去了?
poco2008
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2009-07-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-07-14 20:40
实际发现问题是此时所有读取的寄存器值全为FFFFFFFF,将该驱动卸载,用windriver自带的9054驱动查看,发现两种情况,一是只有一个和PCI板对应的设备,但是BAR0已经不见了,BAR1和BAR2还在;二是发现PCI板对应的8个设备,所有设备的BAR0,BAR1,BAR2都不见了,好奇怪啊,不知道是怎么回事?
分析可能原因有:1.误操作导致驱动程序卸载,释放了所有资源,2.可能是写门铃时地址不对,导致寄存器值错误
但是对1来来说,不太可能释放了所有资源,对2来说,好像只下发门铃和上传门铃时,又不发生上述错误,实在是搞不清啦
请大虾们指教!!!!!!
poco2008
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2009-07-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-07-25 18:55
硬件方写门铃时锁存两遍数据和地址,发现门铃值对了,也基本不会丢失门铃,但是我还是有点想不通,BAR0是在AddDevice时获取的,一直保存在device_extension结构体中,为何会丢失呢?丢失的确定是我读所有寄存器,都是全F
fifamanutd
驱动牛犊
驱动牛犊
  • 注册日期2013-08-21
  • 最后登录2013-08-28
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2013-08-23 16:22
楼主有没遇到这种情况,若使能PCI doorbell interrupt,Local端就不能写local-to-pci doorbell register;若不使能的话,则能正常读写local-to-pci doorbell register。求教!!
游客

返回顶部