原创 哈哈,为什么不说我是将复杂的问题简单化了呢???

2006-12-30 02:11 5420 8 8 分类: MCU/ 嵌入式
http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2035699

hotpower 发表于 2006-3-30 22:56 ZLG-ARM ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

哈哈,为什么不说我是将复杂的问题简单化了呢???


关于程序飞和在何处喂狗网上不知争论了N个回合也未见分晓.

但是主程序飞中断可能还在工作这个有些共识!!!

为何???

这只是在MCU的中断向量固定在ROM相对地址的基础上的,因为在主程序飞时,

若发生中断,则中断服务程序将会自动跳入事先约定好的向量入口地址!!!

像51会按中断号*8+3(复位为0x0000)的规律执行.

所以,他们是按中断号进行散转的.

在LPCARM中(也包括其他ARM),中断地址是存入中断向量地址数组中的.

而数组是在RAM中的.

当数组的内容发生变化后,中断地址随即发生变化,也就不可能完成"主程序飞中断可能还在工作"!!!

因为中断可能只能执行一次(天知道干了些什么坏事),就阻止了以后的其他中断的再次进入!!!!!!!!!!!!!!!

这自然就会死机而导致看门狗复位!!!

如果飞入喂狗区的循环圈那将是个灾难...听天由命吧...

不过养狗并不是想让狗咬人,这并不是当初养狗的目的!!!

当性命难保时被疯狗咬才是真意...


这就是中断地址和中断向量号管理的细小差异!!!

但是中断地址的变化在0x00000000~0xfffffff,

而中断向量号的变化在0b00000~0b11111.(LPCARM共32个中断向量)

在采用中断向量号管理后,任何中断向量号的变化都会跳入一个中断服务程序,

即使是跳入了1个错误的中断服务程序,但程序是不会飞的!!!!!!!!!!!!!!

这样就可在每个中断服务程序判别是否是自己的中断服务程序!!!!!!!!!!

难道这不是"将复杂的问题简单化了"吗???

什么事物得到必须付出!!!但要看付出的多少和得到的多少!!!

在MCU都能容忍低速,难道在高速ARM上牺牲几条指令周期换回长久的太平不值得吗???


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条