SOM-TL138F U-Boot启动方法及启动参数详解

2019年08月02日 14:13    发布者:Tronlong818
1 U-Boot-2016.05版本适用性说明 表 1
开发板型号是否支持本实验
TL5728-EasyEVM支持
TL5728-IDK支持
TL5728F-EVM不支持
2 U-Boot启动参数详解系统启动时,快速按任意键进入U-Boot命令行,执行printenv命令即可看到U-Boot的所有启动参数,若使用默认参数则类似如下。以下为AM57x平台U-Boot-2016.05版本U-Boot启动参数详解:


若检测到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=0x88000000fdtcontroladdr=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=osd101t2045idk_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/nfsnfsroot=${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}::off/*定义标准错误输出*/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 rootwaitusbtty=cdc_acm/*处理器生产厂家为TI*/vendor=ti/*U-Boot版本信息*/ver=U-Boot 2016.05-g2cdaef6 (Nov 21 2017 - 09:04:05 +0800)vram=16MEnvironment size: 4451/65532 bytes