向Flash中燒寫uboot和linux作業系統
2011年03月28日
向Flash中燒寫uboot和linux作業系統
================================================================================
from:http://www.diybl.com/course/6_system/linux/Linuxjs/20090428/165769.html
一、片内啟動
1、用Xmodem協定,發送loader.bin和uboot.bin檔案,此時uboot.bin被發送到系統的
SDRAM中,發送完後uboot開始運作,如果這時斷電或退出,則一切将從頭開始,因為SDRAM記憶體儲的資料會在斷電或退出後消失
2、擦除 Flash
在對Flash進行燒寫之前,需要将其擦除:
Uboot>protect off all 去掉Flash的扇區寫保護
Uboot>erase all 擦除Flash的所有扇區
(注:
如果隻是要擦除某塊區域的Flash,比如0x10000000到0x10060000之間的區域,則可用指令:
1)protect off 10000000
2)erase 10000000 1006ffff
如果是要對某塊區域加上寫保護,比如0x10000000到0x10060000之間的區域,則可用指令:
1)protect on 10000000 1006ffff
可用flinfo指令來檢視那些區域是受保護的,那些區域不是受保護的。
3、燒寫boot.bin到Flash
在Uboot提示符下鍵入指令:
Uboot>loadb 21000000
(下完之後會顯示boot.bin的大小,然後在後面用指令cp.b燒寫時将其後4位變成f,假如檔案大小為5e33a,則在燒寫時将其變為5ffff) 将檔案發送到系統的SDRAM中然後在超級終端使用Kermit協定,發送檔案boot.bin,發送完畢後,鍵入以下指令:
Uboot>cp.b 21000000 10000000 5ffff 将發送到SDRAM中的資料寫入Flash
Uboot>protect on 10000000 10005ffff 對寫入Flash的内容進行寫保護
注:
此處還可以用tftp或bootp協定來完成,不過要先設定網絡變量,即設定本機和目标機的IP位址,還有目标機的Mac位址。
網絡環境變量:
Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000
ramdisk_size=15360
console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv ethaddr 12:34:56:78:99:aa mac 位址
Uboot>setenv ipaddr [目标闆 ip 位址] 目标闆 ip 位址
Uboot>setenv serverip [主機 ip 位址] 主機 ip 位址
tftp協定:
1)tftp 21000000 lb/boot.bin
2)cp.b 21000000 10000000 5ffff
3)protect on 10000000
bootp協定:
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 将檔案發送到系統的SDRAM中.
然後在超級終端使用Kermit協定,發送檔案Uboot.gz,發送完畢後,鍵入以下指令:
Uboot>cp.b 20000000 10010000 ffff 将發送到SDRAM中的資料寫入Flash
Uboot>protect on 10000000 1001ffff 對寫入Flash的内容進行寫保護
(注:此處也可以用tftp或bootp協定)
二、片外啟動
如何在uboot内運作自己的程式
1、手動運作(隻是将程式下載下傳到SDRAM中運作,僅做測試之用,斷電或退出後就會消失)
1)loadb 20000000 下載下傳使用者程式(*.bin)
2)go 20000000 程式就會運作
2、自動運作(将程式寫入Flash,uboot啟動之後程式自動運作
1)設定環境變量
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到系統的SDRAM運作(僅做測試之用,斷電或退出後就會消失)程
1)運作Uboot,設定環境變量
Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000
ramdisk_size=15360
console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv ethaddr 12:34:56:78:99:aa mac 位址
Uboot>setenv ipaddr [目标闆 ip 位址] 目标闆 ip 位址
Uboot>setenv serverip [主機 ip 位址] 主機 ip 位址
2)下載下傳linux核心,檔案系統
打開tftpserver應用程式,設定根目錄路徑,将核心、檔案系統等拷貝到所設定的根目錄下。
Uboot>tftp 21100000 ramdisk.gz 下載下傳檔案系統
Uboot>tftp 21000000 uImage 下載下傳 linux 核心
Uboot>bootm 21000000 啟動 linux
然後linux作業系統就開始運作。
2、燒寫 Linux 到系統的 Flash 運作
1)設定運作Linux的環境變量
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000
ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝核心到sdram
Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝檔案系統到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 儲存環境變量
2)燒寫Linux核心到Flash
Uboot>tftp 21100000 ramdisk.gz
Uboot>cp.b 21100000 100d0000 226000
Uboot>tftp 21000000 uImage
Uboot>cp.b 21000000 10020000 b0000
reset之linux作業系統就開始運作。
================================================================================
================================================================================
from: http://www.91linux.com/html/article/qianrushiyingyong/20081227/15061.html
u-boot指令介紹及燒寫程式執行個體
bootdelay
定義執行自動啟動的等候秒數
baudrate
定義序列槽控制台的波特率
netmask
定義以太網接口的掩碼
ethaddr
定義以太網接口的MAC位址
bootfile
定義預設的下載下傳檔案
bootargs
定義傳遞給Linux核心的指令行參數
bootcmd
定義自動啟動時執行的幾條指令
serverip
定義tftp伺服器端的IP位址
ipaddr
定義本地的IP位址
stdin
定義标準輸入裝置,一般是序列槽
stdout
定義标準輸出裝置,一般是序列槽
stderr
定義标準出錯資訊輸出裝置,一般是序列槽
u-boot指令介紹及燒寫程式執行個體zz
Printenv 列印環境變量。
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位元組,應不要超過。
Loadb 通過序列槽Kermit協定下載下傳二進制資料。
Tftp 通過網絡下載下傳程式,需要先設定好網絡配置
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=環境變量中設定的serverip)中/tftpdroot/ 下的vmlinux通過TFTP讀入到實體記憶體32000000處。
Md 顯示記憶體區的内容。
Mm 修改記憶體,位址自動遞增。
Nm 修改記憶體,位址不自動遞增。
Mw 用模型填充記憶體
mw 32000000 ff 10000(把記憶體0x32000000開始的0x10000位元組設為0xFF)
Cp 拷貝一塊記憶體到另一塊
Cmp 比較兩塊記憶體區
這些記憶體操作指令後都可加一個字尾表示操作資料的大小,比如cp.b表示按位元組拷貝。
Protect 寫保護操作
protect on 1:0-3(就是對第一塊FLASH的0-3扇區進行保護)
protect off 1:0-3取消寫保護
Erase 擦除扇區。
erase: 删除FLASH的扇區
erase 1:0-2(就是對每一塊FLASH的0-2扇區進行删除)
對DataFlash的操作
U-Boot在引導時如果發現NPCS0和NPCS3上連有DataFlash,就會配置設定虛拟的位址給它,具體為 :
0xC0000000---NPCS0
0xD0000000---NPCS3
run 執行設定好的腳本
Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\;
cp.b 20000000 10020000 8000
Uboot> saveenv
Uboot> run flashit
bootcmd 保留的環境變量,也是一種腳本
如果定義了該變量,在autoboot模式下,将會執行該腳本的内容。
Go 執行記憶體中的二進制代碼,一個簡單的跳轉到指定位址
Bootm 執行記憶體中的二進制代碼
要求二進制代碼為制定格式的。通常為mkimage處理過的二進制檔案。
起動UBOOT TOOLS制作的壓縮LINUX核心, bootm 3200000
Bootp 通過網絡啟動,需要提前設定好硬體位址。
? 得到所有指令清單
help help usb, 列出USB功能的使用說明
ping 注:隻能開發闆PING别的機器
usb
usb start: 起動usb 功能
usb info: 列出裝置
usb scan: 掃描usb storage(u 盤)裝置
kgo 起動沒有壓縮的linux核心
kgo 32000000
fatls 列出DOS FAT檔案系統
fatls usb 0列出第一塊U盤中的檔案
fatload 讀入FAT中的一個檔案
fatload usb 0:
0 32000000
u-boot.bin 把USB中的u-boot.bin 讀到實體記憶體0x32000000處!
flinfo 列出flash的資訊
nfs
nfs 32000000 192.168.0.115:u-boot.bin
把192.168.0.115(LINUX 的NFS檔案系統)中的NFS檔案系統中的u-boot.bin讀入記憶體0x32000000處。
例:通過序列槽更新u-boot程式
[
[email protected]
]# loadb
## Ready for binary (kermit) download to 0x33000000 at 115200 bps...
loadb這個指令以kermit協定從序列槽下載下傳二進制檔案到開發闆的記憶體中,預設下載下傳到0x33000000。當然你可以改在别的位址,例如:loadb 30000000
就是下載下傳到0x30000000。這時候選擇超級終端菜單上:傳送〉發送檔案,檔案名選擇編譯好的U-Boot.bin,協定選擇Kermit,點發送。可以看到發
送進度。
發送結束出現提示:
## Total Size = 0x0001d73c = 120636 Bytes
## Start Addr = 0x33000000
這時可以測試新的修改好不好使:
[
[email protected]
]# go 33000000
## Starting application at 0x33000000 ...
go指令可以直接執行記憶體位址上的程式,
然後燒寫在NOR Flash中的U-boot。先看看NOR Flash的情況:
[
[email protected]
]# 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程式。要燒寫首先要去掉寫保護:
[
[email protected]
]# protect off 0 1ffff
[
[email protected]
]# 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)
可以看到寫保護已經去掉,然後擦除:
[
[email protected]
]# 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 檔案長度)
[
[email protected]
]# cp.b 33000000 0 1d73c
Copy to Flash... done
重新開機開發闆,U-Boot的燒寫就完成了。當然,一個更好的下載下傳方法是利用tftp指令
http://hi.baidu.com/vcmfc_linux/blog/item/9d07dfef11001c36acafd5d0.html
================================================================================
================================================================================
from: http://www.ubuntuchina.com/viewthread.php?tid=3492
uboot 下載下傳核心和檔案系統的步驟http://hi.baidu.com/xuhailong330 ... aa9bdc8d1029ab.html
1)下載下傳linux到系統的SDRAM運作(僅做測試之用,斷電或退出後就會消失)
1>運作Uboot,設定環境變量
Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360
console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv ethaddr 12:34:56:78:99:aa mac 位址
Uboot>setenv ipaddr [目标闆 ip 位址] 目标闆 ip 位址
Uboot>setenv serverip [主機 ip 位址] 主機 ip 位址
2>下載下傳linux核心,檔案系統
打開tftpserver應用程式,設定根目錄路徑,将核心、檔案系統等拷貝到所設定的根目錄下。
Uboot>tftp 21100000 ramdisk.gz 下載下傳檔案系統
Uboot>tftp 21000000 uImage 下載下傳 linux 核心
Uboot>bootm 21000000 啟動 linux
然後linux作業系統就開始運作。
2)燒寫 Linux 到系統的 Flash 運作
1>設定運作Linux的環境變量
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝核心到sdram
Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝檔案系統到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 儲存環境變量
2>燒寫Linux核心到Flash
Uboot>tftp 21100000 ramdisk.gz
Uboot>cp.b 21100000 100d0000 226000
Uboot>tftp 21000000 uImage
Uboot>cp.b 21000000 10020000 b0000
reset之linux作業系統就開始運作。
一、片内啟動
1、用Xmodem協定,發送loader.bin和uboot.bin檔案,此時uboot.bin被發送到系統的SDRAM中,發送完後uboot開始運作,如果這時斷電或退出,則一切将從頭開始,因為SDRAM記憶體儲的資料會在斷電或退出後消失。
2、擦除 Flash
在對Flash進行燒寫之前,需要将其擦除:
Uboot>protect off all 去掉Flash的扇區寫保護
Uboot>erase all 擦除Flash的所有扇區
(注:
如果隻是要擦除某塊區域的Flash,比如0x10000000到0x10060000之間的區域,則可用指令:
1)protect off 10000000 1006ffff
2)erase 10000000 1006ffff
如果是要對某塊區域加上寫保護,比如0x10000000到0x10060000之間的區域,則可用指令:
1)protect on 10000000 1006ffff
可用flinfo指令來檢視那些區域是受保護的,那些區域不是受保護的。
)
3、燒寫boot.bin到Flash
在Uboot提示符下鍵入指令:
Uboot>loadb 21000000 (下完之後會顯示boot.bin的大小,然後在後面用指令cp.b燒寫時将其後4位變成f,假如檔案大小為5e33a,則在燒寫時将其變為5ffff) 将檔案發送到系統的SDRAM中
然後在超級終端使用Kermit協定,發送檔案boot.bin,發送完畢後,鍵入以下指令:
Uboot>cp.b 21000000 10000000 5ffff 将發送到SDRAM中的資料寫入Flash
Uboot>protect on 10000000 10005ffff 對寫入Flash的内容進行寫保護
(注:
此處還可以用tftp或bootp協定來完成,不過要先設定網絡變量,即設定本機和目标機的IP位址,還有目标機的Mac位址。
網絡環境變量:
Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360
console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv ethaddr 12:34:56:78:99:aa mac 位址
Uboot>setenv ipaddr [目标闆 ip 位址] 目标闆 ip 位址
Uboot>setenv serverip [主機 ip 位址] 主機 ip 位址
tftp協定:
1)tftp 21000000 lb/boot.bin
2)cp.b 21000000 10000000 5ffff
3)protect on 10000000 10005fff
bootp協定:
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 将檔案發送到系統的SDRAM中
然後在超級終端使用Kermit協定,發送檔案Uboot.gz,發送完畢後,鍵入以下指令:
Uboot>cp.b 20000000 10010000 ffff 将發送到SDRAM中的資料寫入Flash
Uboot>protect on 10000000 1001ffff 對寫入Flash的内容進行寫保護
(注:此處也可以用tftp或bootp協定)
二、片外啟動
一)如何在uboot内運作自己的程式
1、手動運作(隻是将程式下載下傳到SDRAM中運作,僅做測試之用,斷電或退出後就會消失)
1)loadb 20000000 下載下傳使用者程式(*.bin)
2)go 20000000 程式就會運作
2、自動運作(将程式寫入Flash,uboot啟動之後程式自動運作)
1)設定環境變量
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到系統的SDRAM運作(僅做測試之用,斷電或退出後就會消失)
1)運作Uboot,設定環境變量
Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360
console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv ethaddr 12:34:56:78:99:aa mac 位址
Uboot>setenv ipaddr [目标闆 ip 位址] 目标闆 ip 位址
Uboot>setenv serverip [主機 ip 位址] 主機 ip 位址
2)下載下傳linux核心,檔案系統
打開tftpserver應用程式,設定根目錄路徑,将核心、檔案系統等拷貝到所設定的根目錄下。
Uboot>tftp 21100000 ramdisk.gz 下載下傳檔案系統
Uboot>tftp 21000000 uImage 下載下傳 linux 核心
Uboot>bootm 21000000 啟動 linux
然後linux作業系統就開始運作。
2、燒寫 Linux 到系統的 Flash 運作
1)設定運作Linux的環境變量
Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 啟動系統環境變量
Uboot>setenv image cp.b 10020000 21000000 b0000 拷貝核心到sdram
Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷貝檔案系統到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 儲存環境變量
2)燒寫Linux核心到Flash
Uboot>tftp 21100000 ramdisk.gz
Uboot>cp.b 21100000 100d0000 226000
Uboot>tftp 21000000 uImage
Uboot>cp.b 21000000 10020000 b0000
reset之linux作業系統就開始運作。
================================================================================
================================================================================
from: http://blog.21ic.com/user1/5165/archives/2008/50377.html
u-boot指令解釋
lanxch 發表于 2008-9-4 13:42:00
0
推薦
U-Boot上電啟動後,敲任意鍵能夠退出自動啟動狀态,進入指令行。
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的指令并執行。U-Boot能夠支援幾十個常用指令,通過這些指令,能夠對研發闆進行調試,能夠引導Linux核心,還能夠擦寫Flash完成系統部署等功能。掌控這些指令的使用,才能夠順利地進行嵌入式系統的研發。
輸入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還提供了更加周詳的指令幫助,通過help指令還能夠檢視每個指令的參數說明。由于研發過程的需要,有必要先把U-Boot指令的用法弄清楚。接下來,根據每一條指令的幫助資訊,解釋一下這些指令的功能和參數。
=> 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指令能夠引導啟動存儲在記憶體中的程式映像。這些記憶體包括RAM和能夠永久儲存的Flash。
第1個參數addr是程式映像的位址,這個程式映像必須轉換成U-Boot的格式。
第2個參數對于引導Linux核心有用,通常作為U-Boot格式的RAMDISK映像存儲位址;也能夠是傳遞給Linux核心的參數(預設情況下傳遞bootargs環境變量給核心)。
=> help bootp
bootp [loadAddress] [bootfilename]
bootp指令通過bootp請求,需要DHCP伺服器配置設定IP位址,然後通過TFTP協定下載下傳指定的文檔到記憶體。
第1個參數是下載下傳文檔存放的記憶體位址。
第2個參數是要下載下傳的文檔名稱,這個文檔應該在研發主機上準備好。
=> help cmp
cmp [.b, .w, .l] addr1 addr2 count
- compare memory
cmp指令能夠比較2塊記憶體中的内容。.b以位元組為機關;.w以字為機關;.l以長字為機關。注意:cmp.b中間不能保留白格,需要連續敲入指令。
第1個參數addr1是第一塊記憶體的起始位址。
第2個參數addr2是第二塊記憶體的起始位址。
第3個參數count是要比較的數目,機關按照位元組、字或長字。
=> help cp
cp [.b, .w, .l] source target count
- copy memory
cp指令能夠在記憶體中複制資料塊,包括對Flash的讀寫操作。
第1個參數source是要複制的資料塊起始位址。
第2個參數target是資料塊要複制到的位址。這個位址假如在Flash中,那麼會直接調用寫Flash的函數操作。是以U-Boot寫Flash就使用這個指令,當然需要先把對應Flash區域擦幹淨。
第3個參數count是要複制的數目,根據cp.b cp.w cp.l分别以位元組、字、長字為機關。
=> help crc32
crc32 address count [addr]
- compute CRC32 checksum [save at addr]
crc32指令能夠計算存儲資料的校驗和。
第1個參數address是需要校驗的資料起始位址。
第2個參數count是要校驗的資料位元組數。
第3個參數addr用來指定儲存結果的位址。
=> help echo
echo [args..]
- echo args to console; \c suppresses newline
echo指令回顯參數。
=> 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。
參數必須指定Flash擦除的範圍。
按照起始位址和結束位址,start必須是擦除塊的起始位址;end必須是擦除末尾塊的結束位址。這種方式最常用。舉例說明:擦除0x20000