分类

载入中...

日历

载入中...

登陆

载入中...

最新文章

载入中...

回复

载入中...

站点统计

载入中...

友情链接

ARM启动代码分析-philips的LPC2xxx系列12006-7-24 14:30:00

/**********************************************************************************************

*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

发表评论:
载入中...