ARM7启动代码解析——LPC21xx/LPC22xx系列
需积分: 9 154 浏览量
更新于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`函数,开始用户应用程序的执行。这部分代码是嵌入式系统开发的基础,理解和掌握启动代码能够帮助开发者更好地控制系统的启动行为,解决启动阶段可能出现的问题。
130 浏览量
点击了解资源详情
点击了解资源详情
239 浏览量
113 浏览量
2009-11-08 上传
205 浏览量
194 浏览量
和迈
- 粉丝: 0
- 资源: 1
最新资源
- CUDA9.0+cudnn7安装大礼包.zip
- 拖动滑块进行验证
- Docker零基础学习全套教程(含项目实战和源码)
- tarea-express-v1
- 网钛淘拍系统官方网下载v1.51
- 着作权法案例判决评析——计算机程序之保护
- uorhousepositions:简单的Powershell脚本可下载UOR房屋位置并创建地图文件
- multisetdiff:与 setdiff 类似,但 A 的任何重复元素在 B 中每次出现时仅被删除一次-matlab开发
- 愤怒的小鸟-阶段4:愤怒的小鸟-阶段4
- devopsproject1
- gcc内网离线安装包,CentOS7亲测可用
- ion-tools:工具和实用程序,使ION网络工作和使用ION DID变得轻松自如
- 工程建设项目管理体制
- RecommenderOnTf2:基于TensorFlow 2.3实现的推荐系统神经网络,主要关注模型构建,基本不包含数据预处理阶段
- LFO - Maker:用于构建不同 LFO 类型的系统-matlab开发
- diabetic-retinopathy:基于人眼图像的糖尿病性视网膜病变分类系统