uboot启动流程详细分析

发布网友 发布时间:2024-10-23 20:20

我来回答

1个回答

热心网友 时间:2024-10-30 15:33

针对U-BOOT启动流程的详细分析如下:

U-BOOT的启动从链接文件开始,如果没有进行编译,则直接从start.S文件启动。以u-boot-2009.11为例,对于S3C2440A处理器,内核为arm920t,文件位于cpuarm920tstart.S。

在start.S文件中,首先执行start_code函数。该函数中包括以下步骤:

1. 设置CPU为SVC32模式

2. 关闭看门狗、中断,设定时钟分频系数,通常这部分与板级初始化相关,位于boardsamsungsmdk2410lowlevel_init.S文件中。

3. CPU初始化,关闭MMU和缓存。

4. 跳转至lowlevel_init函数,执行boardsamsungsmdk2410lowlevel_init.S文件中的内存控制器初始化。

随后,返回到start.S文件,继续执行以下动作:

1. 将U-BOOT程序重定向至内存中运行。

2. 初始化栈。

3. 清除BSS段。

4. 跳转至board.c文件中的start_armboot函数,执行NOR FLASH、NAND FLASH、串口、网卡、MMC等设备的初始化。

在board.c文件中,start_armboot函数进一步执行设备初始化,并跳转至main.c文件中的main_loop函数。

在main.c文件中,main_loop函数主要进行以下操作:

1. 设置启动相关配置,如启动次数、Modem功能、版本号、启动延时等。

2. 循环读取用户输入,执行对应操作。

整个U-BOOT启动流程通过一系列的文件跳转完成,从start.S到lowlevel_init.S,再到board.c和main.c文件,最终实现设备初始化和程序运行。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com