阅读:2833回复:4
PCI9054 PCI to Local DoorBell
现使用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,此时门铃能写入么,硬件能收到中断么? 我重新启动操作系统,然后门铃下发就正常了,这是为什么啊? 请大侠赐教! |
|
沙发#
发布于:2009-07-11 15:16
咋没有大侠能解答一下疑惑呢?大侠们都关注什么去了?
|
|
板凳#
发布于:2009-07-14 20:40
实际发现问题是此时所有读取的寄存器值全为FFFFFFFF,将该驱动卸载,用windriver自带的9054驱动查看,发现两种情况,一是只有一个和PCI板对应的设备,但是BAR0已经不见了,BAR1和BAR2还在;二是发现PCI板对应的8个设备,所有设备的BAR0,BAR1,BAR2都不见了,好奇怪啊,不知道是怎么回事?
分析可能原因有:1.误操作导致驱动程序卸载,释放了所有资源,2.可能是写门铃时地址不对,导致寄存器值错误 但是对1来来说,不太可能释放了所有资源,对2来说,好像只下发门铃和上传门铃时,又不发生上述错误,实在是搞不清啦 请大虾们指教!!!!!! |
|
地板#
发布于:2009-07-25 18:55
硬件方写门铃时锁存两遍数据和地址,发现门铃值对了,也基本不会丢失门铃,但是我还是有点想不通,BAR0是在AddDevice时获取的,一直保存在device_extension结构体中,为何会丢失呢?丢失的确定是我读所有寄存器,都是全F
|
|
地下室#
发布于:2013-08-23 16:22
楼主有没遇到这种情况,若使能PCI doorbell interrupt,Local端就不能写local-to-pci doorbell register;若不使能的话,则能正常读写local-to-pci doorbell register。求教!!
|
|