uboot主要命令:
nand命令集 nand flash設備的操作命令集合
nand info 顯示flash設備信息。
nand device [num] 顯示具體flash設備的信息。
nand erase offset size 擦除Nand Flash的 off 偏移地址處的size 字節的數據。舉例:
nand erase 200000 300000
nand read loadaddr offset size 從Nand Flash的offset偏移地址處讀取size 字節的數據到內存的 loadaddr地址。
nand write loadaddr offset size 把內存中loadaddr地址開始的size字節的數據寫到Flash中,從偏移地址爲offset的地方開始。舉例:
nand write 80700000 200000 300000
bootm [addr] 引導執行內存中的內核映像。如果指定addr,則表示內核映像被加載在該內存地址,否則從默認內存地址處引導執行。舉例:
bootm 80700000
nboot load_ram_addr flash_dev_num offset
從flash加載內核到物理內存,然後執行內核程序。load_ram_addr指內核文件加載到內存的地址,flash_dev_num指flash設備的編號,可以使用命令“nand device”查看開發板上的具體flash設備信息。offset指內核文件在flash中的起始偏移地址。它會自動讀取到內核映像(使用mkimage處理過的)的結束,所以不用給出讀取大小。舉例:
nboot 80700000 0 200000
tftpboot [loadaddr] [[host_ip:]filename] 使用tftp協議引導執行內核映像。host_ip的tftp服務器的主機IP地址,filename爲內核映像文件名,loadaddr爲內存地址。舉例:
tftpboot 80200000 192.168.0.6:uImage
nfs [loadaddr] [[host_ip:]filename] 使用nfs協議引導執行內核映像。host_ip的nfs服務器的主機IP地址,filename爲內核映像文件名,loadaddr爲內存地址。舉例:
nfs 0x30008000 192.168.0.100:/nfs/uImage
printenv 打印所有uboot的環境變量。
setenv env_name env_value 設置uboot的環境變量。主要環境變量舉例:
setenv ipaddr 192.168.0.26
setenv serverip 192.168.0.6
setenv ethaddr 00:0C:29:94:D7:D6
setenv bootfile uImage
setenv autostart yes
setenv bootcmd nboot 80700000 0 200000
setenv bootargs mem=80M console=ttyS0,115200n8,noinitrd rw root=/dev/mtdblock3 rootfstype=yaffs
askenv env_name 當執行該命令後,在輸入狀態下直接回車,即可實現取消對環境變量env_name的設定。
saveenv 將環境變量的修改保存到flash中。
更多uboot的命令解釋,推薦參考博文:
http://blog.chinaunix.net/uid-28325016-id-3402039.html
燒寫自己編譯的內核映像實踐
假定在IP爲192.168.0.6的開發主機上編譯好了自己定製的uImage文件,並配置好了tftp服務和nfs服務。導出可以掛載的nfsroot爲:/nfs/nfsboot。準備好了DM365的開發板,串口線和網線均連接好了。在連接串口線的開發主機端,串口調試軟件也配置完畢,處於打開狀態!
SEED_DVS365-SDK.tar.gz是DM365開發板提供的軟件壓縮包,其中的內核源碼文件“linux-2.6.18_pro500/arch/arm/mach-davinci/board-dm365-evm.c”定義了開發板上的nand flash設備的分區信息,4個分區的大小定義源碼如下(從204行開始):
#define BOOTLOADER_SIZE 0x1c0000
#define PARAMS_SIZE 0x40000
#define KERNEL_SIZE 0x400000
#define FS_SIZE 0x3A00000
其實大小依次是1M+768K, 256K, 4M, 58M,總計64M。
1. 對DM365開發板上電,根據提示,進入到uboot的命令行模式。
2. 配置環境變量,然後使用命令“saveenv”進行保存。具體設置的環境變量用printenv命令打印如下:
SEED_DVS365v1.0 :>printenv
baudrate=115200
bootfile="uImage"
ethaddr=00:0C:29:94:D7:D6
bootargs=mem=80M console=ttyS0,115200n8 noinitrd rw root=/dev/mtdblock3 rootfstype=yaffs
bootdelay=9
filesize=212F4C
fileaddr=80700000
ipaddr=192.168.0.26
serverip=192.168.0.6
autostart=yes
bootcmd=nboot 80100000 0 200000
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 1.3.4 (Dec 7 2009 - 11:07:06)
3. 斷電重啓後,再次進入到uboot命令行模式下。執行如下命令:
SEED_DVS365v1.0 :>setenv autostart no
SEED_DVS365v1.0 :>tftp 80700000
TFTP from server 192.168.0.6; our IP address is 192.168.0.26
Filename 'uImage'.
Load address: 0x80700000
Loading: #################################################################
##############T ###########################################T ######T ##
##T #################
done
Bytes transferred = 2174796 (212f4c hex)
SEED_DVS365v1.0 :>nand erase 200000 300000
NAND erase: device 0 offset 0x200000, size 0x300000
Erasing at 0x4fc000 -- 100% complete.
OK
SEED_DVS365v1.0 :>nand write 80700000 200000 300000
NAND write: device 0 offset 0x200000, size 0x300000
3145728 bytes written: OK
SEED_DVS365v1.0 :>setenv autostart yes
SEED_DVS365v1.0 :>
4. 斷電重啓,系統成功加載!
5. 以root身份進入系統,輸入如下命令驗證自己定製的內核燒寫成功:
root@SEED_DVS365:~# uname -r
2.6.18_pro500-davinci_evm-arm_v5t_le-zjp2
root@SEED_DVS365:~#