因為u-boot的command line輸入實在是不方便
舉例像他沒有history這樣要看前幾個指令是打什麼還蠻麻煩的
不過這其實是還好 更麻煩的是如過要打很長的指令 打到後面就會不見了(他不會跳到下一行...)
這裡其實會有一個方法 只針對setenv用(如果不想寫u-boot script的話)
常見的就是setenv bootargs console=ttyS0,115200n8........(超長)
這樣的話可以用setenv bootargs concole=ttyS0,115200n8(後面還有 但是先打到這裡)
下一行 setenv bootargs ${bootargs} noinitrd....(還有很長 但是可以這樣串起來)
這樣的話可以解決 有時候setenv超長的問題 但是在printenv的時候 還是會因為太長看不到
還是用u-boot script來解決吧
需要的東西mkimage這個utility 這樣在u-boot裡面的tool(基本上toolchain都會有 compile kernel完也要用)
就將需要的u-boot的command寫在一個檔案
以下就會是一個u-boot的script example 名稱是hdLinux
echo ====== set linux bootargs ======
setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/hda1 mem=120M
printenv bootargs
寫完之後 就是要把他變成u-boot上面可以執行的script
接者打以下這行
mkimage -T script -C none -n "set Hard disk linux" -d hdLinux hdLinux.img
說明一下
-T是代表這個image檔是什麼type 這裡是script檔
-C是代表這個image檔是用什麼方法壓縮 這裡是沒有壓縮(none)
-n是給這個image檔 取個名字 這裡是根據功能來取名
-d是製作這個image要用的檔案 可以不只一個 這是是用剛剛上面寫得script hdLinux
最後面是image產稱出來的檔案名稱
在這的話 為什麼會要給image取個名稱 最後又要給個檔名?
因為在u-boot裡面是沒有檔案系統的 將image放進去的時候是直接load進memory中
所以說要知道現在memory是什麼檔 在這個load進memory的image裡面必須要有個名稱 讓我們知道是什麼檔
而最後的檔名是要給host端來辨別的
最好u-boot的script 接下來就用tftp將檔案放到u-boot上再來執行
以下就是可能打的指令
tftp 0x85000000 hdLinux
autoscr 0x85000000(不能用bootm 0x85000000 他不會理你的)
這樣就可以執行剛剛寫好的u-boot script
沒有留言:
張貼留言