这几天想把ucos移植到QQ2440开发板上,用的是ADS1.2工具,RAM调试(起始地址:0x30000000),但是只要开中断(INTMSK对应为置0),程序就会跑飞。
在关中断的情况下,观察(SRCPND)中断源寄存器里边是有中断位的。
跑飞前上位机收到的一串字符串"Dummy_isr error, interrupt number: 0, INTMSK = 0xffffdfff",我不知道这是什么意思?
我的中断相关设置如下:
pISR_UNDEF =(unsigned)HaltUndef;
pISR_SWI =(unsigned)HaltSwi;
pISR_PABORT =(unsigned)HaltPabort;
pISR_DABORT =(unsigned)HaltDabort;
//pISR_IRQ = (unsigned)TimerTickHandle;
rINTMOD =0x0; // All=IRQ mode
rINTMSK =BIT_ALLMSK; // All interrupt is masked.
{
extern void TimerTickHandle(void);
pISR_TIMER3 = (unsigned)TimerTickHandle;
ClearPending(BIT_TIMER3);
EnableIrq(BIT_TIMER3);
}
ClearPending(x)为清空中断的宏,EnableIrq(x)为使能中断的宏。这两句肯定都没有问题。
TimerTickHandle为Timer3的中断服务子程序。
我想是不是因为2440里边的BIOS程序接管了中断,所以才没跑到我设定的中断服务子程序的?
如果是这样的话,应该怎么修改呢?我这里没有BIOS源程序。
哪位仁兄仁姐,帮忙分析一下,谢谢!