1 U-Boot-2016.05版本適用性說明 表 1
系統(tǒng)啟動時,快速按任意鍵進(jìn)入U-Boot命令行,執(zhí)行printenv命令即可看到U-Boot的所有啟動參數(shù),若使用默認(rèn)參數(shù)則類似如下。以下為AM57x平臺U-Boot-2016.05版本U-Boot啟動參數(shù)詳解: ![]() ![]() 若檢測到SD卡已插入,則加載SD卡boot分區(qū)中的zImage內(nèi)核鏡像和rootfs分區(qū)文件系統(tǒng);若沒有檢測到SD卡插入,從eMMC啟動系統(tǒng)。以下為U-Boot啟動參數(shù)解析: /*芯片架構(gòu)為ARM*/ arch=arm /*MMC啟動參數(shù)*/ 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命令會在出現(xiàn)”Hit any key to stop autoboot”提示后執(zhí)行。如果不按任意鍵,bootcmd命令會上電自動運(yùn)行,按任意鍵則進(jìn)入U-Boot命令行。系統(tǒng)啟動時,會先判斷環(huán)境變量dofastboot是否為1,若為1,則執(zhí)行fastboot命令。當(dāng)dofastboot設(shè)置為0時,系統(tǒng)會采用默認(rèn)的U-Boot環(huán)境變量,并運(yùn)行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 /*內(nèi)核鏡像文件在文件系統(tǒng)的路徑為”/boot”目錄*/ bootdir=/boot /*U-Boot環(huán)境變量存儲文件名為uEnv.txt*/ bootenvfile=uEnv.txt /*內(nèi)核鏡像的文件名為zImage*/ bootfile=zImage /*內(nèi)核鏡像大小*/ bootm_size=0x10000000 /*文件系統(tǒng)在啟動設(shè)備的第二分區(qū)*/ bootpart=0:2 /*運(yùn)行SD卡啟動腳本*/ bootscript=echo Running bootscript from mmc${mmcdev} ...;source ${loadaddr} /*調(diào)試串口為UART3,波特率為115200,數(shù)據(jù)位為8bit,無奇偶校驗(yàn)*/ console=ttyO2,115200n8 /*CPU指令集為armv7*/ cpu=armv7 /*dofastboot狀態(tài)標(biāo)志位,判斷是否進(jìn)行fastboot*/ dofastboot=0 /*掃描是否SD卡已插入,若SD卡中有U-Boot啟動腳本,則使用腳本中的U-Boot環(huán)境變量啟動,否則采用默認(rèn)的U-Boot環(huán)境變量進(jìn)行啟動*/ 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; /*網(wǎng)口MAC地址,可手動設(shè)置*/ ethaddr=fc:0f:4b:9d:15:6c /*設(shè)備樹文件讀取地址*/ fdt_addr_r=0x88000000 /*設(shè)備樹文件加載地址*/ fdtaddr=0x88000000 fdtcontroladdr=bef310f0 /*設(shè)備樹文件名,此處暫未定義,接下來的findfdt環(huán)境變量中會根據(jù)board_name進(jìn)行設(shè)置*/ fdtfile=undefined /*findfdt命令根據(jù)開發(fā)板名稱board_name設(shè)置設(shè)備樹文件名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的環(huán)境變量*/ importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize} /*內(nèi)核鏡像讀取地址*/ kernel_addr_r=0x82000000 /*內(nèi)核鏡像加載地址*/ loadaddr=0x82000000 /*從SD卡加載U-boot環(huán)境變量*/ loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile} /*從SD卡加載啟動腳本*/ loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr /*從SD卡加載dtb文件*/ loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; /*從SD卡加載內(nèi)核鏡像文件*/ loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile} /*SD卡啟動時,先掃描SD卡是否插入,若檢測到SD卡已經(jīng)插入,則加載SD卡boot分區(qū)中的Uboot.img以及zImage內(nèi)核鏡像。加載完成后,運(yùn)行run args_mmc,加載rootfs分區(qū)文件系統(tǒng),以及設(shè)置控制臺參數(shù),加載完成后,運(yùn)行bootz進(jìn)行從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設(shè)備為0*/ mmcdev=0 /*MMC設(shè)備中的文件系統(tǒng)類型*/ mmcrootfstype=ext4 rootwait /*網(wǎng)絡(luò)啟動參數(shù),文件系統(tǒng)目錄掛載節(jié)點(diǎn)為”/dev/nfs”,此處”ip=dhcp”表示開發(fā)板在內(nèi)核和文件系統(tǒng)階段自動獲取IP*/ netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip} ![]() /*網(wǎng)絡(luò)方式啟動時,使用TFTP從服務(wù)器中加載設(shè)備樹和內(nèi)核鏡像文件,執(zhí)行netargs命令,啟動系統(tǒng)。此處dhcp表示開發(fā)板在U-Boot階段自動獲取IP*/ netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr} /*網(wǎng)絡(luò)啟動時,通過TFTP加載設(shè)備樹文件到fdtaddr中*/ netloadfdt=tftp ${fdtaddr} ${fdtfile} /*網(wǎng)絡(luò)啟動時,通過TFTP加載內(nèi)核鏡像文件到loadaddr中*/ netloadimage=tftp ${loadaddr} ${bootfile} /*NFS傳輸取消文件鎖模式*/ nfsopts=nolock /*根文件系統(tǒng)分區(qū)設(shè)置*/ 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 /*網(wǎng)絡(luò)方式啟動時,文件系統(tǒng)在PC的默認(rèn)存放目錄,可手動修改*/ rootpath=/export/rootfs /*腳本文件加載地址*/ scriptaddr=0x80000000 /*設(shè)置掃描發(fā)現(xiàn)的SCSI設(shè)備數(shù)量*/ scsidevs=0 /*SOC類型為omap5*/ soc=omap5 /*根據(jù)相關(guān)環(huán)境變量設(shè)置靜態(tài)IP*/ static_ip=${ipaddr} ![]() ![]() ![]() ![]() ![]() /*定義標(biāo)準(zhǔn)錯誤輸出*/ stderr=serial@48020000 /*定義標(biāo)準(zhǔn)輸入*/ stdin=serial@48020000 /*定義標(biāo)準(zhǔn)輸出*/ stdout=serial@48020000 /*USB方式啟動參數(shù)*/ 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設(shè)備為0。AM57xx平臺U-Boot參數(shù)中的USB設(shè)備0,對應(yīng)開發(fā)板的物理接口為USB1。*/ usbdev=0 /*USB啟動時,通過TFTP加載設(shè)備樹文件到fdtaddr中*/ usbloadfdt=load usb ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; /*USB設(shè)備中rootfs分區(qū)文件系統(tǒng)的掛載節(jié)點(diǎn)*/ usbroot=/dev/sda2 /*USB設(shè)備中的文件系統(tǒng)格式*/ usbrootfstype=ext4 rootwait usbtty=cdc_acm /*處理器生產(chǎn)廠家為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 |