|
向Flash中燒寫uboot和linux操作系統(tǒng)
2011年03月28日 向Flash中燒寫uboot和linux操作系統(tǒng) ================================================================================ from:http://www./course/6_system/linux/Linuxjs/20090428/165769.html 一、片內(nèi)啟動 1、用Xmodem協(xié)議,發(fā)送loader.bin和uboot.bin文件,此時uboot.bin被發(fā)送到系統(tǒng)的 SDRAM中,發(fā)送完后uboot開始運行,如果這時斷電或退出,則一切將從頭開始,因為SDRAM內(nèi)存儲的數(shù)據(jù)會在斷電或退出后消失 2、擦除 Flash 在對Flash進行燒寫之前,需要將其擦除: Uboot>protect off all 去掉Flash的扇區(qū)寫保護 Uboot>erase all 擦除Flash的所有扇區(qū) (注: 如果只是要擦除某塊區(qū)域的Flash,比如0x10000000到0x10060000之間的區(qū)域,則可用命令: 1)protect off 10000000 2)erase 10000000 1006ffff 如果是要對某塊區(qū)域加上寫保護,比如0x10000000到0x10060000之間的區(qū)域,則可用命令: 1)protect on 10000000 1006ffff 可用flinfo命令來查看那些區(qū)域是受保護的,那些區(qū)域不是受保護的。 3、燒寫boot.bin到Flash 在Uboot提示符下鍵入命令: Uboot>loadb 21000000 (下完之后會顯示boot.bin的大小,然后在后面用命令cp.b燒寫時將其后4位變成f,假如文件大小為5e33a,則在燒寫時將其變?yōu)?ffff) 將文件發(fā)送到系統(tǒng)的SDRAM中然后在超級終端使用Kermit協(xié)議,發(fā)送文件boot.bin,發(fā)送完畢后,鍵入以下命令: Uboot>cp.b 21000000 10000000 5ffff 將發(fā)送到SDRAM中的數(shù)據(jù)寫入Flash Uboot>protect on 10000000 10005ffff 對寫入Flash的內(nèi)容進行寫保護 注: 此處還可以用tftp或bootp協(xié)議來完成,不過要先設置網(wǎng)絡變量,即設置本機和目標機的IP地址,還有目標機的Mac地址。 網(wǎng)絡環(huán)境變量: Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目標板 ip 地址] 目標板 ip 地址 Uboot>setenv serverip [主機 ip 地址] 主機 ip 地址 tftp協(xié)議: 1)tftp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 bootp協(xié)議: 1)bootp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 10005fff 4、燒寫 Uboot.gz 到 Flash 在Uboot提示符下鍵入命令:裝入Uboot.gz6 Uboot>loadb 20000000 將文件發(fā)送到系統(tǒng)的SDRAM中. 然后在超級終端使用Kermit協(xié)議,發(fā)送文件Uboot.gz,發(fā)送完畢后,鍵入以下命令: Uboot>cp.b 20000000 10010000 ffff 將發(fā)送到SDRAM中的數(shù)據(jù)寫入Flash Uboot>protect on 10000000 1001ffff 對寫入Flash的內(nèi)容進行寫保護 (注:此處也可以用tftp或bootp協(xié)議) 二、片外啟動 如何在uboot內(nèi)運行自己的程序 1、手動運行(只是將程序下載到SDRAM中運行,僅做測試之用,斷電或退出后就會消失) 1)loadb 20000000 下載用戶程序(*.bin) 2)go 20000000 程序就會運行 2、自動運行(將程序?qū)懭隖lash,uboot啟動之后程序自動運行 1)設置環(huán)境變量 Uboot>setenv usr_prg cp.b 10300000 20000000 ffff(程序的大?。? Uboot>setenv run_prg go 20000000 Uboot>setenv bootcmd run usr_prg\;run run_prg Uboot>saveenv 2)寫入程序,即將其燒入Flash protect off all erase 10300000 103fffff loadb 20000000 下載*.bin cp.b 20000000 10300000 ffff(用戶程序的大?。? 3)reset之后程序就會自動運行"T1X$m 二、燒寫linux程序開 1、下載linux到系統(tǒng)的SDRAM運行(僅做測試之用,斷電或退出后就會消失)程 1)運行Uboot,設置環(huán)境變量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目標板 ip 地址] 目標板 ip 地址 Uboot>setenv serverip [主機 ip 地址] 主機 ip 地址 2)下載linux內(nèi)核,文件系統(tǒng) 打開tftpserver應用程序,設置根目錄路徑,將內(nèi)核、文件系統(tǒng)等拷貝到所設置的根目錄下。 Uboot>tftp 21100000 ramdisk.gz 下載文件系統(tǒng) Uboot>tftp 21000000 uImage 下載 linux 內(nèi)核 Uboot>bootm 21000000 啟動 linux 然后linux操作系統(tǒng)就開始運行。 2、燒寫 Linux 到系統(tǒng)的 Flash 運行 1)設置運行Linux的環(huán)境變量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝內(nèi)核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝文件系統(tǒng)到sdram Uboot>setenv boot bootm 設置變量 Uboot>setenv bootcmd run ramdisk\;run image\;run boot 設置默認變量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目標板 ip 地址 目標板 ip 地址,由你自己決定 Uboot>setenv serverip 主機ip地址 主機ip地址,就是你的PC的ip程序開 Uboot>saveenv 保存環(huán)境變量 2)燒寫Linux內(nèi)核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000 Uboot>tftp 21000000 uImage Uboot>cp.b 21000000 10020000 b0000 reset之linux操作系統(tǒng)就開始運行。 ================================================================================ ================================================================================ from: http://www./html/article/qianrushiyingyong/20081227/15061.html u-boot命令介紹及燒寫程序?qū)嵗? bootdelay 定義執(zhí)行自動啟動的等候秒數(shù) baudrate 定義串口控制臺的波特率 netmask 定義以太網(wǎng)接口的掩碼 ethaddr 定義以太網(wǎng)接口的MAC地址 bootfile 定義缺省的下載文件 bootargs 定義傳遞給Linux內(nèi)核的命令行參數(shù) bootcmd 定義自動啟動時執(zhí)行的幾條命令 serverip 定義tftp服務器端的IP地址 ipaddr 定義本地的IP地址 stdin 定義標準輸入設備,一般是串口 stdout 定義標準輸出設備,一般是串口 stderr 定義標準出錯信息輸出設備,一般是串口 u-boot命令介紹及燒寫程序?qū)嵗齴z Printenv 打印環(huán)境變量。 Uboot> printenv baudrate=115200 ipaddr=192.168.1.1 ethaddr=12:34:56:78:9A:BC serverip=192.168.1.5 Environment size: 80/8188 bytes Setenv 設置新的變量 Uboot> setenv myboard AT91RM9200DK Uboot> printenv baudrate=115200 ipaddr=192.168.1.1 ethaddr=12:34:56:78:9A:BC serverip=192.168.1.5 myboard=AT91RM9200DK Environment size: 102/8188 bytes Saveenv 保存變量 命令將當前定義的所有的變量及其值存入flash中。用來存儲變量及其值的空間只有8k字節(jié),應不要超過。 Loadb 通過串口Kermit協(xié)議下載二進制數(shù)據(jù)。 Tftp 通過網(wǎng)絡下載程序,需要先設置好網(wǎng)絡配置 Uboot> setenv ipaddr 192.168.0.1 Uboot> setenv serverip 192.168.1.115 (tftp服務器的地址) 下載bin文件到地址0x20000000處。 Uboot> tftp 20000000 u-bo.bin (u-boot.bin應位于tftp服務程序的目錄) Uboot> tftp 32000000 vmlinux 把server(IP=環(huán)境變量中設置的serverip)中/tftpdroot/ 下的vmlinux通過TFTP讀入到物理內(nèi)存32000000處。 Md 顯示內(nèi)存區(qū)的內(nèi)容。 Mm 修改內(nèi)存,地址自動遞增。 Nm 修改內(nèi)存,地址不自動遞增。 Mw 用模型填充內(nèi)存 mw 32000000 ff 10000(把內(nèi)存0x32000000開始的0x10000字節(jié)設為0xFF) Cp 拷貝一塊內(nèi)存到另一塊 Cmp 比較兩塊內(nèi)存區(qū) 這些內(nèi)存操作命令后都可加一個后綴表示操作數(shù)據(jù)的大小,比如cp.b表示按字節(jié)拷貝。 Protect 寫保護操作 protect on 1:0-3(就是對第一塊FLASH的0-3扇區(qū)進行保護) protect off 1:0-3取消寫保護 Erase 擦除扇區(qū)。 erase: 刪除FLASH的扇區(qū) erase 1:0-2(就是對每一塊FLASH的0-2扇區(qū)進行刪除) 對DataFlash的操作 U-Boot在引導時如果發(fā)現(xiàn)NPCS0和NPCS3上連有DataFlash,就會分配虛擬的地址給它,具體為 : 0xC0000000---NPCS0 0xD0000000---NPCS3 run 執(zhí)行設置好的腳本 Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\; cp.b 20000000 10020000 8000 Uboot> saveenv Uboot> run flashit bootcmd 保留的環(huán)境變量,也是一種腳本 如果定義了該變量,在autoboot模式下,將會執(zhí)行該腳本的內(nèi)容。 Go 執(zhí)行內(nèi)存中的二進制代碼,一個簡單的跳轉到指定地址 Bootm 執(zhí)行內(nèi)存中的二進制代碼 要求二進制代碼為制定格式的。通常為mkimage處理過的二進制文件。 起動UBOOT TOOLS制作的壓縮LINUX內(nèi)核, bootm 3200000 Bootp 通過網(wǎng)絡啟動,需要提前設置好硬件地址。 ?。?得到所有命令列表 help help usb, 列出USB功能的使用說明 ping 注:只能開發(fā)板PING別的機器 usb usb start: 起動usb 功能 usb info: 列出設備 usb scan: 掃描usb storage(u 盤)設備 kgo 起動沒有壓縮的linux內(nèi)核 kgo 32000000 fatls 列出DOS FAT文件系統(tǒng) fatls usb 0列出第一塊U盤中的文件 fatload 讀入FAT中的一個文件 fatload usb 0: 0 32000000 u-boot.bin 把USB中的u-boot.bin 讀到物理內(nèi)存0x32000000處! flinfo 列出flash的信息 nfs nfs 32000000 192.168.0.115:u-boot.bin 把192.168.0.115(LINUX 的NFS文件系統(tǒng))中的NFS文件系統(tǒng)中的u-boot.bin讀入內(nèi)存0x32000000處。 例:通過串口更新u-boot程序 [ u-boot@wpf ]# loadb ## Ready for binary (kermit) download to 0x33000000 at 115200 bps... loadb這個指令以kermit協(xié)議從串口下載二進制文件到開發(fā)板的內(nèi)存中,默認下載到0x33000000。當然你可以改在別的地址,例如:loadb 30000000 就是下載到0x30000000。這時候選擇超級終端菜單上:傳送〉發(fā)送文件,文件名選擇編譯好的U-Boot.bin,協(xié)議選擇Kermit,點發(fā)送。可以看到發(fā) 送進度。 發(fā)送結束出現(xiàn)提示: ## Total Size = 0x0001d73c = 120636 Bytes ## Start Addr = 0x33000000 這時可以測試新的修改好不好使: [ u-boot@wpf ]# go 33000000 ## Starting application at 0x33000000 ... go指令可以直接執(zhí)行內(nèi)存地址上的程序, 然后燒寫在NOR Flash中的U-boot。先看看NOR Flash的情況: [ u-boot@wpf ]# flinfo Bank # 1: AMD: 1x Amd29LV800BB (8Mbit) Size: 1 MB in 19 Sectors Sector Start Addresses: 00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO) 00020000 00030000 00040000 00050000 00060000 00070000 00080000 00090000 000A0000 000B0000 000C0000 000D0000 000E0000 000F0000 (RO) 一共有19個sector,其中前5個總計128kb的sector有U-Boot程序。要燒寫首先要去掉寫保護: [ u-boot@wpf ]# protect off 0 1ffff [ u-boot@wpf ]# flinfo Bank # 1: AMD: 1x Amd29LV800BB (8Mbit) Size: 1 MB in 19 Sectors Sector Start Addresses: 00000000 00004000 00006000 00008000 00010000 00020000 00030000 00040000 00050000 00060000 00070000 00080000 00090000 000A0000 000B0000 000C0000 000D0000 000E0000 000F0000 (RO) 可以看到寫保護已經(jīng)去掉,然后擦除: [ u-boot@wpf ]# erase 0 1ffff Erasing sector 0 ... ok. Erasing sector 1 ... ok. Erasing sector 2 ... ok. Erasing sector 3 ... ok. Erasing sector 4 ... ok. Erased 5 sectors 燒寫:(33000000下載地址 0 Nor起始地址 1d73c 文件長度) [ u-boot@wpf ]# cp.b 33000000 0 1d73c Copy to Flash... done 重啟開發(fā)板,U-Boot的燒寫就完成了。當然,一個更好的下載方法是利用tftp命令 http://hi.baidu.com/vcmfc_linux/blog/item/9d07dfef11001c36acafd5d0.html ================================================================================ ================================================================================ from: http://www./viewthread.php?tid=3492 uboot 下載內(nèi)核和文件系統(tǒng)的步驟http://hi.baidu.com/xuhailong330 ... aa9bdc8d1029ab.html 1)下載linux到系統(tǒng)的SDRAM運行(僅做測試之用,斷電或退出后就會消失) 1>運行Uboot,設置環(huán)境變量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目標板 ip 地址] 目標板 ip 地址 Uboot>setenv serverip [主機 ip 地址] 主機 ip 地址 2>下載linux內(nèi)核,文件系統(tǒng) 打開tftpserver應用程序,設置根目錄路徑,將內(nèi)核、文件系統(tǒng)等拷貝到所設置的根目錄下。 Uboot>tftp 21100000 ramdisk.gz 下載文件系統(tǒng) Uboot>tftp 21000000 uImage 下載 linux 內(nèi)核 Uboot>bootm 21000000 啟動 linux 然后linux操作系統(tǒng)就開始運行。 2)燒寫 Linux 到系統(tǒng)的 Flash 運行 1>設置運行Linux的環(huán)境變量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝內(nèi)核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝文件系統(tǒng)到sdram Uboot>setenv boot bootm 設置變量boot Uboot>setenv bootcmd run ramdisk\;run image\;run boot 設置默認變量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目標板 ip 地址 目標板 ip 地址,由你自己決定 Uboot>setenv serverip 主機ip地址 主機ip地址,就是你的PC的ip Uboot>saveenv 保存環(huán)境變量 2>燒寫Linux內(nèi)核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000 Uboot>tftp 21000000 uImage Uboot>cp.b 21000000 10020000 b0000 reset之linux操作系統(tǒng)就開始運行。 一、片內(nèi)啟動 1、用Xmodem協(xié)議,發(fā)送loader.bin和uboot.bin文件,此時uboot.bin被發(fā)送到系統(tǒng)的SDRAM中,發(fā)送完后uboot開始運行,如果這時斷電或退出,則一切將從頭開始,因為SDRAM內(nèi)存儲的數(shù)據(jù)會在斷電或退出后消失。 2、擦除 Flash 在對Flash進行燒寫之前,需要將其擦除: Uboot>protect off all 去掉Flash的扇區(qū)寫保護 Uboot>erase all 擦除Flash的所有扇區(qū) (注: 如果只是要擦除某塊區(qū)域的Flash,比如0x10000000到0x10060000之間的區(qū)域,則可用命令: 1)protect off 10000000 1006ffff 2)erase 10000000 1006ffff 如果是要對某塊區(qū)域加上寫保護,比如0x10000000到0x10060000之間的區(qū)域,則可用命令: 1)protect on 10000000 1006ffff 可用flinfo命令來查看那些區(qū)域是受保護的,那些區(qū)域不是受保護的。 ) 3、燒寫boot.bin到Flash 在Uboot提示符下鍵入命令: Uboot>loadb 21000000 (下完之后會顯示boot.bin的大小,然后在后面用命令cp.b燒寫時將其后4位變成f,假如文件大小為5e33a,則在燒寫時將其變?yōu)?ffff) 將文件發(fā)送到系統(tǒng)的SDRAM中 然后在超級終端使用Kermit協(xié)議,發(fā)送文件boot.bin,發(fā)送完畢后,鍵入以下命令: Uboot>cp.b 21000000 10000000 5ffff 將發(fā)送到SDRAM中的數(shù)據(jù)寫入Flash Uboot>protect on 10000000 10005ffff 對寫入Flash的內(nèi)容進行寫保護 (注: 此處還可以用tftp或bootp協(xié)議來完成,不過要先設置網(wǎng)絡變量,即設置本機和目標機的IP地址,還有目標機的Mac地址。 網(wǎng)絡環(huán)境變量: Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目標板 ip 地址] 目標板 ip 地址 Uboot>setenv serverip [主機 ip 地址] 主機 ip 地址 tftp協(xié)議: 1)tftp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 10005fff bootp協(xié)議: 1)bootp 21000000 lb/boot.bin 2)cp.b 21000000 10000000 5ffff 3)protect on 10000000 10005fff ) 4、燒寫 Uboot.gz 到 Flash 在Uboot提示符下鍵入命令:裝入Uboot.gz Uboot>loadb 20000000 將文件發(fā)送到系統(tǒng)的SDRAM中 然后在超級終端使用Kermit協(xié)議,發(fā)送文件Uboot.gz,發(fā)送完畢后,鍵入以下命令: Uboot>cp.b 20000000 10010000 ffff 將發(fā)送到SDRAM中的數(shù)據(jù)寫入Flash Uboot>protect on 10000000 1001ffff 對寫入Flash的內(nèi)容進行寫保護 (注:此處也可以用tftp或bootp協(xié)議) 二、片外啟動 一)如何在uboot內(nèi)運行自己的程序 1、手動運行(只是將程序下載到SDRAM中運行,僅做測試之用,斷電或退出后就會消失) 1)loadb 20000000 下載用戶程序(*.bin) 2)go 20000000 程序就會運行 2、自動運行(將程序?qū)懭隖lash,uboot啟動之后程序自動運行) 1)設置環(huán)境變量 Uboot>setenv usr_prg cp.b 10300000 20000000 ffff(程序的大小) Uboot>setenv run_prg go 20000000 Uboot>setenv bootcmd run usr_prg\;run run_prg Uboot>saveenv 2)寫入程序,即將其燒入Flash protect off all erase 10300000 103fffff loadb 20000000 下載*.bin cp.b 20000000 10300000 ffff(用戶程序的大小) 3)reset之后程序就會自動運行 二、燒寫linux 1、下載linux到系統(tǒng)的SDRAM運行(僅做測試之用,斷電或退出后就會消失) 1)運行Uboot,設置環(huán)境變量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目標板 ip 地址] 目標板 ip 地址 Uboot>setenv serverip [主機 ip 地址] 主機 ip 地址 2)下載linux內(nèi)核,文件系統(tǒng) 打開tftpserver應用程序,設置根目錄路徑,將內(nèi)核、文件系統(tǒng)等拷貝到所設置的根目錄下。 Uboot>tftp 21100000 ramdisk.gz 下載文件系統(tǒng) Uboot>tftp 21000000 uImage 下載 linux 內(nèi)核 Uboot>bootm 21000000 啟動 linux 然后linux操作系統(tǒng)就開始運行。 2、燒寫 Linux 到系統(tǒng)的 Flash 運行 1)設置運行Linux的環(huán)境變量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統(tǒng)環(huán)境變量 Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝內(nèi)核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝文件系統(tǒng)到sdram Uboot>setenv boot bootm 設置變量boot Uboot>setenv bootcmd run ramdisk\;run image\;run boot 設置默認變量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目標板 ip 地址 目標板 ip 地址,由你自己決定 Uboot>setenv serverip 主機ip地址 主機ip地址,就是你的PC的ip Uboot>saveenv 保存環(huán)境變量 2)燒寫Linux內(nèi)核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000 Uboot>tftp 21000000 uImage Uboot>cp.b 21000000 10020000 b0000 reset之linux操作系統(tǒng)就開始運行。 ================================================================================ ================================================================================ from: http://blog.21ic.com/user1/5165/archives/2008/50377.html u-boot命令解釋 lanxch 發(fā)表于 2008-9-4 13:42:00 0 推薦 U-Boot上電啟動后,敲任意鍵能夠退出自動啟動狀態(tài),進入命令行。 U-Boot 1.1.2 (Apr 26 2005 - 12:27:13) U-Boot code: 11080000 -> 1109614C BSS: -> 1109A91C RAM Configuration: Bank #0: 10000000 32 MB Micron StrataFlash MT28F128J3 device initialized Flash: 32 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 U-Boot> 在命令行提示符下,能夠輸入U-Boot的命令并執(zhí)行。U-Boot能夠支持幾十個常用命令,通過這些命令,能夠?qū)ρ邪l(fā)板進行調(diào)試,能夠引導Linux內(nèi)核,還能夠擦寫Flash完成系統(tǒng)部署等功能。掌控這些命令的使用,才能夠順利地進行嵌入式系統(tǒng)的研發(fā)。 輸入help命令,能夠得到當前U-Boot的任何命令列表。每一條命令后面是簡單的命令說明。 => help - alias for 'help' autoscr - run from memory base - print or set address offset bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation dhcp - invoke DHCP client to obtain IP/boot params echo - echo args to console erase - erase FLASH memory flinfo - print FLASH memory information go - start application at address 'addr' help - print online help iminfo - print header information for application image imls - list all images found in flash itest - return true/false on integer compare loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) printenv - print environment variables protect - enable or disable FLASH write protection rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol version - print monitor version => U-Boot還提供了更加周詳?shù)拿顜椭ㄟ^help命令還能夠查看每個命令的參數(shù)說明。由于研發(fā)過程的需要,有必要先把U-Boot命令的用法弄清楚。接下來,根據(jù)每一條命令的幫助信息,解釋一下這些命令的功能和參數(shù)。 => help bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments 'arg ...'; when booting a Linux kernel, 'arg' can be the address of an initrd image bootm命令能夠引導啟動存儲在內(nèi)存中的程式映像。這些內(nèi)存包括RAM和能夠永久保存的Flash。 第1個參數(shù)addr是程式映像的地址,這個程式映像必須轉換成U-Boot的格式。 第2個參數(shù)對于引導Linux內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲地址;也能夠是傳遞給Linux內(nèi)核的參數(shù)(缺省情況下傳遞bootargs環(huán)境變量給內(nèi)核)。 => help bootp bootp [loadAddress] [bootfilename] bootp命令通過bootp請求,需要DHCP服務器分配IP地址,然后通過TFTP協(xié)議下載指定的文檔到內(nèi)存。 第1個參數(shù)是下載文檔存放的內(nèi)存地址。 第2個參數(shù)是要下載的文檔名稱,這個文檔應該在研發(fā)主機上準備好。 => help cmp cmp [.b, .w, .l] addr1 addr2 count - compare memory cmp命令能夠比較2塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.l以長字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)敲入命令。 第1個參數(shù)addr1是第一塊內(nèi)存的起始地址。 第2個參數(shù)addr2是第二塊內(nèi)存的起始地址。 第3個參數(shù)count是要比較的數(shù)目,單位按照字節(jié)、字或長字。 => help cp cp [.b, .w, .l] source target count - copy memory cp命令能夠在內(nèi)存中復制數(shù)據(jù)塊,包括對Flash的讀寫操作。 第1個參數(shù)source是要復制的數(shù)據(jù)塊起始地址。 第2個參數(shù)target是數(shù)據(jù)塊要復制到的地址。這個地址假如在Flash中,那么會直接調(diào)用寫Flash的函數(shù)操作。所以U-Boot寫Flash就使用這個命令,當然需要先把對應Flash區(qū)域擦干凈。 第3個參數(shù)count是要復制的數(shù)目,根據(jù)cp.b cp.w cp.l分別以字節(jié)、字、長字為單位。 => help crc32 crc32 address count [addr] - compute CRC32 checksum [save at addr] crc32命令能夠計算存儲數(shù)據(jù)的校驗和。 第1個參數(shù)address是需要校驗的數(shù)據(jù)起始地址。 第2個參數(shù)count是要校驗的數(shù)據(jù)字節(jié)數(shù)。 第3個參數(shù)addr用來指定保存結果的地址。 => help echo echo [args..] - echo args to console; \c suppresses newline echo命令回顯參數(shù)。 => help erase erase start end - erase FLASH from addr 'start' to addr 'end' erase N:SF[-SL] - erase sectors SF-SL in FLASH bank # N erase bank N - erase FLASH bank # N erase all - erase all FLASH banks erase命令能夠擦Flash。 參數(shù)必須指定Flash擦除的范圍。 按照起始地址和結束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結束地址。這種方式最常用。舉例說明:擦除0x20000 |
|
|