向Flash中燒寫uboot和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) <注:必須是.bin文件,可用arm-linux-objcopy命令生成> 
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操作系統就開始運行。
發佈了31 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章