官方标准uboot2013移植2

https://img-blog.csdn.net/20130808220449281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenN5MjAyMDMxNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

1.start.S流程分析

1)#define CONFIG_SYS_TEXT_BASE            0x34800000  可以看出我们的uboot的连接地址是在0x34800000位置。

2)save_boot_params是个空函数,里面直接返回的。

3)cpu_init_cp15这个函数功能是设置MMU、cache等。这个版本的uboot中未使用虚拟地址,因此MMU在这里直接关掉。

4)cpu_init_crit,这个函数里只有一句跳转指令,短跳转到lowlevel_init函数。

注意:uboot中有2个lowlevel_init.S文件(文件中还都有lowlevel_init函数),凭一般分析无法断定2个中哪个才是我们想要的。通过分析两个文件所在文件夹下面的Makefile可以判定board/samsung/goni目录下的才是真正包含进来的,arch/arm/cpu/armv7目录下的并没有被包含进来。

还可以通过实践验证的方法来辅助判断。通过查看之前已经编译过的uboot源码目录,看哪个被编程为.o文件了,就知道哪个是真正被使用的了。

5)lowlevel_init函数在board/samsung/goni目录下,主要作用是时钟设置、串口设置、复位状态判断•••这个函数是S5PC100和S5PC110两个CPU共用的。

6)经过浏览,发现lowlevel_init函数中做的有意义的事情有:关看门狗、调用uart_asm_init来初始化串口、并没有做时钟初始化(下面有时钟初始化的函数,但是实际没调用。如果uboot中没有初始化时钟,那么时钟就是iROM中初始化的那种配置)

猜你喜欢

转载自blog.csdn.net/wangdapao12138/article/details/81610380