mini2440启动代码解析:初始化与内存配置

5星 · 超过95%的资源 需积分: 9 24 下载量 200 浏览量 更新于2024-07-31 收藏 97KB PDF 举报
"mini2440启动代码详细分析" Mini2440是一款基于Samsung S3C2440微处理器的嵌入式开发板。本文将深入解析其启动代码,特别是`2440init.s`文件,该文件包含了系统上电后的初始设置和配置。启动代码的主要任务是进行必要的硬件初始化,包括内存、中断服务向量(ISR)以及堆栈的配置,并将程序从启动媒介(如NOR或NAND闪存)搬运到SDRAM中,最后调用C语言的主函数`main()`。 `2440init.s`文件首先通过`GET`指令引入了几个配置文件,如`option.inc`、`memcfg.inc`和`2440addr.inc`,这些文件可能包含有关系统配置、内存布局和S3C2440地址映射的信息。 在初始化阶段,SDRAM的设置是非常关键的。根据`BIT_SELFREFRESH`的定义,可以看到SDRAM被配置为自刷新模式,这是SDRAM在不使用时保持数据完整性的常见方法。自刷新模式下,SDRAM内部的定时器控制刷新操作,减少了外部控制的需求。 接下来,代码中定义了ARM处理器的各种工作模式常量,如用户模式、快速中断模式、中断模式等,以及CPSR(当前程序状态寄存器)的模式掩码和中断禁止标志。CPSR是一个重要的寄存器,用于控制处理器的工作状态和中断处理。 在初始化堆栈部分,可以看到定义了各个异常模式下的堆栈位置,这通常是在启动代码中设置的,以便在异常发生时有正确的位置保存处理器状态。 启动代码还需要初始化处理器的通用寄存器,如GPB(GPIO Bank B)的控制和数据寄存器。这些寄存器的配置通常与外设接口和板级硬件的初始化有关。 在完成这些基本设置之后,启动代码会检查启动媒介并决定是从NOR还是NAND启动。然后,它会将程序代码从启动媒介复制到SDRAM中,因为处理器通常在执行代码时要求高速的随机访问存储器。一旦代码搬运完成,处理器的PC(程序计数器)会被设置到`main`函数的地址,从而开始执行C语言编写的应用程序。 总结起来,`2440init.s`启动代码是Mini2440开发板上的核心初始化程序,负责设置系统环境,确保硬件准备就绪,为C代码的执行铺平道路。这个过程包括了内存配置、模式寄存器设置、异常处理堆栈的初始化以及代码搬运到SDRAM中。理解这段代码有助于开发者更好地调试和优化基于S3C2440的嵌入式系统。