当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 图文解析u-boot2013.01启动流程

图文解析u-boot2013.01启动流程 时间:2018-09-25      来源:未知

在uboot源码目录下生成tags文件: ctags –R

u-boot起始地址为0x0000000,4字节对其,文本段.text说明第一个执行的文件是在Arch/arm/cpu/armv7/start.o 所以下一步找这个目录的start.s文件

从 arch/arm/cpu/armv7/start.S构建异常向量表

b reset------>

设置cpu为svc模式,关闭所有中断------>

bl cpu_init_cp15

关闭数据和指令

关闭cache TLB

关闭mmu相关的东西------> 

bl cpu_init_crit------>

b lowlevel_init 切换到了board/samsung/fs4412/lowlevel_init.S

设置堆栈,lr入栈

关闭看门狗------>

判断uboot是否已经运行到物理内存中(系统时钟等初始化交给之前的代码完成)------>

bl uart_asm_init

串口的初始化------>

bl _main (arch/arm/cpu/armv7/start.S)

设置C语言运行的基本环境------> arch/arm/lib/alt0.s

bl board_init_f 切换到 arch/arm/lib/board.c

初始化一些全局数据(比如 0x40000100就是给内核传递参数地址)

进行各种板级初始化。

 

b relocate_code 进行uboot代码重定位。 切换到arch/arm/cpu/armv7/start.S

需要对搬移后的代码进行符号重定向,避免绝对跳转失败------>

设置C语言运行终的环境 arch/arm/lib/crt0.S

bss段的清零操作。

第二阶段:完善uboot功能

ldr pc, =board_init_r

完全进入C语言的代码

702 for (;;) {

703 main_loop();

704 }

上一篇:单例模式的基本用法

下一篇:Linux内核模块文件组成介绍

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部