CPU: Renesas RZ/T1 R7S910018 (ARMv7-R Cortex-R4 600MHz)
Board: RSK+RZT1
Probe: I-jet
IDE: IAR EWARM 7.4
Hi all,
I've met a problem puzzles me. When I press "Go" to run on full speed, the program runs out to the address 0x14(reserved handler).
The program had been running well until I implemented a MTU3 TGIA3 interrupt (multi-function timer unit) routine to the program, working together with other three SPI interrupts(SPI transmit/error/idle interrupts) used to interface the LCD.
Before I implemted the TGIA3 interrupt, the program with SPI interrupts went well. So it seems the interrupts interacting cause the problem. All the interrupts disable the nesting function(nested interrupt is disabled). I use the VIC (vector interrupt controller) to provide the ISR entrance
address.
I used the ETM to trace the program and found that returning from the TGIA3 interrupt causes the PC to change to 0x14. But when I put a breakpoint at the interrupt exit point and the PC won't goes to 0x14 but goes back to the point before interrupted.
Here are the screenshots.
http://renesasrulz.com/cfs-file.ashx/__key/communityserver-discussions-components-files/27/c1.PNG
Here are the ETM trace shots before it stops at 0x14.
I've trapped here for almost a week and greatly hope to obtain help. Thank you all very much!
有没有可能就是中断嵌套问题或是优先级设置问题?
现在我们有一个相对完整的程序,没有使用MTU_TGIA3_IRQn 但是用了MTU_TCIV4_IRQn , CMTW_CMWI0_IRQn,POE3_OEI1_IRQn,ECAT_SYNC0_IRQn,ECAT_SYNC1_IRQn和ECAT_IRQn,共6个中断,首先这几个中断的优先级不同,优先级顺序如下POE3_OEI1_IRQn > MTU_TCIV4_IRQn > CMTW_CMWI0_IRQn > ECAT_SYNC0_IRQn = ECAT_SYNC1_IRQn = ECAT_IRQn
其次,对应中断的ISR都用” __irq __nested __arm” 设置为nested Enable
在应用中这几个中断也是根据各自的中断源随机发生,没有出现过类似的问题,我觉得可以你尝试一下,将中断设置为 __irq __nested __arm