U-Boot環境變量的解釋說明 環 境 變 量 解 釋 說 明
bootdelay 定義執行自動啟動的等候秒數
baudrate 定義串口控制台的波特率
netmask 定義以太網接口的掩碼
ethaddr 定義以太網接口的MAC地址
bootfile 定義缺省的下載文件
bootargs 定義傳遞給Linux內核的命令行參數
bootcmd 定義自動啟動時執行的幾條命令
serverip 定義tftp服務器端的IP地址
ipaddr 定義本地的IP地址
stdin 定義標准輸入設備,一般是串口
stdout 定義標准輸出設備,一般是串口
stderr 定義標准出錯信息輸出設備,一般是串口
U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm
參考U-boot,其環境變量設置如下:
Uboot> printenv
bootdelay=3
baudrate=115200
ethaddr=00:12:34:56:78:9a
ipaddr=192.168.0.9 ①
serverip=192.168.0.1 ②
netmask=255.255.255.0
rootpath=/home/zht/rfsys ③
stdin=serial
stdout=serial
stderr=serial
bootcmd=tftp 21000000 uImage;bootm 21000000 ④
bootargs=root=/dev/nfs rw nfsroot=192.168.0.1:/home/zht/rfsys nfsaddrs=192.168.0.48: 192.168.0.1:192.168.0.1:255.255.255.0 console=ttyS0,115200 mem=32M ⑤
① 設置目標板IP地址
② 設置服務器IP地址
③ 設置根文件系統在服務器上的路徑,注意該路徑一定要設定為服務器上的nfs目錄。
④ bootcmd是u-boot啟動後執行的命令,命令之間用分號分隔。
tftp 21000000 uImage 表示通過tftp 將內核映像下載到RAM中地址為0x21000000;
bootm 21000000 啟動linux操作系統
在保存環境變量bootcmd 時 注意命令格式
setenv bootcmd "nand read 31000000 0x60000 500000;bootm 31000000"
若去掉“” 可能會導致 鍵入回車後立馬啟動內核。導致這個問題的原因可能是我移植的uboot的問題,具體可通過查看修改代碼解決。
⑤ 定義u-boot傳送給linux內核的命令行參數,該命令行指定以網絡文件系統作為根文件系統。
其中root=/dev/nfs,並非真的設備,而是一個告訴內核經由網絡取得根文件系統的旗標。
參數nfsroot這個參數告訴內核以那一台機器,那個目錄以及那個網絡文件系統選項作為根文件系統使用。參數的格式如下:
nfsroot=[:][,]
如果指令列上沒有給定 nfsroot 參數,則將使用‘/tftpboot/%s’預設值。其它選項如下:
--指定網絡文件系統服務端的互聯網地址(IP address)。如果沒有給定此欄位,則使用由 nfsaddrs 變量(見下面)所決定的值。此參數的用途之一是允許使用不同機器作為反向地址解析協議(RARP) 及網絡文件系統服務端。通常你可以不管它(設為空白)。
-- 服務端上要作為根掛入的目錄名稱。如果字串中有個‘%s’ 符記(token),此符記將代換為客戶端互聯網地址之 ASCII 表示法。
-- 標准的網絡文件系統選項。所有選項都以逗號分開。如果沒有給定此選項欄位則使用下列的預設值:
port = as given by server portmap daemon
rsize = 1024
wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac