新闻中心

EEPW首页>嵌入式系统>设计应用> 2440中断的保护现场

2440中断的保护现场

作者: 时间:2016-11-21 来源:网络 收藏
本文将为大家分析关于ARM中断宏定义的相关介绍。

MACRO

本文引用地址://m.amcfsurvey.com/article/201611/319275.htm

$HandlerLabel HANDLER $HandleLabel

$HandlerLabel

sub sp,sp,#4;decrement sp(to store jump address)存贮PC跳转地址

stmfd sp!,{r0};PUSH the work register to stack(lr does not push because it return to original address)

ldrr0,=$HandleLabel;load the address of HandleXXX to r0

ldrr0,[r0];load the contents(service routine start address) of HandleXXX

strr0,[sp,#4];store the contents(ISR) of HandleXXX to stack

ldmfdsp!,{r0,pc};POP the work register and pc(jump to ISR)

MEND

上面是在汇编语言2440vectors.s中的一段完整的宏定义

MACRO相当于c中的#define

而$HandlerLabel 和$HandleLabel是两个参数,大家注意,第一个参数和第二个参数是不一样的,中间少了个r

而第一个参数在本宏中是一个标号,而第二个函数是一个入口地址

以下有定义:

HandlerFIQHANDLER HandleFIQ

HandlerIRQHANDLER HandleIRQ

HandlerUndefHANDLER HandleUndef

HandlerSWIHANDLER HandleSWI

HandlerDabortHANDLER HandleDabort

HandlerPabortHANDLER HandlePabort

拿HandlerSWIHANDLERHandleSWI说明:把它用宏给替换下来以后是:

$HandlerSWI

1:sub sp,sp,#4;decrement sp(to store jump address)存贮PC跳转地址

2:stmfd sp!,{r0};PUSH the work register to stack(lr does not push because it return to original address)

3:ldrr0,=$HandleSWI;load the address of HandleXXX to r0

4:ldrr0,[r0];load the contents(service routine start address) of HandleXXX

5:strr0,[sp,#4];store the contents(ISR) of HandleXXX to stack

6:ldmfdsp!,{r0,pc};POP the work register and pc(jump to ISR)

达内培训小提问:
这段宏定义的作用是什么呢?是安装SWI中断,如何安装的呢?

sub sp,sp,#4是把SP的地址减4字节,而这个地方需要存放跳转地址也就是第5行的HandleSWI指向的内容(ISR)

接下来是压栈所需要的寄存器r0,因为接下来需要使用r0所以先压栈r0,这也是为什么刚刚先把SP加四字节的原因,第6句话就是跳转到刚刚第5句所压栈的地址处,也就是HandleSWI指向的内容(ISR)处


VectorsAddr

LDRPC, Reset_Addr

LDRPC, Undefined_Addr

LDRPC, SWI_Addr

LDRPC, Prefetch_Addr

LDRPC, Abort_Addr

NOP; Reserved vector

LDRPC, IRQ_Addr

LDRPC, FIQ_Addr

EXPORT VectorsAddr

Reset_AddrDCDResetHandler;第一次地址转换

Undefined_AddrDCDHandlerUndef

SWI_AddrDCDHandlerSWI

Prefetch_AddrDCDHandlerPabort

Abort_AddrDCDHandlerDabort

IRQ_AddrDCDHandlerIRQ

FIQ_AddrDCDHandlerFIQ



关键词:2440中断保护现

评论


技术专区

关闭