u-boot第二阶段启动流程分析

来源:互联网 发布:深入浅出数据分析 mobi 编辑:程序博客网 时间:2024/05/18 01:02

第一阶段的初始化结束后进入start_armboot函数,也就是进入第二阶段的初始化。下面来分析第二阶段的主要流程。

在此之前,我们先来明确u-boot的目标,u-boot要做的事情是1、把内核中flash中读出   2、启动内核


248行,gd_t是一个结构体指针,保存一些全局变量,这条语句是给它分配一个内存空间

258行,init_sequence是一个函数指针,具体如下:

也就是用for语句依次初始化这些函数。



接下来是对flash的初始化。在开头我们就说了u-boot的目标,所以得先对flash进行初始化,就是能够实现flash的读写功能。



297行是对malloc的初始化,因为u-boot是一个单片机程序,所以需要申请相应的内存空间

301行是nand flash的初始化

310行是对环境变量的初始化,其中环境变量有两种。1、默认的  2、Flash上保存的。当u-boot启动之后,先去flash上找是否有可用的环境变量,如果没有话就使用默认的


在前面做了一些初始化之后,u-boot就拥有对flash的读写功能,也就是能把内核从flash中读出。至于如何启动,就是这个主循环要做的事情了。



在整个main_loop循环中,有两个函数是最为关键的。一个是432行的s = getenv ("bootcmd");其中bootcmd是一个环境变量,定义如下:

bootcmd=nand_read.jffs 0x30007FC0  kernel:bootm 0x30007FC0    

也就是把内核从nand_flash中kernle分区中读到0x30007FC0这个地址   而第二条语句bootm 0x30007FC0是启动内核。



第二关键的函数是444行的run_command (s, 0); 去执行各种读到的命令。而整个u-boot的核心就是这个run_command函数。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩孑高三总是玩手机怎么办 摩托车被收了怎么办 摩托车的手续都怎么办 摩托车罚单掉了怎么办 行人遇到黄灯该怎么办 长辈借钱不还怎么办 不绣刚电梯轿壁有凹槽怎么办 电梯下限位故障怎么办 卫生间夏天太热怎么办 07大檐帽变形了怎么办 税务局不批发票怎么办 进项发票太多了怎么办 发票报销联丢失怎么办 发票领用簿没有怎么办 发票购买本遗失怎么办 销售方遗失发票怎么办 增值税发票发票联丢失怎么办 苹果购买发票丢失怎么办 空白增值税发票发票丢失怎么办 网购发票 领购簿怎么办 购物发票丢了怎么办 饭店客人买单要少钱怎么办 发票备注栏写错怎么办 卖房子发票丢失怎么办 发票二维码蓝票怎么办 车祸伤者出院怎么办 微信付款失败怎么办 增值税电子发票没打税号怎么办 买假出租车发票怎么办 纳税号错了怎么办 发票抬头写错怎么办 增值税发票打错顺序怎么办 发票打错了怎么办 电子发票错了怎么办 税率开高了怎么办 增值发票折叠了怎么办 播放器格式不对怎么办 发票弄上油了怎么办 快手视频快进了怎么办? 三星手机没声音怎么办 mp4不是标准格式怎么办