原创
"中断就复位的概率高达50%"--与菜农判断一致,病症找到
http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2432748
hotpower 发表于 2007-1-30 23:42 ZLG-ARM ←返回版面 |
47楼: "中断就复位的概率高达50%"--与菜农判断一致,病症找到了,好解决 |
前面已说过http://www.ednchina.com/blog/hotpower/15390/message.aspx
丢中断有点伪中断的味道,这要从LPCARM的中断机制推起:
当某个中断源被引发,IRQStatus或FIQStatus的某位将置'1', VectAddrs[x]将被装入VectAddr,从而跳入 LDR PC, [PC, #-0x0FF0];Vector from VicVectAddr 在此PC才将VectAddr装入后跳入VectAddr指出的地址,即散转了中断. 假设VectAddrs[x]没被被装入到VectAddr中,且前次中断退出时执行 了VIC->VectAddr = 0x00;/* 通知VIC中断处理结束*/ 那么本次的中断将会执行"软件复位",故中断肯定丢失.
所以我在实战中要避开VectAddrs[0],且以VectAddrs[0]为默认中断地址. 这样就可拦截非法中断了.当然其他不用的VectAddrs[x]我也指向默认中断地址.
假定该论证成立(我用软件仿真确实存在此隐患),那么我的第2个疑问"中断号错位"就自然成立了,因为VectAddrs[0]一般为正常的中断向量地址,如果经常性的 VectAddrs[0]被执行,那么病症肯定在此.
"中断就复位的概率高达50%"--与菜农判断一致,病症找到了,好解决 假设VectAddrs[x]没被被装入到VectAddr中,且前次中断退出时执行 了VIC->VectAddr = 0x00; 那么本次的中断将会跳入VIC->VectAddr即PC=0,也就是"软件复位".
所以,汽车电子应该好好学学菜农的非典架构.
我的产品都敢全部采用,你做个实验不难吧~~~别学我偷懒~~~
|
|
文章评论(0条评论)
登录后参与讨论