ADSArm2440启动代码分析与内存配置

版权申诉
0 下载量 21 浏览量 更新于2024-06-21 收藏 351KB PDF 举报
"ADSArm2440启动代码分析" 这篇文档主要分析了基于ADS (ARM Development Studio) 的Arm2440处理器的启动代码,该代码主要用于设置系统的初始环境,包括内存配置、中断服务例程(ISR)的栈、初始化C语言变量等。文档中的代码段展示了初始化过程的关键步骤和定义。 首先,代码引入了几个头文件,如`GEToption.inc`、`GETmemcfg.inc`和`GET2440addr.inc`,这些文件通常包含了针对特定硬件平台的配置选项、内存布局和地址映射。例如,`BIT_SELFREFRESHEQU(1<<22)`可能定义了一个用于配置内存自刷新功能的位。 接着,文档定义了不同处理器模式的常量,如`USERMODE`、`FIQMODE`、`IRQMODE`、`SVCMODE`、`ABORTMODE`和`UNDEFMODE`,这些都是ARM处理器运行的不同状态。此外,`MODEMASKEQU0x1f`用于模式掩码,`NOINTEQU0xc0`可能用于关闭所有中断。 在堆栈定义部分,文档指定了每个处理器模式对应的栈顶地址,例如`Userstack`、`SVCStack`、`UndefStack`、`AbortStack`、`IRQStack`和`FIQStack`。这些栈地址位于内存的特定区域,并且有预设的大小,用于保存处理器在进入不同模式时的上下文信息。 接下来的代码段检查了编译器是否在 Thumb 模式或 ARM 模式下工作。`GBLLTHUMBCODE` 宏可能用于设定汇编代码的执行模式,`THUMBCODESETL{TRUE}` 和 `THUMBCODESETL{FALSE}` 分别用于设置Thumb和ARM模式。`MOV_PC_LR` 是一个宏,通常在异常处理或函数返回时用到,用来移动链接寄存器LR到程序计数器PC,以实现跳转。 文档中还提到了添加了一些测试STOP和Sleep模式的函数,这表明启动代码也包含了低功耗模式的初始化。`2002.02.25`到`2003.03.14`的修订历史记录显示了代码的演化过程,随着开发者的更新,代码逐渐完善以适应2440处理器的需求。 这个启动代码分析涵盖了ARM处理器启动过程中的核心任务,如内存配置、栈设置、模式管理和异常处理,对于理解ARM系统的初始化流程具有重要的参考价值。