ARM启动代码解析 - Philips LPC2xxx系列

需积分: 10 4 下载量 120 浏览量 更新于2024-09-10 收藏 46KB DOC 举报
"这篇文档是关于ARM架构下Philips LPC2xxx系列微控制器的启动代码分析,主要涉及启动过程中的关键步骤和处理器的工作模式。文档包含一个名为`startup.s`的汇编源代码,由Embestw.h.xie于2005年编写,并由cuijianjie于2006年进行修改。" 在ARM架构中,启动代码是微控制器复位后执行的第一段程序,负责初始化硬件、设置堆栈、建立中断向量表以及将控制权交给操作系统或应用程序。对于Philips LPC2xxx系列,这个过程同样从`startup.s`开始。 首先,文档定义了处理器的七种工作模式的常量,这些模式包括: 1. 用户模式(USR):正常执行程序的模式。 2. 快速中断模式(FIQ):处理高速数据传输或同步错误。 3. 中断请求模式(IRQ):处理普通中断。 4. 超级用户模式(SVC):用于系统调用和服务。 5. 终止模式(ABT):通常在硬件错误或预取指令错误时进入。 6. 未定义模式(UND):执行非法指令时进入。 7. 系统模式(SYS):最高权限模式,通常用于操作系统内核。 接着,文档定义了中断和异常处理的相关位,如IRQ和FIQ中断控制位,以及状态屏蔽位T位,用于决定处理器是在Thumb模式还是ARM模式运行。 启动代码的主要部分是中断向量表(Vectors),这是处理器遇到异常或中断时跳转的目标地址。在LPC2xxx系列中,向量表包含了以下条目: 1. 复位地址(Reset_Addr):复位时,程序从这里开始执行。 2. 未定义指令异常地址(Undef_Addr):处理未定义指令的情况。 3. 软件中断地址(SWI_Addr):处理软件中断请求。 4. 预取中止地址(PAbt_Addr):处理预取指令异常。 5. 数据中止地址(DAbt_Addr):处理数据访问异常。 6. IRQ中断地址:从内存中加载的地址,通常是IRQ中断服务例程的入口。 7. FIQ中断地址(FIQ_Addr):快速中断服务例程的入口。 最后,文档指出了Reset_Handler的地址,这是复位后程序执行的第一个处理程序,负责初始化系统环境,比如设置堆栈指针、初始化存储器、配置时钟等,以便后续的操作能够正确进行。 这份文档提供的启动代码分析涵盖了ARM处理器的启动流程,中断处理机制,以及Philips LPC2xxx系列微控制器的特定初始化步骤,对于理解微控制器的底层工作原理和开发嵌入式系统至关重要。