ARM启动代码解析 - Philips LPC2xxx系列
需积分: 10 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系列微控制器的特定初始化步骤,对于理解微控制器的底层工作原理和开发嵌入式系统至关重要。
2010-12-11 上传
2010-09-27 上传
2011-09-26 上传
2023-06-03 上传
2024-01-08 上传
2023-09-10 上传
2024-10-30 上传
2024-10-30 上传
2024-10-30 上传
wznss_3505
- 粉丝: 19
- 资源: 32
最新资源
- cpp-programming:用C ++语言编程
- holbertonschool-low_level_programming
- Excel模板基本数字表.zip
- typescript-nextjs-starter:用于Next.js的TypeScript入门程序,其中包括构建令人惊叹的项目所需的全部内容:fire:
- drf-restricted-fields:Django Rest Framework限制字段
- 【地产资料】XX地产---房产中介绩效方案.zip
- mywebsite
- StickyHeaders:一个 JS 库,可在可滚动列表视图中启用粘性部分标题
- 结果API
- django-extended-admin:django admin扩展,支持URL可点击字段
- Excel模板基础课、专业主干课教师情况统计表.zip
- DecToBin:简短的脚本,用于以某些常见和不常见的编程语言将十进制转换为二进制数
- neditor:基于 ueditor的更现代化的富文本编辑器,支持HTTPS
- 半导体行业点评:氮化镓商用加速,看好国内产业链崛起-200221.rar
- BioinformaticsProject2020:ShortestDistanceTadFinder V1.0
- react-workshop:React通量应用程序