1 U-Boot-2016.05版本適用性說明 表 1
系統啟動時,快速按任意鍵進入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=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 |