原创 "中断就复位的概率高达50%"--与菜农判断一致,病症找到

2007-1-30 23:56 4303 4 4 分类: MCU/ 嵌入式

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条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条