imx6ull uboot分析

所有uboot都有一个顶层配置文件,在imx6ull evk板子上,这个文件是 mx6ullevk.h 通常这类文件都在include/configs文件夹下,

这里面大部分都是CONFIG_开头的宏定义,也就是说这文件是基层的配置文件,uboot的裁剪裁剪也增加功能,都是通过修改这个文件来实现的。

这里面除了CONFIG_XXX功能配置外,还有一个很重要的boot env环境变量的初始化,这个也是uboot中非常重要的一项。

1.CONFIG_配置

2. 环境变量

在定义中分了2部分

CONFIG_EXTRA_ENV_SETTINGS    CONFIG_BOOTCOMMAND

#define CONFIG_BOOTCOMMAND \
       "run findfdt;" \
       "mmc dev ${mmcdev};" \
       "mmc dev ${mmcdev}; if mmc rescan; then " \
           "if run loadbootscript; then " \
               "run bootscript; " \
           "else " \
               "if run loadimage; then " \
                   "run mmcboot; " \
               "else run netboot; " \
               "fi; " \
           "fi; " \
       "else run netboot; fi"

 一步一步分析,

run findfdt, 查找设备树,如果fdt_file没有定义,则会通过板子的name , ver来确定设备树的文件名。

mmc dev ${mmcdev};" 切换MMC

if mmc rescan; 

如果MMC上有存储设备,则

      if run loadbootscript; 运行loadbootscript,如果运行成功则 (实际读取boot.scr,一定失败因为没有)

              执行bootscript(所以这里也得不到执行)

      else if run loadimage;   运行loadimage成功,则执行下面mmcboot

              "run mmcboot; "   执行mmcboot, 读设备树文件,并启动bootz

     else run netboot; "  以上都失败,则执行网络启动。

 

bootargs也是一个重要的参数。它保存着uboot传递给linux内核的参数。 不能忽略!!

下面是一个典型的bootargs的值

bootargs console= ttymxc0, 115200 root= /dev/mmcblk1p2 rootwait rw
 

 

常用命令:

ls mmc 1:1 

fatload mmc 1:1 80800000 zImage

fatload mmc 1:1 83000000 imx6ull-14x14-evk.dtb

run mmcarg

bootz 80800000 - 83000000

还可以把“多个操作编”写成一串字符,赋值给一个环境变化,想运行的时候直接run 此环境变量 就可以了

比如下面这个寻找fdt_file的操作,相当神奇,

"findfdt="\
            "if test $fdt_file = undefined; then " \
                "if test $board_name = EVK && test $board_rev = 9X9; then " \
                    "setenv fdt_file imx6ull-9x9-evk.dtb; fi; " \
                "if test $board_name = EVK && test $board_rev = 14X14; then " \
                    "setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \
                "if test $fdt_file = undefined; then " \
                    "echo WARNING: Could not determine dtb to use; fi; " \
            "fi;\0" \

你可能感兴趣的:(linux)