U-Boot-2016.05 启动参数详解
系统启动时,快速按任意键进入 U-Boot 命令行,执行 printenv 命令即可看到 U-Boot 的所有启动参数,若使用默认参数则类似如下。以下为 AM57x 平台 U-Boot-2016.05 版本 U-Boot 启动参数详解:
1、启动过程如下
=> printenv
arch=arm
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
args_usb=setenv bootargs rootfstype=${usbrootfstype} root=${usbroot} rw console=${console} ${optargs};
baudrate=115200
board=am57xx
board_name=am57xx_evm_reva3
bootcmd=setexpr bootcount ${bootcount} + 1; saveenv; if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot 0;fi;run findfdt; run envboot; run mmcboot;setenv mmcdev 1; setenv bootpart ${emmcbootpart}; setenv mmcroot /dev/mmcblk0p2 rw; run mmcboot;
bootcount=12
bootdelay=2
bootdir=/boot
bootenvfile=uEnv.txt
bootfile=zImage
bootm_size=0x10000000
bootpart=0:2
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
console=ttyO2,115200n8
cpu=armv7
display_panel=TL043A
dofastboot=0
emmcbootpart=1:2
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
ethaddr=34:03:de:ee:c2:9e
fdt_addr_r=0x88000000
fdtaddr=0x88000000
fdtcontroladdr=bef2f0f0
fdtfile=undefined
findfdt=if test $board_name = omap5_uevm; then setenv fdtfile omap5-uevm.dtb; fi; if test $board_name = dra7xx; then setenv fdtfile dra7-evm.dtb; fi;if test $board_name = dra72x-revc; then setenv fdtfile dra72-evm-revc.dtb; fi;if test $board_name = dra72x; then setenv fdtfile dra72-evm.dtb; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi;if test $board_name = beagle_x15_revb1; then setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;if test $board_name = am57xx_evm; then setenv fdtfile am57xx-evm.dtb; fi;if test $board_name = am57xx_evm_reva3; then setenv fdtfile am57xx-evm-reva3.dtb; fi;if test $board_name = am57xx_fpga_evm; then setenv fdtfile am57xx-fpga-evm.dtb; fi;if test $board_name = am572x_idk; then setenv fdtfile am572x-idk.dtb; fi;if test $board_name = am572x_idk && test $idk_pru1_mii = yes; then setenv fdtfile am572x-idk-pru1-mii.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = no; then setenv fdtfile am571x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then setenv fdtfile am571x-idk-lcd-osd.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
finduuid=part uuid mmc ${bootpart} uuid
idk_lcd=osd101t2045
idk_pru1_mii=no
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
kernel_addr_r=0x82000000
loadaddr=0x82000000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
logofile=logo.yuv
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run loadfdt; echo Booting from mmc${mmcdev} ...; run args_mmc; bootz ${loadaddr} - ${fdtaddr}; fi;fi;
mmcdev=0
mmcrootfstype=ext4 rootwait
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
netloadfdt=tftp ${fdtaddr} ${fdtfile}
netloadimage=tftp ${loadaddr} ${bootfile}
nfsopts=nolock
optargs=vt.global_cursor_default=0 consoleblank=0 coherent_pool=2M
partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
pxefile_addr_r=0x80100000
ramdisk_addr_r=0x88080000
rdaddr=0x88080000
rootpath=/export/rootfs
scriptaddr=0x80000000
scsidevs=0
soc=omap5
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial@48020000
stdin=serial@48020000
stdout=serial@48020000
usbboot=echo usb found on device ${usbdev}; run findfdt; usb start; if run usbloadimage; then run usbloadfdt; echo Booting from usb${usbdev} ...; run args_usb; bootz ${loadaddr} - ${fdtaddr}; fi;
usbdev=0
usbloadfdt=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
usbloadimage=load usb ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
usbroot=/dev/sda2
usbrootfstype=ext4 rootwait
usbtty=cdc_acm
vendor=ti
ver=U-Boot 2016.05-00042-g225a0c6 (Jul 09 2018 - 09:24:27 +0800)
vram=16M
Environment size: 4660/65532 bytes
2、参数详解
若检测到 SD 卡已插入,则加载 SD 卡 boot 分区中的 zImage 内核镜像和 rootfs 分区文件系统;若没有检测到 SD 卡插入,从 eMMC 启动系统。以下为 U-Boot 启动参数解析:
/*芯片架构为 ARM*/
arch=arm
/*MMC 启动参数*/
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
args_usb=setenv bootargs rootfstype=${usbrootfstype} root=${usbroot} rw console=${console} ${optargs};
/*串口控制台波特率为 115200*/
baudrate=115200
/*板卡平台为 AM57xx*/
board=am57xx
/*板卡模板型号为 am57xx_evm_reva3*/
board_name=am57xx_evm_reva3
/*U-Boot 入口命令 bootcmd。bootcmd 命令会在出现”Hit any key to stop autoboot”提示后执行。如果不按任意键,bootcmd 命令会上电自动运行,按任意键则进入 U-Boot 命令行。系统启动时,会先判断环境变量 dofastboot 是否为 1,若为 1,则执行 fastboot 命令。当 dofastboot 设置为 0 时,系统会采用默认的 U-Boot 环境变量,并运行 run mmcboot*/
bootcmd=if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot 0;fi;run findfdt; run envboot; run mmcboot;setenv mmcdev 1; setenv bootpart 1:2; setenv mmcroot /dev/mmcblk0p2 rw; run mmcboot;
/* U-Boot 自动启动等待时间为 2 秒*/
bootdelay=2
/*内核镜像文件在文件系统的路径为”/boot”目录*/
bootdir=/boot
/*U-Boot 环境变量存储文件名为 uEnv.txt*/
bootenvfile=uEnv.txt
/*内核镜像的文件名为 zImage*/
bootfile=zImage
/*内核镜像大小*/
bootm_size=0x10000000
/*文件系统在启动设备的第二分区*/
bootpart=0:2
/*运行 SD 卡启动脚本*/
bootscript=echo Running bootscript from mmc${mmcdev} ...;source ${loadaddr}
/*调试串口为 UART3,波特率为 115200,数据位为 8bit,无奇偶校验*/
console=ttyO2,115200n8
/*CPU 指令集为 armv7*/
cpu=armv7
/*dofastboot 状态标志位,判断是否进行 fastboot*/
dofastboot=0
/*扫描是否 SD 卡已插入,若 SD 卡中有 U-Boot 启动脚本,则使用脚本中的 U-Boot 环境变量启动,否则采用默认的 U-Boot 环境变量进行启动*/
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
/*网口 MAC 地址,可手动设置*/
ethaddr=fc:0f:4b:9d:15:6c
/*设备树文件读取地址*/
fdt_addr_r=0x88000000
/*设备树文件加载地址*/
fdtaddr=0x88000000
fdtcontroladdr=bef310f0
/*设备树文件名,此处暂未定义,接下来的 findfdt 环境变量中会根据 board_name 进行设置*/
fdtfile=undefined
/*findfdt 命令根据开发板名称 board_name 设置设备树文件名 fdtfile */
findfdt=if test $board_name = omap5_uevm; then setenv fdtfile omap5-uevm.dtb; fi; if test $board_name = dra7xx; then setenv fdtfile dra7-evm.dtb; fi;if test $board_name = dra72x-revc; then setenv fdtfile dra72-evm-revc.dtb; fi;if test $board_name = dra72x; then setenv fdtfile dra72-evm.dtb; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi;if test $board_name = beagle_x15_revb1; then setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;if test $board_name = am57xx_evm; then setenv fdtfile am57xx-evm.dtb; fi;if test $board_name = am57xx_evm_reva3; then setenv fdtfile am57xx-evm-reva3.dtb; fi;if test $board_name = am572x_idk; then setenv fdtfile am572x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = no; then setenv fdtfile am571x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then setenv fdtfile am571x-idk-lcd-osd.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
finduuid=part uuid mmc ${bootpart} uuid
idk_lcd=osd101t2045
idk_pru1_mii=no
/*从 loadaddr 地址开始,加载 bootenv 指定文件、定义大小为 filesize 的环境变量*/
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
/*内核镜像读取地址*/
kernel_addr_r=0x82000000
/*内核镜像加载地址*/
loadaddr=0x82000000
/*从 SD 卡加载 U-boot 环境变量*/
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
/*从 SD 卡加载启动脚本*/
loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr
/*从 SD 卡加载 dtb 文件*/
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
/*从 SD 卡加载内核镜像文件*/
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
/*SD 卡启动时,先扫描 SD 卡是否插入,若检测到 SD 卡已经插入,则加载 SD 卡 boot 分区中的 Uboot.img 以及 zImage 内核镜像。加载完成后,运行 run args_mmc,加载 rootfs 分区文件系统,以及设置控制台参数,加载完成后,运行 bootz 进行从 SD 卡启动*/
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then run loadfdt; echo Booting from mmc${mmcdev} ...; run args_mmc; bootz ${loadaddr} - ${fdtaddr}; fi;fi;
/*MMC 设备为 0*/
mmcdev=0
/*MMC 设备中的文件系统类型*/
mmcrootfstype=ext4 rootwait
/*网络启动参数,文件系统目录挂载节点为”/dev/nfs”,此处”ip=dhcp”表示开发板在内核和文件系统阶段自动获取 IP*/
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs
nfsroot=${serverip}{rootpath},${nfsopts} rw ip=dhcp
/*网络方式启动时,使用 TFTP 从服务器中加载设备树和内核镜像文件,执行 netargs 命令,启动系统。此处 dhcp 表示开发板在 U-Boot 阶段自动获取 IP*/
netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
/*网络启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/
netloadfdt=tftp ${fdtaddr} ${fdtfile}
/*网络启动时,通过 TFTP 加载内核镜像文件到 loadaddr 中*/
netloadimage=tftp ${loadaddr} ${bootfile}
/*NFS 传输取消文件锁模式*/
nfsopts=nolock
/*根文件系统分区设置*/
partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
/*pxe 启动文件加载地址*/
pxefile_addr_r=0x80100000
/*ramdisk 文件读取地址*/
ramdisk_addr_r=0x88080000
/*ramdisk 文件加载地址*/
rdaddr=0x88080000
/*网络方式启动时,文件系统在 PC 的默认存放目录,可手动修改*/
rootpath=/export/rootfs
/*脚本文件加载地址*/
scriptaddr=0x80000000
/*设置扫描发现的 SCSI 设备数量*/
scsidevs=0
/*SOC 类型为 omap5*/
soc=omap5
/*根据相关环境变量设置静态 IP*/
static_ip=${ipaddr}{serverip}{gatewayip}{netmask}{hostname}:ff
/*定义标准错误输出*/
stderr=serial@48020000
/*定义标准输入*/
stdin=serial@48020000
/*定义标准输出*/
stdout=serial@48020000
/*USB 方式启动参数*/
usbboot=echo usb found on device ${usbdev}; run findfdt; usb start; if run usbloadimage; then run usbloadfdt; echo Booting from usb${usbdev} ...; run args_usb; bootz ${loadaddr} - ${fdtaddr}; fi;
/*USB 设备为 0。AM57xx 平台 U-Boot 参数中的 USB 设备 0,对应开发板的物理接口为 USB1。*/
usbdev=0
/*USB 启动时,通过 TFTP 加载设备树文件到 fdtaddr 中*/
usbloadfdt=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};
/*USB 设备中 rootfs 分区文件系统的挂载节点*/
usbroot=/dev/sda2
/*USB 设备中的文件系统格式*/
usbrootfstype=ext4 rootwait
usbtty=cdc_acm
/*处理器生产厂家为 TI*/
vendor=ti
/*U-Boot 版本信息*/
ver=U-Boot 2016.05-g2cdaef6 (Nov 21 2017 - 09:04:05 +0800)
vram=16M
Environment size: 4451/65532 bytes