ARM启动代码详解——Philips LPC2XXX系列

需积分: 4 5 下载量 78 浏览量 更新于2024-10-18 收藏 116KB PDF 举报
"该资源是关于ARM启动代码的分析,特别是针对PHILIPS LPC2XXX系列微控制器。本文档详细阐述了启动过程中涉及的关键步骤和编程细节,包括处理器的工作模式、中断处理以及中断向量表的配置。" 在ARM架构中,启动代码是程序执行的第一个环节,它负责设置处理器的状态、初始化硬件、配置内存映射以及建立中断处理机制。对于LPC2XXX系列,这是基于ARM7TDMI内核的微控制器,因此其启动过程遵循ARM7的规则。 首先,文档中定义了ARM处理器的七种工作模式,这些模式决定了处理器如何响应不同类型的事件和异常: 1. **用户模式 (User Mode, Mode_USR)**:默认的操作模式,应用程序代码通常在此模式下运行。 2. **快速中断模式 (FIQ Mode, Mode_FIQ)**:用于高速数据传输或硬件中断处理。 3. **中断请求模式 (IRQ Mode, Mode_IRQ)**:标准中断处理模式。 4. **超级用户模式 (Supervisor Mode, Mode_SVC)**:用于操作系统和其他系统服务。 5. **终止模式 (Abort Mode, Mode_ABT)**:在异常或未预期的数据访问时进入。 6. **未定义模式 (Undefined Mode, Mode_UND)**:执行未定义指令时进入。 7. **系统模式 (System Mode, Mode_SYS)**:最高权限模式,与用户模式类似,但有完全的访问权限。 接着,文档提到了中断和状态屏蔽位,如`I_Bit`和`F_Bit`,它们用于控制IRQ和FIQ中断的开启和关闭。`T_bit`则用于设定处理器是在ARM模式还是Thumb模式下运行。 启动代码的主体部分展示了中断向量表的配置,中断向量表是处理器在遇到异常或中断时跳转到的地址集合。例如,`Reset_Addr`是复位中断的处理程序地址,其他如`Undef_Addr`、`SWI_Addr`、`PAbt_Addr`、`DAbt_Addr`分别对应未定义指令、软件中断、预取中止和数据中止的处理程序。中断向量表的最后一个条目通常是IRQ中断的入口地址,这里通过相对寻址来实现。 最后的`LDR PC, FIQ_Addr`指令表示加载FIQ中断处理程序的地址到程序计数器(PC),使得处理器在接收到FIQ时能正确跳转到对应的处理代码。 这篇ARM启动代码分析对理解LPC2XXX系列微控制器的启动流程、处理器模式切换和中断管理有重要的参考价值,有助于开发者编写高效的嵌入式系统初始化代码。