ARM启动代码详解:2440init.s与内存配置

5星 · 超过95%的资源 需积分: 9 9 下载量 91 浏览量 更新于2024-09-20 收藏 91KB PDF 举报
"2440init.s 是一个针对 ARM 架构的启动代码文件,位于 Uboot 的系统初始化流程中。该汇编程序主要用于 ARM 设备2440的启动过程,包括内存配置、中断服务请求(ISR)处理、栈的设置以及初始化 C 语言变量。该代码文件的历史可以追溯到 2002 年,随着版本更新不断添加新功能和优化,例如2003年的修改专为2440平台定制。 1. **内存配置和初始化**:`GETmemcfg.inc` 和 `GET2440addr.inc` 都是包含其他配置文件,用于获取和设置内存相关的信息,确保系统正确识别和初始化SDRAM,包括自刷新功能,这通过比特位 `BIT_SELFREFRESHEQU(1<<22)` 来控制。 2. **工作模式管理**:文件中定义了六种预设的工作模式,如用户模式 (USERMODEEQU0x10),快速中断模式 (FIQMODEEQU0x11),中断模式 (IRQMODEEQU0x12),监管模式 (SVCMODEEQU0x13),异常中断模式 (ABORTMODEEQU0x17) 和未定义模式 (UNDEFMODEEQU0x1b),这些模式通过 `MODEMASKEQU0x1f` 进行掩码操作。中断处理通过 `NOINTEQU0xc0` 来管理中断的开启或关闭。 3. **堆栈设置**:堆栈地址是根据 `STACK_BASEADDRESS` 定义的,这个地址通常在 `option.inc` 文件中预先设定。文件中分别定义了用户模式栈 (UserStackEQU)、监管模式栈 (SVCStackEQU) 和未定义模式栈 (UndefStackEQU),它们对应着不同的模式下的堆栈起始位置,以便在不同中断级别进行正确的任务切换。 4. **历史和贡献**:文件的开发人员包括 kwtark、purnnamu 和 DonGo,他们分别在不同时期对代码进行了扩展和修改,以适应不同的测试需求和平台特性。文件中的注释来自网络资源和作者的个人整理,表明这是一个社区协作和学习的开源项目。 综上,2440init.s 是一个关键的底层启动程序,对于理解 ARM 系统启动过程、内存管理、中断处理以及堆栈布局有重要作用,适合深入研究 ARM 开发者或者想要深入了解嵌入式系统初始化的工程师阅读和学习。"