ARM9 S3C2440 启动代码深度解析
需积分: 9 92 浏览量
更新于2024-09-14
收藏 51KB PDF 举报
"这篇文档是关于ARM9处理器S3C2440的启动代码分析,主要涵盖了初始化内存、中断服务程序(ISR)配置、堆栈设置以及C变量的初始化等关键步骤。文档历史悠久,从2002年到2003年经过多次修订,适合从事ARM9驱动开发的学习者参考。"
在嵌入式系统中,尤其是基于ARM架构的处理器,如ARM9 S3C2440,启动代码是整个系统运行的基础。这段启动代码(2440INIT.S)是汇编语言编写,负责在系统上电或复位后执行一系列初始化操作。以下是对文档内容的详细解析:
1. **包含头文件**:
- `GEToption.inc`: 包含了系统选项相关的配置,如堆栈基地址等。
- `GETmemcfg.inc`: 可能包含了内存配置的详细信息,如SDRAM的配置参数。
- `GET2440addr.inc`: 包含了S3C2440芯片特定寄存器的地址定义。
2. **定义常量**:
- `BIT_SELFREFRESH`: 定义了一个位常量,表示SDRAM的自刷新状态(1<<22)。
- 接下来的几行定义了ARM处理器的不同工作模式,例如用户模式(USERMODE)、快速中断模式(FIQMODE)、中断模式(IRQMODE)、监管模式(SVCMODE)、异常中断模式(ABORTMODE)和未定义模式(UNDEFMODE)。这些模式用于处理器在不同情况下的运行状态管理。
3. **模式掩码**:
- `MODE_MASK` 用于确定当前处理器的工作模式,它是一个五位的掩码,与模式寄存器的低五位进行与操作,可以获取当前的工作模式。
4. **中断控制**:
- `NO_INT` 是一个控制位,值为0xc0,可能用于关闭所有中断。
5. **堆栈设置**:
- 文档中定义了不同工作模式的堆栈起始地址,例如用户模式的堆栈(UserStack)、服务模式的堆栈(SVCStack)和未定义模式的堆栈(UndefStack),它们都是基于全局堆栈基地址向下偏移一定的字节数。
启动代码的主要任务是:
- **配置内存**:这可能涉及到设置SDRAM控制器的寄存器,以确保内存能够正常工作,包括初始化时钟、自刷新设置等。
- **配置中断**:设置中断服务程序的入口地址,并可能对中断优先级进行配置。
- **设置堆栈**:为每个工作模式分配堆栈空间,以便在进入该模式时能够正确地保存处理器状态。
- **初始化C变量**:当控制权转移到C代码之前,需要对全局变量进行初始化,通常涉及设置BSS段为零和复制数据段到内存。
以上就是ARM9 S3C2440启动代码的核心内容,对于理解处理器启动过程、学习嵌入式系统开发以及调试驱动程序至关重要。通过深入研究这部分代码,开发者可以更好地掌握系统级别的控制和优化技巧。
2019-01-19 上传
2010-11-25 上传
2013-07-16 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-09-22 上传
xcsmdc
- 粉丝: 0
- 资源: 11
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析