嵌入式实时操作系统

嵌入式实时操作系统

ID:25330197

大小:143.00 KB

页数:5页

时间:2018-11-19

嵌入式实时操作系统_第1页
嵌入式实时操作系统_第2页
嵌入式实时操作系统_第3页
嵌入式实时操作系统_第4页
嵌入式实时操作系统_第5页
资源描述:

《嵌入式实时操作系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、ecos中断机制分析(1)  不同的微处理器提供的中断处理机制不相同,ecos对各种处理机制作了一定的抽象,提供了一种通用的中断处理机制。下面以m68k的mcf52xx系列处理器为例分析。当中断产生时,ecos的一段跳转程序使处理器跳转到相应的VSR,对mcf52xx处理器来说这段跳转程序就是中断向量表,当然不同处理器的跳转程序有不同的实现方式。VSR作了一些简单处理后,会调用中断服务程序(ISR)作进一步处理,对ISR的调用采用寻找中断服务程序向量表的方式。有些中断在ISR结束后还会调用延迟服务程序(DSR)作进一步处

2、理。以下是构成mcf52xx的中断向量表的汇编代码:/***********************************************************************//*     ROMvectortable  */       .macro hw_vsrname       .long  hw_vsr_ame       .endm       .section".romvec","ax"       .globl rom_vsr_tablerom_vsr_table:       

3、/*  0-InitialSSP                          */       hw_vsr stack                    /*  1-InitialPC                            */       hw_vsr reset       /*  2-24-Defaultexceptionhandlers         */       .rept  24-2+1       hw_vsr default       .endr       /*  2

4、5-31-Autovectorinterrupts1-7         */       .rept  31-25+1       hw_vsr autovec       .endr       /*  32-63-Defaultexceptionhandlers       */       .rept  63-32+1       hw_vsr default       .endr       /*  64-255-Userinterruptvectors           */       .rept  2

5、55-64+1       hw_vsr interrupt       .endr       .equ   rom_vsr_table_size,.-rom_vsr_table 这段代码构成了中断向量表,假设处理器按rom方式启动,通过链接脚本.ld文件将该中断向量表的起始位置放在复位后PC入口位置(假设为0xFFE00000),该向量表在rom中的存储示意图如下图:                                    当复位中断产生时,处理器首先从0xFFE00000取出一个长字来初始化堆栈寄存器

6、SP,然后取出紧跟着的一个长字来初始化PC,此时PC值为hw_vsr_reset,也即一段向量服务程序(VSR)的入口地址。  同样,当其他中断(或例外)产生时,mcf52xx处理器自动将一个32位状态字和PC压栈,如下图所示:其中VECTOR[7:0]为当前中断的中断向量号,SR(STATUSREGISTER)[10:8]三位为当前中断级别,用于屏蔽低于或等于当前级别的中断,之后处理器会根据中断号从中断向量表中获得相应向量服务程序(VSR)的入口地址。这里重点分析64到255号中断的向量服务程序。       .equ

7、     int_pres_regs_sz,((2+3)*4)       .macro   int_pres_regs       lea.l    -int_pres_regs_sz(%sp),%sp       movem.l  %d0-%d2/%a0-%a1,(%sp)       .endm       .macro   int_rest_regs       movem.l  (%sp),%d0-%d2/%a0-%a1       lea.l    int_pres_regs_sz(%sp),%sp     

8、  .endm 首先定义了两个宏int_pres_regs和int_rest_regs分别用于压栈和恢复d0,d1,d2,a0,a1五个寄存器,即对CPU状态进行一定程度的保存。       .text       .balign4hw_vsr_interrupt:       int_pres_regs      

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。