ARM启动文件2440init.s分析
;详细分析:
;Handle***
;Handler***
;展开方式(举例):
;HandlerFIQ
;展开后变成:
;标号
;
;留出一个空间,为了存放跳转地址给pc。见:str r0,[sp,#4] ,注意sp值并未改变
;
;把r0中的内容入栈,保存起来
;
;HandleFIQ标号,在本文件最下方定义
;
;把 HandleFIQ
;
;把入口地址放入刚才留出的一个空间里
;
;出栈的方式恢复r0原值和为pc设定新值(也就完成了到ISR的转跳)。注:栈中r0内容在低地址
;后边的语句展开方式,同上。编译后,代码都展开放置
HandlerFIQ
HandlerIRQ
HandlerUndef
HandlerSWI
HandlerDabort
HandlerPabort
;-------------------------------------------------------------------------------------------------
;非向量中断总入口(需要自己判断中断类型,而不是直接跳转到相应程序)
;产生中断后,需要中断服务程序自己来判断,到底是哪个中断请求,根据的就是INTOFFSET寄存器中的偏移,再
;计算中断服务地址
IsrIRQ
;-------------------------------------------------------------------------------------------------
;LTORG用于声明一个文字池,在使用LDR伪指令时,要在适当的地方加入LTORG声明文字池,这样就会把要加载的
;数据保存在文字池内,再用ARM的《加载指令》读出数据。(若没有使用LTORG声明文字池,则汇编器会在程序
;末尾自动声明)
;LTORG 伪指令常放在无条件跳转指令之后,或者子程序返回指令之后,这样处理器就不会错误地将文字池中的
;数据当做指令来执行
;注:在此,文字池内存储的是INTOFFSET宏所代表的值:0x4a000014
;arm指令(32位)不能既表示出指令内容,又表示出数据地址(32位)。估计在编译时,会被汇编成其他的加载
;指令,再编译成机器码
;LTORG 只要单独写出来就可以了,其他的交给编译器来做,而且它跟它下面的代码没有任何关系
;-------------------------------------------------------------------------------------------------
;=======
; ENTRY
;=======
ResetHandler
;关看门狗
;-------------------------------------------------------------------------------------------------
;屏蔽所有中断;-------------------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------------------
;初始化PLL和时钟
;锁相环 PLL ,作用是将外部晶振的输入频率倍频到一个较高的频率ARM启动文件2440ini 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)