阅读:2190回复:3
菜鸟求助:关于pci中断的使用
本人菜鸟,刚接触pci,用的是pci9054做一个运动控制卡 在中断部分遇到很多疑惑,求高人指点
1. pci本地中断,我在datasheet上看到的只有一个pin154为LINT#,可是在很多资料上看到写LINT#[2:1],我现在本地端有两个外部中断源,该怎么处理? 2. 在物理地址中,PCI配置寄存器和本地配置寄存器分别在哪?在datasheet中各寄存器都分为从PCI偏移和从local偏移,比如runtime register中的INTCSR(PCI:68H,LOC:E8H)Interrupt Control/Status,为什么我在PLXMON中用pci 68和reg e8命令读出来的数据都不是我想要的,好像用reg 68才能正确读出INTCSR? 3. 使用pci中断,是不是在头标区的中断引脚(3ch)处设置好(一般只用INTA#,设置为1),系统POST时将分配好的IRQ编号写到中断线号(3dh),然后用上述的PlxPci_InterruptEnable()函数使能用到的中断类型,是不是就可以实现pci的中断了? |
|
|
沙发#
发布于:2009-10-29 09:13
有没有人啊?在线跪等~~~
|
|
|
板凳#
发布于:2009-11-10 12:35
回 1楼(litao10586) 的帖子
哥们我陪你等,我现在也是终端问题没解决,其他传输都可以了 |
|
地板#
发布于:2009-12-08 20:30
1、PCI9054只有一个Local侧的中断输入,LINT#,且是电平触发的,如果你都多个Local侧的中断源,可以将外部信号and后送给LINT#,在中断处理处理函数里面读取Local总线上的某些自己设定的状态寄存器以区分不同的中断源并作出响应
2、手册中给出的两个寄存器地址,PCI Offset表示是PCI地址空间的地址偏移,Local Offset是指从Local侧访问时的地址偏移;当使用PlxMon时,显然是通过CPU从PCI访问的;当然,有两种寄存器访问方式,一种是Memory-Mapped,对应PCIBAR0,另一种是I/O-Mapped,对应寄存器PCIBAR1; 3、对性能要求不高的场合,建议使用WinDriver进行驱动开发,参考该软件附带的p9054_diag程序;这种方法无需DDK,无需了解系统底层机制,简便易行; |
|