专栏中心

EEPW首页 > 专栏 > PIC32中断原理之浅析

PIC32中断原理之浅析

发布人:0750long 时间:2010-02-02 来源:工程师 发布文章
PIC32中断原理之浅析

 

 

    中断是基于微控制器或微处理器的系统中,衡量系统性能的一个方面,具体指标有响应时间,中断数量;其中,响应时间是比较重要的一个概念,指系统发生中断(起始)到cpu开始处理中断的时间。因为cpu要保存/恢复上下文环境,保存/恢复时间是处理中断过程中的另外一个参量。在pic32单片机中,mips32内核采用了寄存器shadow与向量中断方式,保证了cpu响应的快速性,在pic32架构中,响应时间非常短,几乎固定为3到4指令周期;在其他32位架构的中断机制中,共同点是缓存、总线不确定仲裁模块会影响到整个的响应时间,因此增加了响应时间的不确定性。
    在pic32单片机中,中断的出现是以最终结果-exception表现出来的,停止cpu执行当前任务的有两种情况:error和exception。
    error往往是由reset、soft reset、NMI reset以及cache error引起的,error产生后,系统会产生复位。cp0协处理器寄存器Status中ERL位置位。
    exception发生的原因则有多种,协处理器cp0寄存器Cause中提供exception的缘由。
代码值  十六进制 记忆码 详细描述
0   16#00   Int  Interrupt(中断)
4  16#04   AdEL  Address error exception (load or instruction                                     fectch):地址错误,发生在装载或指令预取
5  16#05   AdES  Address error exception (store):地址错误,
                        发生在数据存储
6  16#06   IBE  Bus error exception (instruction fetch):总线错                                   误,发生在指令预取
7  16#07   DBE  Bus error exception (data reference: load or                                     store):总线错误,发生在数据引用时,装载或存储
8  16#08   Sys  Syscall exception:系统调用
9  16#09   Bp  Breakpoint exception:断点位置
10  16#0a   RI  Reserved instruction exception:保留指令异常
11  16#0b   CPU  Coprocessor Unusable exception:协处理器不可用
12  16#0c   Ov  Arithmetic Overflow exception:计算溢出异常
13  16#0d   Tr  Trap exception:陷阱异常
14-18  16#0e-  16#12 – Reserved
    发生exception后,cpu根据Cause寄存器中的IV标志判断为是中断还是异常,并自动跳转到exception(0x180)或interrupt(0x200)入口处执行中断处理(Status寄存器BEV位为0)。若cp0中Status寄存器BEV位为1,发生异常(pic32不支持BEV位为1时产生中断)时,cpu执行bootstrap exception处理程序。
   系统复位时,BEV位置0;
   pic32的集成开发环境提供了基本的库函数,如_bootstrap_exception_handler, _general_exception_handler, 其中前者执行引导异常错误的简单处理,后者执行通常异常错误的处理。开发指令才能清除者可以对二者重新定义,以此替换该库函数。处理函数必须调用eret才能清除异常标志或erl标志。
   对于中断函数的声明则与通常的c语言开发相同。具体形式有两种:
第一种  #pragma interrupt foo ipl4 vector vect_num
        void foo (void)
第二种
        void __attribute__ ((interrupt(ipl4)),((at_vector(vect_num)))) foo (void)
    以上中断函数声明了优先级为4,中断向量号为vect_num的中断处理函数
    对于中断的处理,可以设定位单向量入口处理与多向量入口处理两种方式。在硬件实现上,单向量其实是多向量的一种极化形式;通过设定INTCON寄存器中的MVEC位可以实现两种方式的切换。单向量模式下,中断控制器提供给cpu的Vector数永远是0;多向量模式下,Vector值就是中断源的向量。显然,在单向量模式下,程序设计者要考虑区分究竟是那个源产生中断的问题,这个可以通过查询中断标志位进行判断;这将带来软件判断造成的延迟问题。而在多向量模式下,cpu会计算出跳转目标位置,相应的简化了程序设计,提高了程序的可观性。
    多向量模式下,同样存在软件延迟的问题。上下文环境的保存/恢复是客观存在的,大量寄存器的入栈与出栈造成了不可避免的延迟。与arm内核相比,该寄存器值的保护机制较不利于频繁发生中断的应用。为了减少这种开销,mips32内核引入了寄存器shadow的概念,即组优先级别为7(最高级)的中断与一组潜在的寄存器组(寻址同正常寄存器)绑定的方法,这样硬件寄存器的冗余可以减少软件延迟时间。寄存器的入栈和出栈过程有两个术语与其相对应,prologue与endlogue。通常编译器会自动生成prologue与endlogue。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

高性能系列DSP上TCP2/VCP2协处理器

视频 2009-10-16

应用材料公司亮相SEMICON China 2026

DDR5内存,价格首降

网络与存储 2026-03-19

有源晶振、无源晶振与MCU的时钟关联

人工智能初创企业两个月累计融资额达 2200 亿美元

微软或将起诉OpenAI、亚马逊

2026-03-19

C64+ 系列DSP上Cache 的应用(第一部分)

视频 2009-10-16

MSP430 电表解决方案

视频 2009-10-16

日本最强AI被曝套壳DeepSeek

2026-03-19

TI Zigbee 射频芯片RF4CE 以及RemoTI 开发包

视频 2009-10-16

ADS62C17 数据转换器

Gartner预测,在AI组合中纳入中国LLM和多模态模型的全球企业占比,2027年将升至50%

英伟达携手工业软件巨头推动人工智能工程技术发展

从质疑到验证:TI 八颗 DMD 芯片跨越 30 年的实验

2026-03-19

三星面临大罢工,存储价格或加速上涨

2026-03-19

请问

hehehehe 2005-09-02
更多 培训课堂
更多 焦点
更多 视频

技术专区