开发板 2410 做触摸屏启动
想问下,在vxworks中。怎么样帮外部中断源和中断服务程序连接起来!我知道的是inconnect函数帮中断向量和中断服务程序可以连接起来!中断号和中断向量可以通过宏定义INUM_TO_INT_VEC转换!现在问题就是,我怎么样才能帮中断源(外部硬件产生的中断)和中断号一一对应起来~这个实现应该在哪里实现?
在BSP中看到一连串的宏定义(0~31都有定义)
#define INT_LVL_EINT_0 0
#define INT_LVL_EINT_1 1
#define INT_LVL_EINT_2 2
#define INT_LVL_EINT_3 3
#define INT_LVL_EINT_4_7 4
#define INT_LVL_EINT_8_23 5
/* Reserved 6 */
#define INT_LVL_nBATT_FLT 7
#define INT_LVL_TICK 8
#define INT_LVL_WDT 9
。。。。。。。
#define INT_LVL_RTC 30
#define INT_LVL_ADC 31
#define SUBINT_LVL_RXD0 0
#define SUBINT_LVL_TXD0 1
#define SUBINT_LVL_ERR0 2
#define SUBINT_LVL_RXD1 3
#define SUBINT_LVL_TXD1 4
#define SUBINT_LVL_ERR1 5
#define SUBINT_LVL_RXD2 6
#define SUBINT_LVL_TXD2 7
#define SUBINT_LVL_ERR2 8
#define SUBINT_LVL_TC 9
#define SUBINT_LVL_ADC 10
/* interrupt vectors */
#define INT_VEC_EINT_0 IVEC_TO_INUM(INT_LVL_EINT_0)
#define INT_VEC_EINT_1 IVEC_TO_INUM(INT_LVL_EINT_1)
#define INT_VEC_EINT_2 IVEC_TO_INUM(INT_LVL_EINT_2)
。。。。
#define INT_VEC_ADC IVEC_TO_INUM(INT_LVL_ADC)
等这个就是帮中断INT_ADC和31中断源连接起来么?但是如果是这样的话,那么子中断我看定义成#define SUBINT_LVL_TC 定义成9 明显和前面定义的冲突了!所以在给子中断的时候不知道该怎么给。这个问题困扰了我3个星期了。感觉寄存器的配置是没有问题的,可是现在中断一给 打印出一个i出来,然后就死了中断服务程序中的logmsg美打印出来,
但是中断Eenable和intconnect好像都没有错误。估计可能是connect错误了!还有那个中断向量那里。怎么是IVEC_TO_INUM呢?感觉应该是INUM_TO_IVEC啊!太多不明白了。望高手指点一下~
可能对硬件了解不够,望大家帮个忙。先行谢过!
让硬件工程师确定一下触摸屏的中断。
或者自己查一下电路图
在vxWorks中,硬件中断源对应的中断号(IRQ0~IRQ7)为32+irq,比如使用irq5,挂中断时代码为:
intConnect(INUM_TO_IVEC(37),...);