DM365開發板上uboot操作實踐

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:~#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章