一、片內啓動
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 p_w_picpath 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 p_w_picpath\;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操作系統就開始運行。
向Flash中燒寫uboot和linux操作系統
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux核心技能与应用
wy53780
2020-04-23 14:02:05
Python與家國天下
豌豆花下貓
2019-02-24 22:22:40
linux上安裝Docker(非常簡單的安裝方法)
幸運券發放
2019-02-24 19:38:01
2019年Java面試-併發容器篇
王知無
2019-02-24 15:12:46
淺淡個人學習嵌入式Linux過程
wx5c317e5b736d2
2019-02-24 13:31:30
DHCP服務原理與搭建(Linux系統+路由器,二選一方案)
wx5c7174443c6f9
2019-02-24 13:23:18
Redis安裝與配置
劉遄
2019-02-24 13:12:51
Linux查看CPU和內存使用情況
wbzjacky
2019-02-24 13:12:37
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37