文档详情

ARM启动代码分析详解.doc

发布:2016-11-01约1.02万字共7页下载文档
文本预览下载声明
ARM启动代码分析 ARM启动代码分析-philips的LPC2xxx系列 /********************************************************************************** *File: startup.s *Author: Embest w.h.xie 2005.02.21 *Desc:lpc22xx\lpc212x\lpc211x\lpc210x startup code *History: * note modify: cui jian jie 2006-4-25 *comment: **********************************************************************************/ #处理器的七种工作方式的常量定义 .EQU Mode_USR, 0x10 #用户模式 .EQU Mode_FIQ, 0x11 #FIQ模式 .EQU Mode_IRQ, 0x12 #IRQ模式 .EQU Mode_SVC, 0x13 #超级用户模式 .EQU Mode_ABT, 0x17 #终止模式 .EQU Mode_UND, 0x1B #未定义模式 .EQU Mode_SYS, 0x1F #系统模式 #中断屏蔽位 .EQU I_Bit, 0x80 //IRQ中断控制位,当被置位时,IRQ中断被禁止 .EQU F_Bit, 0x40 //FIQ中断控制位,当被置位时,FIQ中断被禁止 #状态屏蔽位 .EQU T_bit, 0x20 //T位,置位时在Thumb模式下运行,清零时在ARM下运行 # 定义程序入口点 .globl _start .code 32 .TEXT _start: #中断向量表 Vectors: LDR PC, Reset_Addr //把Reset_Addr地址处的内容放入PC中 LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, PAbt_Addr LDR PC, DAbt_Addr .long 0xb9205f80 @ keep interrupt vectors sum is 0 LDR PC, [PC, #-0xff0] //当前PC值减去0xFF0等于IRQ中断入口地址 LDR PC, FIQ_Addr #地址表: Reset_Addr: #该地址标号存放Reset_Handler程序段的入口地址 .long Reset_Handler Undef_Addr: #该地址标号存放Undef_Handler程序段的入口地址 .long Undef_Handler SWI_Addr: #该地址标号存放SWI_Handler程序段的入口地址 .long SWI_Handler PAbt_Addr: #该地址标号存放PAbt_Handler程序段的入口地址 .long PAbt_Handler DAbt_Addr: .long DAbt_Handler .long 0 IRQ_Addr: #地址标号处存放一个无效的数据 .long 0 FIQ_Addr: #该地址标号存放FIQ_Handler程序段的入口地址 .long FIQ_Handler Undef_Handler: B Undef_Handler PAbt_Handler: B PAbt_Handler DAbt_Handler: B DAbt_Handler #软中断的中断服务子程序入口地址 SWI_Handler: STMFD sp!, {r0-r3
显示全部
相似文档