uboot2015.04代码执行流程2

接上

run_main_loop(board_r.c)      =》  common/main.c

s = bootdelay_process();  //<! 得到 bootcmd 参数 & save bootdelay, s=bootcmd

autoboot_command(s); // bootdelay时间内如果没有按键,则执行bootcmd里的命令

cli_loop();  /* 执行hush shell命令解释器 */

说到这里,提一下uboot采用的两个比较难理解的东西。

环境变量的操作,使用了哈希表。

uboot命令,使用了哈希shell,不知道是什么鬼。

这里给出链接地址,去找大牛:http://blog.csdn.net/metersun/article/category/6417297

bootcmd的命令:

                              bootcmd="mmc dev ${mmcdev};      设置当前设备
                                    if mmc rescan;            扫描设备
                                    then 
                                        if run loadbootscript; 
                                            then run bootscript; 
                                        else if run loadimage; //走的这里
                                            then run mmcboot;  bootm ${loadaddr};
                                        else 
                                            run netboot; 
                                        fi; 
                                    fi; 
                                    else 
                                        run netboot; 
                                    fi"

loadimage的内容:

name="loadimage" 
value="fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}"

mmcboot内容:

name="mmcboot" 
value="echo Booting from mmc ...; "
      "run mmcargs; "
      "if test ${boot_fdt} = yes || test ${boot_fdt} = try; "  这里为真,环境变量boot_fdt=try
      "then "
          "if run loadfdt; "
          "then" 
              "bootz ${loadaddr} - ${fdt_addr}; "
          "else if test ${boot_fdt} = try; "
          "then" 
              "bootz; "  这里
          "else" 
              "echo WARN: Cannot load the DT; "
          "fi; "
          "fi; "
      "else bootz; "
      "fi;"

然后bootz,启动了内核。

然而,原来uboot不是要给内核传机器ID、环境变量地址吗?

这一套是怎么传的,就不知道了,以后再深究吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值