1. 程式人生 > >uboot環境變數與常用命令

uboot環境變數與常用命令

1.環境變數
環境變數有2份,1份在flash,另一份在ddr中,啟動是,系統將flash中的複製到ddr中使用,我們更改也是更改ddr中的這份,要saveenv才會將ddr中的環境變數寫入flash。不然重啟,環境變數還是沒改以前的。
2.uboot常用命令1
網路設定:ipaddr serverip 
(1)ipaddr是開發板的本地IP地址
(2)serverip是開發板通過tftp指令去tftp伺服器下載東西時,tftp伺服器的IP地址。
(3)gatewayip是開發板的本地閘道器地址
(4)netmask是子網掩碼
(5)ethaddr是開發板的本地網絡卡的MAC地址。


2.1 uboot常用命令2:自動執行命令設定命令bootcmd

(1)uboot啟動後會開機自動倒數bootdelay秒,如果沒有人按下回車打斷啟動,則uboot會自動執行啟動命令來啟動核心。
(2)uboot開機自動啟動時實際就是在內部執行了bootcmd這個環境變數的值所對應的命令集。
(3)bootcmd=movi read kernel 30008000; bootm 30008000   意思是:將iNand的kernel分割槽讀取到DDR記憶體的0x30008000地址處,然後使用bootm啟動命令從記憶體0x30008000處去啟動核心。
(4)set bootcmd printenv,然後saveenv;然後重啟則會看到啟動倒數後自動執行printenv命令打印出環境變數。這個小實驗說明開機自動執行了bootcmd。
(5)set bootcmd 'movi read kernel 30008000; bootm 30008000',這裡不加單引號會出現錯誤
2.1.11.2,uboot給kernel傳參:bootargs

(1)Linux核心啟動時可以接收uboot給他傳啟動引數,這些啟動引數是uboot和核心約定好的形式、內容,Linux核心在這些啟動引數的指導下完成啟動過程。這樣的設計是為了靈活,為了核心在不重新編譯的情況下可以用不同的方式啟動。
(2)我們要做的是就是:在uboot的環境變數中設定bootargs,然後bootm命令啟動核心時會自動將bootargs傳給核心。
(3)bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3意義解釋:console=ttySAC2,115200控制檯使用串列埠2,波特率115200.root=/dev/mmcblk0p2rw根檔案系統在SD卡埠0裝置(iNand)第2分割槽,根檔案系統是可讀可寫的
init=/linuxrclinux的程序1(init程序)的路徑
rootfstype=ext3根檔案系統的型別是ext3
(4)核心傳參非常重要。在核心移植的時候,新手經常因為忘記給核心傳參,或者給核心傳遞的引數不對,造成核心啟動不起來。






























DDR中是沒有分割槽的,uboot是一個裸機程式,不會像作業系統會由系統整體管理所有記憶體,系統會負責分配和管理,保證記憶體不會隨便越界。所以寫uboot的時候要注意,不要自己把自己的資料給覆蓋了。