可以说我非常深入地研究了LPCARM的中断体系. 见菜农对23xx的中断体系的10点请教意见一文. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; LPC23xx非典FLASHROM的中断向量表架构 IMPORT VIC_Vect_Addr0 IRQ_Handler STMFD SP!, {R11, R12, LR};真保护R11R12, 假保护LR(用于运算) ;// LDR R12, VIC_Vect_Addr ;取VICVectAddr物理地址 ;// LDR R12, [R12] ;取出取VICVectAddr内实际向量中断号(非地址) LDR R12, [PC , #-0x14c];取出取VICVectAddr内实际向量中断号(非地址) AND R12, #0x1f ;防止32个中断序号越界,在此可再做序号越界处理(可省略) LDR R11, =VIC_Vect_Addr0 LDR R12, [R11, R12, LSL #2];散转到用户真正的向量中断地址 STR R12, [SP, #0x08];将中断向量地址R12写入事先保存的那个LR空间 LDMFD SP!, {R11, R12, PC};恢复R11R12,同时PC跳入中断向量地址执行 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
在这个架构中,进入中断比正常的多了7条ARM指令,但它的可靠性却增加很多,我已论述了很多并经过产品实战批量生产.
最近我在做作业,主要的目的是如何从MCU向ARM过渡.最终我首选了LPC213x/210x系列.
被菜农这么一搞,实在不象话---因为最后ARM比MCU更简单和好用.
通过这个架构,融合了MCU的多中断向量和单中断向量等特点,做到了像PIC的 单中断向量架构的可靠且比其散转迅速,又不失多中断向量的功能明确性.
汽车电子说"中断不稳定"我不太明白... 但是我敢肯定菜农的拦截方式肯定可靠,虽然速度有点损失,但安全和速度选择其一时,前者估计是多数人的选择.
ARM的指令系统非常完美,这是一般MCU和DSP都不如的,他们都要在中断中保护大量的现场数据,而ARM要开销的少得多.
难道MCU的多字节指令集和低速我们都能宽容,那么菜农多7条ARM指令就不对吗???
中断向量表在RAM中可靠还是在FLASH中更可靠这个问题没意思去争论,只能通过事实来说话. 就如一个行业旗手的一位总工不听菜农的意见,将海量数据存放在RAM中用电池维持掉电后的数据不丢失. 由于每天必须开关机一次,维持约10个小时.(电池的容量肯定没问题) 当产品使用后且在干扰强烈的环境下,其惨状我就不列举了~~~
我当初对他说:我们不能像书本上设计产品那样,我们必须考虑安全可靠. 但得到的是:"你们农民知道个什么???我们的产品就只差做到联合国了"... 哈哈~~~说笑了,原话当然不会是这样,但傲慢的劲头是十足的~~~
最后~~~只能后悔没听老农的真心告白~~~ |