ARM9_2440启动代码详解:内存配置与模式管理

需积分: 9 0 下载量 18 浏览量 更新于2024-09-16 1 收藏 51KB PDF 举报
本文档是关于ARM9_2440处理器的启动代码详解,标题中的"2440INIT.S"表明这是一份针对ARM9_2440微控制器的初始化脚本。该文件主要用于配置内存、初始化系统中断服务请求(ISR)以及设置不同的工作模式堆栈。以下是关键知识点的详细解析: 1. **内存配置**: 文件开头引用了"GEToption.inc"和"GETmemcfg.inc"两个包含文件,这些可能包含了针对ARM9_2440处理器特定的内存配置信息,如数据存储区、程序存储区的地址和大小。 2. **工作模式**: - **USERMODE** (0x10): 用户模式是最基本的安全模式,允许执行一般应用程序。 - **FIQMODE** (0x11): 快速中断模式处理紧急情况,中断响应速度最快。 - **IRQMODE** (0x12): 中断模式用于处理非紧急的中断事件。 - **SVCMODE** (0x13): 监管模式,用于调试和安全控制。 - **ABORTMODE** (0x17): 异常中断模式,用于处理硬件故障或系统错误。 - **UNDEFMODE** (0x1b): 未知模式,可能是处理器处于未定义状态时的表示。 - **MODEMASK** (0x1f): 模式掩码,用于操作不同模式的位操作。 3. **中断控制**: `NOINTEQU(0xc0)` 定义了一个取消中断的标志,这在设置模式时可能用于临时禁用中断,以确保代码的连续执行。 4. **堆栈管理**: - **_STACK_BASEADDRESS**: 选项文件中定义的堆栈基地址,通常由编译器或系统配置决定。 - **UserStackEQU**、**SVCStackEQU** 和 **UndefStackEQU**: 分别设置了用户模式、监管模式和未定义模式下的堆栈起始地址,这些地址偏移量反映了各个工作模式下堆栈的预留空间。 5. **版本历史**: 文件记录了开发者的修改历史,例如kwtark在2002年创建了最初的版本,并且在后续版本中添加了测试STOP和Sleepmode的功能,以及针对2440的具体修改。 6. **代码风格与注释**: 注释表明该代码来自网络和作者的个人整理,邮箱poweredbyarmboy@qq.com,表明开发者可能有公开交流或寻求帮助的渠道。 总结来说,这份文档的核心内容是针对ARM9_2440处理器的初始化脚本,涵盖了内存配置、中断管理、堆栈设置以及代码的历史更新。这对于理解和编写ARM9_2440相关的嵌入式系统代码具有很高的参考价值。