一、片內啓動
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操作系統就開始運行。 |