u-boot_2013.01启动流程分析(三)(for exynos4412)

一、前言

在开始分析u-boot重定向之前,先总结一下前两小节u-boot在运行的过程中都有哪些操作:

1.设置CPU为SVC模式
2.设置异常向量表
3.关闭Cache和MMU
   SOC芯片的设置
4.处理唤醒的条件
5.判断是否在内存中运行
6.如果不在内存中运行,则初始化系统时钟和内存控制器(第一阶段)
   如果在内存中运行,则不需要初始化系统时钟和内存控制器(第二阶段)
7.初始化uart 
8.设置了sp
9.调用board_init_f
-----------------------------------------------------------------
第一阶段代码:
board_init_f  功能将u_boot从存储器搬移到内存,跳到内存中运行
第二阶段代码:
board_init_f 
(1)执行了初始化序列表 (板子相关的初始化操作)
(2)为u_boot重定向预留内存


    



最上面两幅图的 board_init_f 分别定义的函数 分别是u_boot 第一与第二阶段的board_init_f代码,分别实现自搬移到内存和初始化序列表等不同的功能。具体实现是 : 自搬移函数所在的mmc_boot.c文件所在目录下有个makefile文件,它的条件是 如果定义了CONFIG_SPL_BUILD 就生成 .o 文件 所以spl目录下的Makefile生成的第一阶段的u_boot中包含这个mmc_boot.o文件,因为spl目录下的Makefile中定义了 CONFIG_SPL_BUILD := y ,而生成第二阶段的U_boot的Makefile中没有定义这一句话,所以 它就会生成右面这幅图的 . o 文件,互不干扰。

在刚开始学习的时候,有点想不通为什么spl目录下的Makefile中定义了 CONFIG_SPL_BUILD := y 了,但第一阶段与第二阶段的代码还是都生成了,后来仔细想了想才明白他是有两个Makefile生成了不同阶段的u-boot(有两个,一个顶层目录下的u-boot还有一个spl目录下的u-boot),所以互不干扰。


二、u-boot的重定向之前内存的分配

源码如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值