在_面之前的流程和u-boot-spl一样,区别在于_main中。

对于u-boot 2016.03来说

ENTRY(_main)

/*
* Set up initial C runtime environment and call board_init_f(0).
*/ ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) bic sp, sp, # /* 8-byte alignment for ABI compliance */
#endif
mov r0, sp
bl board_init_f_alloc_reserve
mov sp, r0
/* set up gd here, outside any C code */
mov r9, r0
bl board_init_f_init_reserve mov r0, #
bl board_init_f ldr sp, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */
bic sp, sp, # /* 8-byte alignment for ABI compliance */
#endif
ldr r9, [r9, #GD_BD] /* r9 = gd->bd */
sub r9, r9, #GD_SIZE /* new GD is below bd */ adr lr, here
ldr r0, [r9, #GD_RELOC_OFF] /* r0 = gd->reloc_off */
add lr, lr, r0
ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
b relocate_code
here:
/*
* now relocate vectors
*/ bl relocate_vectors /* Set up final (full) environment */ bl c_runtime_cpu_setup /* we still call old routine here */ ldr r0, =__bss_start /* this is auto-relocated! */ ldr r3, =__bss_end /* this is auto-relocated! */
mov r1, #0x00000000 /* prepare zero to clear BSS */ subs r2, r3, r0 /* r2 = memset len */
bl memset
/* call board_init_r(gd_t *id, ulong dest_addr) */
mov r0, r9 /* gd_t */
ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */
/* call board_init_r */ ldr pc, =board_init_r /* this is auto-relocated! */
/* we should not return here. */
#endif ENDPROC(_main)

对于函数board_init_f  (u-boot-2016.03/common/board_f.c)

 、计算u-boot镜像的长度
、内存池的设置
、控制台log缓存
、CPU的特殊初始化
、初始化定时器 ..../arch/arm/cpu/armv7/omap-common/timer.c
、环境变量初始化
、a、波特路初始化
b、串口初始化 .../driver/serival/serival-unclass.c
c、控制台初始化 // 可放在板级初始化board_init_f(spl)内,方便调试用
、打印相关选择项
、打印CPU信息---speed
、 a、说明要初始化的dram ../arch/arm/cpu/armv7/am33xx/emif4.c
b、对relcoate 区域规划
c、relcoate 之后 gd成员设置
、define选择,如果定义了硬件
I2C、SPI,对其进行初始化 u-boot-2016.03/common/board_f.c

对于函数board_init_f  (u-boot-2016.03/common/board_r.c)

具体参看此博文

http://www.cnblogs.com/leaven/p/6296428.html

Am335x u-boot 代码大概流程的更多相关文章

  1. debian内核代码执行流程(二)

    继续上一篇文章<debian内核代码执行流程(一)>未完成部分. acpi_bus_init调用acpi_initialize_objects,经过一系列复杂调用后输出下面信息: [ IN ...

  2. [Android6.0][RK3399] 双屏异显代码实现流程分析(一)【转】

    本文转载自:http://blog.csdn.net/dearsq/article/details/55049182 Platform: RK3399 OS: Android 6.0 Version: ...

  3. gin源码解读1-net/http的大概流程

    gin框架预览 router.Run()的源码: func (engine *Engine) Run(addr ...string) (err error) { defer func() { debu ...

  4. 使用ReSharper打造团队代码检查流程

    首先我想跟大家分享一下我们团队的代码检查流程. 1. 项目经理随时会检查成员的代码,如果发现有不符合规范的代码,会在注释里面加todo.比如,假设leo的代码不符合规范,那么项目经理就会加注释: // ...

  5. kbengine Unity3d demo 代码执行流程(4)

    当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...

  6. Git 结合Git使用Bitbucket进行代码版本管理流程规范与实践

    结合Git使用Bitbucket进行代码版本管理流程规范与实践   By:授客 QQ:1033553122   目录 目录 1 一. 测试环境 2 二. 新建项目 2 三. 新建公有版本库 3 四. ...

  7. Atitit 找人软福利建设 技术团队建设大概流程

    Atitit 找人软福利建设 技术团队建设大概流程 火车公司有免费车座,餐馆有免费饭吃.. 软件公司嘛,就是软件资源,知识了...技术... 培训体系 大概的知识库体系..让他知道来到我们团队有着很高 ...

  8. 第一章 Java代码执行流程

    说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内 ...

  9. debian内核代码执行流程(三)

    接续<debian内核代码执行流程(二)>未完成部分 下面这行输出信息是启动udevd进程产生的输出信息: [ ]: starting version 175是udevd的版本号. 根据& ...

随机推荐

  1. HNOI2004 宠物收养所 (Treap)

    1285 宠物收养所 http://codevs.cn/problem/1285/  时间限制: 1 s  空间限制: 128000 KB     题目描述 Description 最近,阿Q开了一间 ...

  2. 【转】 虚拟机Linux不能上网简单有效的解决办法(NAT模式下)

    前提条件: a. 确保VMware Network Adapter for VMnet8 处于启用状态,这个是NAT网络模式要用的虚拟网卡.注意这个网卡的IP地址,不需要做手动设置 b. 确保 VMw ...

  3. 拦截asp.net输出流做处理

    本文标题是指对已经生成了HTML的页面做一些输出到客户端之前的处理. 方法的原理是:把Response的输出重定向到自定义的容器内,也就是我们的StringBuilder对象里,在HTML所有的向页面 ...

  4. JavaScript中innerText和innerHTML的区别

    案例 <html> <head> <meta http-equiv="Content-Type" content="text/html;ch ...

  5. iOS7下滑动返回与ScrollView共存二三事

    [转载请注明出处] = =不是整篇复制就算注明出处了亲... iOS7下滑动返回与ScrollView共存二三事 [前情回顾] 去年的时候,写了这篇帖子iOS7滑动返回.文中提到,对于多页面结构的应用 ...

  6. 使用generatorConfig工具自动生成mybatis的实体类以及dao接口和映射文件

    1:数据准备 创建一个数据库表 CREATE TABLE `logininfo` ( `id` ) NOT NULL AUTO_INCREMENT, `username` ) DEFAULT NULL ...

  7. Django初探(模板渲染、模板语音、simple_tag、母版子版、静态配置文件)

    一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建:   这样一个Django项目就创建完成了,上面可以看 ...

  8. Go语言 8 反射

    文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 8.1概念和作用 Reflection(反射)在计算 ...

  9. webconfig的配置解析

    <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以使用 Visual S ...

  10. 多个id或class属性相同的元素绑定事件

    <td class="tools"><a href="javascript:void(0);" status="0" na ...