综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统ARM技术专辑正文
 
ARM菜鸟心中的中断防御系统设想

在Philips ARM的中断体系中,中断干扰应该主要侵入SWI,IRQ,FIQ这三个中断向量.

SWI比较好防御,但IRQ,FIQ确实很难防御...

但是FIQ的向量可以在编译时固定,虽然IRQ分支很多没定义VICVectAddrX或VICVectCntl未开放中断,但都会归入VICDefVectAddr.

这样我们就可以从FIQ_Handler()和DefaultIRQ()中拦截...

拦截模型:
void FIQ_Handler (void)    __fiq  {//VICIntSelect非0
unsigned temp;
  temp = VICFIQStatus;
  if (temp & (1 << VICIntSel_EINT0)) {
    IOPIN1 ^= (1 << P1_16);    //取反P1.16
    EXTINT = (1 << EINT0);    //清除INT0中断标志
  }
  else if (temp & (1 << VICIntSel_EINT1)) {
    IOSET1 = (1 << P1_17);    //P1.17=1
    while(EXTINT & (1 << EINT1)) {
      EXTINT = (1 << EINT1);    //清除INT1中断标志
    }
    IOCLR1 = (1 << P1_17);    //P1.17=0
  }
  else if (temp & (1 << VICIntSel_EINT2)) {
    IOPIN1 ^= (1 << P1_18);    //取反P1.18
    EXTINT = (1 << EINT2);    //清除INT2中断标志
  }
  else if (temp & (1 << VICIntSel_EINT3)) {
    IOPIN1 ^= (1 << P1_19);    //取反P1.19
    EXTINT = (1 << EINT3);    //清除INT3中断标志
  }
  else {//其他干扰源
//再次填入干扰处理代码
  }
  VICSoftIntClr = temp;//抗击无效VICSoftInt=XXX的入侵
  VICVectAddr = 0;
}

void DefaultIRQ (void) __irq {//VICIntSelect=0且VICVectCntl0~VICVectCntl15都未中断使能
unsigned long temp;
  temp = VICIRQStatus;
  if (temp & (1 << VICIntSel_EINT0)) {
    IOPIN1 ^= (1 << P1_16);    //取反P1.16
    EXTINT = (1 << EINT0);    //清除INT0中断标志
  }
  else if (temp & (1 << VICIntSel_EINT1)) {
    IOPIN1 ^= (1 << P1_17);    //取反P1.17
    while(EXTINT & (1 << EINT1)) {
      EXTINT = (1 << EINT1);    //清除INT1中断标志
    }
  }
  else if (temp & (1 << VICIntSel_EINT2)) {
    IOPIN1 ^= (1 << P1_18);    //取反P1.18
    EXTINT = (1 << EINT2);    //清除INT2中断标志
  }
  else if (temp & (1 << VICIntSel_EINT3)) {
    IOPIN1 ^= (1 << P1_19);    //取反P1.19
    EXTINT = (1 << EINT3);    //清除INT3中断标志
  }
  else {//其他干扰源
//再次填入干扰处理代码
  }
  VICSoftIntClr = temp;//抗击无效VICSoftInt=XXX的入侵
  VICVectAddr = 0;
}

我并非主张将中断都在FIQ_Handler()和DefaultIRQ()中处理,而是在原设计上

"加高一层",以增强防御能力...

纸上谈兵,个人意见...

发表此说并非说ARM不如MCU抗打击,而是想如何去面对现实...

返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

关于我们 ┋ 友情链接


深圳市福田区海滨广场福业大厦12C
电话:0755-88305880 25960580 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号