在vxworks 6.8环境下,使用同步IO中断模式。但是不能进中断服务模式

zwd_125 2012-08-29 09:25:43
问题描述:
硬件: i7处理器, PCI板卡
软件: vxworks 6.8。2
现象: 死活不进板卡的中断服务程序,但是相同的驱动程序在vxworks6.6和pentium4平台下就可以正常运行;
配置: 在i7的平台上,使用的是同步IO模式即APIC中断,在pentium4使用的8259中断,这是区别;
中断挂接方式:

pciConfigInByte(BusNo, DeviceNo, FuncNo, PCI_CLOCK_PCIILR, &ucIntNum);
ucIntNum = 0xb;

pciIntConnect(INUM_TO_IVEC(INT_NUM_GET(ucIntNum)), routine, parameter);
sysIntEnablePIC(ucIntNum);

挂接函数返回值正确,使能返回值也是正确;
在I7 的BSP里,肯定是有同步IO模式定义的;
查看资料是这样的: APIC模式并不使用bios定义的配置空间的中断号,而是在启动的时候再重新分配中断号,linux环境里面有个接口函数pci_enable_device,请教高手,vxworks是否有中断号重新定义的功能或者接口函数??
还有就是APIC使用的中断号是在16,17,18,19等,如果读取来的是11是不是说中断号错了??如何能获取正确的中断号??修改bios程序吗??

谢谢!




...全文
1498 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoql2008 2014-07-15
  • 打赏
  • 举报
回复
而且,我打了INT_NUM_IRQ0的值出来发现不是0x20,而是0xbc,我查网上的资料看大家提到它的值应该是0x20的,查看发现在configInum.h中宏定义了两套值(用#fidef.........#else......),现在默认用的是0xbc,问题不是在这???
guoql2008 2014-07-15
  • 打赏
  • 举报
回复
刚看了您的资料,我现在也是一名北航的学生,研二。王师兄指点一下。我用的vxworks6.6和pentium4平台,挂接函数,使能跟您用的一样,而且 挂接函数返回值正确,使能返回值也是正确,但是就是硬件给了中断以后,进入不了中断服务程序,求指点!
guoql2008 2014-07-15
  • 打赏
  • 举报
回复
楼主,您好!我是是一名学生,在做项目的时候遇到了跟您类似的问题,可否加您的好友,帮忙指点一下!qq804600707
zwd_125 2014-04-23
  • 打赏
  • 举报
回复
最后的解决方案: 因为项目比较急,直接将中断模式换掉了,还是使用了单核的8259那一套中断系统。
lubo1992 2014-03-21
  • 打赏
  • 举报
回复
同样遇到这个问题, 打开APIC后 接收不到来自IOAPCI的中断信号,不过可以接收本地中断。就是 LOCAL APIC的时钟中断。
bobfsa 2013-08-22
  • 打赏
  • 举报
回复
楼主,请问你的问题解决了吗?我碰到一模一样的问题了。
mbczzzwang 2012-09-18
  • 打赏
  • 举报
回复
这两天也碰到类似的问题,楼主有进展了没?
我的设备APIC中断号是11,pci_enable_device 后就直接变成16了。 如果不调用pci_enable_device,设备lspci下还是11的,但用11注册中断后,在中断时候回冒出内核错误:disabling IRQ16
zwd_125 2012-08-30
  • 打赏
  • 举报
回复
问题进展:
在APIC模式下,vxworks支持两种模式分配APIC中断号,一种是使用bios默认的形式,一种是使用用户定义的MP表,但是mp表需要和bios的配置保持一致!
问题: MP表给的都是一些数字,不明白其中的意思,如果要修改,怎么修改呢?

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧