CubieBoard博客-HomeCubieTech公司网站

cubie.cc CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 238|回复: 0

SOM-TL138 U-Boot启动参数详解(U-Boot-2014.07版本)

[复制链接]

15

主题

0

好友

1171

积分

金牌会员

Rank: 6Rank: 6

贡献
216
金钱
508
威望
216
买家信用
卖家信用
积分
1171
发表于 2019-8-2 15:19:03 |显示全部楼层
1 U-Boot启动参数通读
系统启动时,快速按任意键进入U-Boot命令行,执行printenv命令即可看到U-Boot的所有启动参数,若使用默认参数则类似如下。以下AM335x平台U-Boot-2016.05版本U-Boot启动参数详解:



/*芯片类型为arm*/
arch=arm
/*MMC启动参数*/
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
/*串口波特率为115200*/
baudrate=115200
/*板卡平台为am335x*/
board=am335x
/*板卡模板型号A335_ICE*/
board_name=A335_ICE
/*被下面的scan_dev_for_scripts所执行启动script*/
boot_a_script=load ${devtype} ${devnum}{distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
/*被下面的scan_dev_for_efi所执行启动efi*/
boot_efi_binary=load ${devtype} ${devnum}{distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};elsebootefi ${kernel_addr_r} ${fdtcontroladdr};fi
/*被下面的scan_dev_for_extlinux所执行启动extlinux*/
boot_extlinux=sysboot ${devtype} ${devnum}{distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
/*fdt设备树标志yes/try*/
boot_fdt=try
/*usb启动时扫描USB controller*/
boot_net_usb_start=usb start
/*指定安装目录*/
boot_prefixes=/ /boot/
/*设置dhcp启动参数文件*/
boot_script_dhcp=boot.scr.uimg
/*设置启动参数文件*/
boot_scripts=boot.scr.uimg boot.scr
/*设置targets值为下面的distro_bootcmd里的bootcmd_${target}赋值以执行相关的boot命令*/
boot_targets=mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp
/*默认的启动命令先执行findfdt得到fat设备树然后执行设置init_console初始化串口最后启动系统*/
bootcmd=run findfdt; run init_console; run envboot; run distro_bootcmd
/*dhcpbootcmd命令由上面的distro_bootcmd选择执行*/
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi
/*legacy_mmc0bootcmd命令由上面的distro_bootcmd选择执行*/
bootcmd_legacy_mmc0=setenv mmcdev 0; setenv bootpart 0:2 ; run mmcboot
/*legacy_mmc1bootcmd命令由上面的distro_bootcmd选择执行*/
bootcmd_legacy_mmc1=setenv mmcdev 1; setenv bootpart 1:2 ; run mmcboot
/*mmc0bootcmd命令由上面的distro_bootcmd选择执行*/
bootcmd_mmc0=setenv devnum 0; run mmc_boot
/*mmc1bootcmd命令由上面的distro_bootcmd选择执行*/
bootcmd_mmc1=setenv devnum 1; run mmc_boot
/*NAND FLASH启动时的启动命令*/
bootcmd_nand=run nandboot
/*pxe启动时的启动命令*/
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
/*设置bootcount的值为1*/
bootcount=1
/*U-Boot自动启动等待时间为2秒。*/
bootdelay=2
/*内核镜像文件在文件系统的路径为”/boot”目录。*/
bootdir=/boot
/*设置U-Boot环境变量存储文件名为uEnv.txt*/
bootenvfile=uEnv.txt
/*设置内核镜像的文件名为zImage*/
bootfile=zImage
/*设置启动文件的大小*/
bootm_size=0x10000000
/*文件系统启动设备的第二分区*/
bootpart=0:2
/*loadaddr地址处开始执行script文件*/
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
/*调试串口为UART0,波特率为115200,数据位8bit无奇偶校验。*/
console=ttyO0,115200n8
/*CPU架构是armv7*/
cpu=armv7
/*设置在各个存储器中的位置,这里并未使用*/
dfu_alt_info_emmc=rawemmc raw 0 3751936
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x400;spl-os-args.raw raw 0x80 0x80;spl-os-image.raw raw 0x900 0x2000;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
dfu_alt_info_nand=SPL part 0 1;SPL.backup1 part 0 2;SPL.backup2 part 0 3;SPL.backup3 part 0 4;u-boot part 0 5;u-boot-spl-os part 0 6;kernel part 0 8;rootfs part 0 9
dfu_alt_info_ram=kernel ram 0x80200000 0xD80000;fdt ram 0x80F80000 0x80000;ramdisk ram 0x81000000 0x4000000
/*循环boot_targets找到相应的启动设备,然后去执行bootcmd_${target}*/
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
/*设置efi设备树的安装目录*/
efi_dtb_prefixes=/ /dtb/ /dtb/current/
/*扫描是否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;
/*ETH1网口MAC地址,手动设置*/
eth1addr=68:c9:0b:26:cb:af
/*网卡使用设备*/
/*ETH0网口MAC地址,手动设置*/
ethaddr=68:c9:0b:26:cb:ad
/*设备树文件读取地址*/
fdt_addr_r=0x88000000
/*设备树文件加载地址。*/
fdtaddr=0x88000000
/*设备树文件控制地址*/
fdtcontroladdr=9ef2e2d8
/*设备树文件初始化为未定义*/
fdtfile=undefined
/*findfdt命令根据开发板名称board_name设置设备树文件fdtfile*/
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test $board_name = BBG1; then setenv fdtfile am335x-bonegreen.dtb; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $board_name = A335_ICE; then setenv fdtfile am335x-icev2.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
/*获得uuid给后面的root值使用*/
finduuid=part uuid mmc 0:2 uuid
/*loadaddr地址开始加载bootenv指定文件、定义大小filesize的环境变量*/
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
/*根据board_name来设置串口波特率*/
init_console=if test $board_name = A335_ICE; then setenv console ttyO3,115200n8;else setenv console ttyO0,115200n8;fi;
/*定义内核地址*/
kernel_addr_r=0x82000000
/*获得efi的设备树文件*/
load_efi_dtb=load ${devtype} ${devnum}{distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
/*定义环境文件所在地址*/
loadaddr=0x82000000
/*拷贝MMC里的bootenvfileloadaddr*/
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
/*拷贝mmc里的boot.scrloadaddr*/
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
/*拷贝MMC中的bootdir/fdtfilefdtaddr*/
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
/*拷贝MMC中的bootdir/bootfileloadaddr*/
loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
/*拷贝MMCramdisk.gzrdaddr*/
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
/*设置devtype和调用scan_dev_for_boot_part*/
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
/*SD卡启动时,先扫描SD卡是否插入,若检测到SD卡已经插入,则加载SDboot分区中的u-boot.img以及zImage内核镜像。加载完成后,运行run args_mmc,加载rootfs分区文件系统,以及设置控制台参数,加载完成后,运行bootz进行从SD卡启动*/
mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};run envboot; if run loadimage; then run mmcloados;fi;fi;
/*MMC设备0*/
mmcdev=0
/*设置bootargs参数和判断boot_fdt的值来确定bootz启动位置*/
mmcloados=run args_mmc; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
/*设置MMC文件系统类型ext4*/
mmcrootfstype=ext4 rootwait
/*NAND FLASH分区列表。*/
mtdparts=mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),128k(NAND.SPL.backup2),128k(NAND.SPL.backup3),256k(NAND.u-boot-spl-os),1m(NAND.u-boot),128k(NAND.u-boot-env),128k(NAND.u-boot-env.backup1),8m(NAND.kernel),-(NAND.file-system)
/*NAND FLASH启动的参数*/
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
/* NAND FLASH方式启动时nand.0对应分区中,加载设备树、内核镜像文件。加载完成后,启动系统。*/
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} - ${fdtaddr}
/*设置bootrgs参数值中的root=*/
nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048
/*设置NAND FLASH启动时的文件系统为ubifs*/
nandrootfstype=ubifs rootwait=1
/*网络启动参数,文件系统目录挂载节点为”/dev/nfs”,此处”ip=dhcp”表示开发板在内核文件系统阶段自动获取IP*/
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}{rootpath},${nfsopts} rw ip=dhcp
/*网络启动时,使用TFTP从服务器中加载u-boot.img文件以及内核镜像文件,加载完成后,执行run netargs设置控制台参数,设置完成后启动系统*/
netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
/*网络启动时,通过TFTP加载DTB文件到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文件读取参数*/
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
/*ram中启动系统*/
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
/*定义ramdisk文件读取地址*/
ramdisk_addr_r=0x88080000
/*定义ram启动时根文件系统的路径*/
ramroot=/dev/ram0 rw
/*定义ram启动时的文件系统类型*/
ramrootfstype=ext2
/*定义ramdisk文件系统运行地址*/
rdaddr=0x88080000
/*网络方式启动时,文件系统在PC的默认存放目录,可手动修改*/
rootpath=/export/rootfs
/*设置prefix安装目录的值,然后调用scan_dev_for_extlinux scan_dev_for_scripts scan_dev_for_efi*/
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}{distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
/*根据devtypedevnum来选择执行scan_dev_for_boot*/
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}{distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
/*efi扫描设备设置fdt文件加载efi文件*/
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}{distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}{distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
/*加载extlinux.conf文件然后执行*/
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}{distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
/*获得需要的配置脚本然后去执行*/
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
/*定义脚本文件的执行地址*/
scriptaddr=0x80000000
/*定义soc类型是am33xx*/
soc=am33xx
/*SPI启动参数。*/
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
/*SPI启动系统命令*/
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
/*定义SPI启动时img的大小*/
spiimgsize=0x362000
/*定义SPI的根文件系统路径*/
spiroot=/dev/mtdblock4 rw
/*定义SPI启动时的根文件系统类型为jffs2*/
spirootfstype=jffs2
/*定义SPI img的读取地址*/
spisrcaddr=0xe0000
/*根据相关环境变量设置静态IP*/
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:ff
/*定义标准错误输出*/
/*定义标准输入*/
/*定义标准输出*/
/*USB启动系统命令*/
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
/*处理器生产厂家为TI*/
vendor=ti
/*U-Boot版本信息。*/
ver=U-Boot 2016.05-00235-g2ae6e93-dirty (Dec 22 2016 - 11:41:59 +0800)



更多帮助
销售邮箱:sales@tronlong.com       
技术邮箱:support@tronlong.com
创龙总机:020-8998-6280
技术热线:020-3893-9734
创龙官网:www.tronlong.com
技术论坛:www.51ele.net























本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|Archiver|手机版|邮件群发|cubie.cc---深刻的嵌入式技术和应用讨论中文社区 ( 粤ICP备13051116号-1  

GMT+8, 2019-8-20 20:20 , Processed in 0.025885 second(s), 7 queries , Apc On.

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc. | Style by Coxxs

回顶部