S3C2440上电启动代码详解与初始化流程

需积分: 10 1 下载量 184 浏览量 更新于2024-09-11 收藏 144KB PDF 举报
S3C2440启动代码详解深入剖析 当S3C2440单片机板子上电后,程序的执行始于名为"2440init.s"的启动代码。该代码的主要任务包括以下几个关键步骤: 1. **基本初始化**:启动代码首先进行基本的硬件和软件初始化,确保系统能够正常运行。这可能包括设置时钟、内存管理、中断控制器等。 2. **启动源判断**:代码会检查设备的启动类型,如Nor Flash或NAND Flash,以决定程序加载的源。这是为了根据不同的存储介质选择正确的加载路径。 3. **程序搬运**:成功识别启动源后,代码会将程序从非易失性存储器转移到SDRAM中,这是为了提高访问速度和程序执行效率。 4. **跳转到main函数**:一旦程序搬运到SDRAM,控制权会被转移到预设的main函数,开始执行用户级别的程序逻辑。 5. **引入编译文件**:GET和INCLUDE指令用于引入预编译的配置文件(如GEToption.inc, GETmemcfg.inc, GET2440addr.inc),这些文件包含了系统特定的设置和地址映射。 6. **处理器模式设置**:通过定义常数,如USERMODE, FIQMODE, IRQMODE等,设置ARM处理器的工作模式。CPSR寄存器的后五位用来区分不同模式,如用户模式、快速中断处理模式等。 7. **异常模式堆栈分配**:代码为各种异常处理模式(如用户模式、系统模式、未定义模式、中止模式和快速中断模式)分配了各自的堆栈区域,以确保异常处理过程中的正确上下文切换。 8. **ARM工作状态检测**:代码会检查ARM处理器的工作状态,可能是32位或16位,以决定使用ARM指令集还是Thumb指令集进行后续的程序编译。这与目标硬件平台的兼容性和性能有关。 通过这段代码的分析,我们可以深入了解S3C2440单片机在启动阶段的架构和工作流程,这对于理解和调试此类嵌入式系统至关重要。了解并掌握这些细节有助于开发人员优化代码执行、提升系统性能和故障排查。