This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我在使用TMS570LS1227的时候,关于IRQ跟FIQ有个疑问想咨询。
1. 当前我将RTI Compare0设置为FIQ(1ms定时),CAN1 HIGH 设置为IRQ, 在程序里通过Can1 对收到的报文进行处理再响应。
当我单次慢速(手点)收发报文的时候,程序是正常的,但是当我进行大量数据收发测试(1ms 上位机连续发100次)的时候,程序会进入 prefetchEntry 异常。
2. 当我将将RTI Compare0设置为FIQ,CAN1 HIGH 设置为FIQ,进行上述工程试验,一切收发正常;
3. 当我将将RTI Compare0设置为IRQ,CAN1 HIGH 设置为IRQ,进行上述工程试验,一切收发正常;
然后我翻看了user guide,看到了15.2.2这段话,在我标注的红框处及手册上了解到:
1). 当有IRQ中断触发时,会失能其他的IRQ中断,
2). 当有FIQ中断触发时,会失能所有的IRQ和其他的FIQ中断,
3).FIQ的中断优先级比IRQ的高,并且会打断IRQ的中断,优先执行FIQ中断。
4).同样的FIQ或IRQ中断,不会打断相同的FIQ或IRQ中断(因为当有中断时,其他同类的中断会失能);
看完VIM这章节的资料 后,我对上述进入异常问题的理解如下:
1. 当我全部配置成IRQ或FIQ时,因为1.2.4点,同类的中断并不会响应,需要等当前中断程序执行完毕;
2. 当配置的IRQ中断里有FIQ的话, 当有FIQ中断出现后,FIQ中断会打断IRQ中断的执行,并失能被打断的IRQ,
直到FIQ中断执行完成后,才会转到被中断的IRQ中断中继续执行。
上述是我对我遇到的问题及手册的理解。
然后我想问的问题是:当(RTI)FIQ打断(CAN1)IRQ中断时,如果在(RTI)FIQ中断还没执行完的时候,被打断的(CAN1)IRQ又触发了一次中断,此时,IRQ中断及其中断处理函数是怎么处理的? 这个是会造成我CAN1收发会进入异常的原因么?
下面是手册文档,及我发生异常时的CP15的寄存器的值。