ARM中断向量表与响应流程

ARM中断向量表与响应流程

ID:38220710

大小:105.21 KB

页数:10页

时间:2019-06-06

ARM中断向量表与响应流程_第1页
ARM中断向量表与响应流程_第2页
ARM中断向量表与响应流程_第3页
ARM中断向量表与响应流程_第4页
ARM中断向量表与响应流程_第5页
资源描述:

《ARM中断向量表与响应流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一首先中断向量表定义在哪里?如何加载? 二中断向量表与中断服务程序三处理流程////////////////////////////////////////////////////////////////////////////////////////////////////一首先中断向量表定义在哪里?__vectors_start首先中断向量表定义的是什么?定义的就是中断服务程序的跳转指令,因为每个中断向量在向量表中只有一个字节的存储空间,只能存放一条指令,所以通常存放跳转指令,使程序跳转到存储器的其他地方,再执行中断处理。这里cpu就可以找中断服务程序,跳转指令

2、如例如:LDRPC,=ISR_HANDLER;或者指令与不同的cpu平台有关系。 1.1vector表定义的方式:往往是变量地址:如..globl__vectors_start定义__vectors_start符号,这样外部程序可以访问到。entry-armv.S__vectors_start:swiSYS_ERROR0bvector_und+stubs_offsetldrpc,.LCvswi+stubs_offsetbvector_pabt+stubs_offsetbvector_dabt+stubs_offsetbvector_addrexcptn+stubs_

3、offsetbvector_irq+stubs_offsetbvector_fiq+stubs_offsetARM的异常处理向量表在entry-armv.S文件中:1.2中断向量表类型 FromARM.globl__vectors_start定义__vectors_start符号,这样外部程序可以访问到。__vectors_start:定义异常(地址逻辑自上而下0x00----0x1c)跟具体的cpu特性有关ARM(        swi        SYS_ERROR0        )向量0:reset,但是这里被修改了,如果是cpu跑到了0地址,用软件中断S

4、YS_ERROR0来处理.THUMB(        svc        #0                )向量1THUMB(        nop                        )向量2W(b)        vector_und+stubs_offset向量3#未定义指令异常W(ldr)        pc,.LCvswi+stubs_offset向量4#软中断W(b)        vector_pabt+stubs_offset#向量5指令预取异常中断(PrefetchAbort)W(b)        vector_dabt+stub

5、s_offset#向量6数据中止W(b)        vector_addrexcptn+stubs_offset#向量7地址异常Thesearen'ttoocritical.W(b)        vector_irq+stubs_offset#向量8.IRQ(一般中断)W(b)        vector_fiq+stubs_offset#向量9FIQ(快速中断)  /*关于.globl指令:  .global/.globl命令   .globalsymbol   .global使得连接程序(ld)能够识别symbl    声明symbol是全局可见的。标号_

6、start是GNU链接器用来指定第一个要执行指令所必须的,同样的是全局可见的(并且只能出现在一个模块中)   例如:     .global_start  #定义_start为外部程序可以访问的标签 __vectors_start符号,又存放在哪里呢?有不同的方式,可以指定加载的ram地址,如kernelarchc6xkernel平台SECTIONS{/**Startkernelreadonlysegment*/READONLY_SEGMENT_START .vectors:{_vectors_start=.;*(.vectors).=ALIGN(0x400

7、);_vectors_end=.;}指定好了vector在内核镜像加载到内存后的地址0x400; 但是arm就不指定,如下,在启动之后存放的地址://中断服务处理程序c000b500T__kuser_helper_startc000b500t__kuser_memory_barrierc000b520t__kuser_cmpxchgc000b540t__kuser_get_tlsc000b55ct__kuser_helper_versionc000b560T__kuser_helper_endc000b560T__stubs_start//中断服务处理程序c00

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

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

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