ARM7启动代码解析——LPC21xx/LPC22xx系列
需积分: 9 167 浏览量
更新于2024-09-11
收藏 386KB PDF 举报
"周立功lpc21xx/lpc22xx系列ARM7启动代码分析"
这篇资源主要讨论了LPC21xx/LPC22xx系列微控制器的启动代码,这对于理解ARM7处理器的启动流程至关重要。作者强调了深入理解启动代码对于提升学习进度和增强开发信心的作用。文章引用了周立功公司的一份启动代码分析,并指出这份分析重点关注了`startup.s`文件,这是启动代码的核心部分。
在ARM7处理器中,启动代码的主要任务包括设置处理器状态、初始化内存映射、配置中断处理以及调用主程序入口`_main`。在`startup.s`文件中,可以看到一些关键的符号定义,如栈大小定义(如SVC、FIQ、IRQ等栈的大小)和处理器模式常量(如USR32Mode、SVC32Mode、SYS32Mode等)。这些定义用于设定处理器在启动时的初始状态和异常处理。
例如,`SVC_STACK_LEGTHEQU0`、`FIQ_STACK_LEGTHEQU0`分别定义了服务调用栈和服务快速中断栈的大小为0,这可能意味着在特定的系统配置下,这些栈并未被使用。而`IRQ_STACK_LEGTHEQU256`则表示中断栈大小为256个字节。`EQU`在这里相当于C语言中的`#define`,用于常量定义。
`IMPORT`指令用于声明外部函数或变量,如`IMPORT _use_no_semihosting_swi`表示在代码中禁止使用半主机模式(Semihosting),这是一种调试工具,通常在正式发布的产品中关闭。`IMPORT FIQ_Exception`和`IMPORT _main`则表明了启动代码依赖于外部的快速中断异常处理函数和主程序入口。
在ARM7处理器的启动过程中,处理器会从ROM中的预设地址开始执行,首先进行必要的初始化工作,比如设置堆栈指针、初始化硬件模块,然后跳转到`_main`函数,开始用户应用程序的执行。这部分代码是嵌入式系统开发的基础,理解和掌握启动代码能够帮助开发者更好地控制系统的启动行为,解决启动阶段可能出现的问题。
点击了解资源详情
2018-09-25 上传
2012-07-28 上传
2013-12-27 上传
2012-06-29 上传
2022-09-24 上传
2010-03-17 上传
2012-12-13 上传
和迈
- 粉丝: 0
- 资源: 1
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录