歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

詳解Linux平台芯片燒寫流程

這裡的燒寫是針對板子裡的nandflash中已經有uboot的情況。目的在於熟悉燒寫流程及原理!

連接好開發板,重新啟動,進入u-boot交互界面,執行如下操作:

一、配置網絡
 
# print
# setenv ipaddr 192.168.64.11  (注:ipaddr 為開發板IP)
# setenv serverip 192.168.64.12 (注:serverip 為Windows主機IP)
# setenv gatewayip 192.168.64.1 (注:gatewayip 為網關)
# saveenv

# ping 192.168.64.12 (如果能通,則繼續往下做)

二、燒寫系統文件(先由tftp下載到ddr,再由ddr燒寫到nandflash)

燒寫流程為從PC機服務器到板子內存,再從板子內存到nandflash

首先,啟動tftp服務,選擇好待下載目標文件的路徑,執行如下動作:

注意:可以先tftp到內存,然後用“bootm 地址”啟動測試,不用去擦寫nandflash

1)燒寫kernel

// 將內核鏡像下載到內存
# tftp 0x40000000 uImage

// 可以用此命令驗證內核是否能正常啟動(可選)
# bootm 0x40000000

// 從地址0x600000開始擦除0x500000字節大小的nandflash空間
# nand erase 0x600000 0x500000

// 將內存裡0x40000000開始0x500000字節的數據燒寫到nandflash
# nand write 0x40000000 0x600000 0x500000

2)燒寫fs

// 將文件系統鏡像下載到內存
# tftp 0x40000000 rootfs.img

// 從nandflash地址0xe00000開始擦除0xf200000大小的空間
# nand erase 0xe00000 0xf200000

// 將內存裡的文件系統鏡像燒寫到nandflash
# nand write.yaffs 0x40000000 0xe00000 0xxxxx(0xxxxx根據執行tftp 0x40000000 rootfs.img下載的大小確定)

3)燒寫u-boot

// 將u-boot.bin文件下載到內存
# tftp 0x40000000 u-boot.bin

// 從nandflash地址0開始擦除0x600000大小的空間
# nand erase 0x0 0x600000

// 將內存裡0x40000000開始0x600000字節的數據燒寫到nandflash
# nand write 0x40000000 0x0 0x600000

三、重啟進入u-boot交互界面,配置uboot的啟動參數

測試1(啟動內核):

// 設置啟動命令:先從nandflash裡讀到內存,再從內存啟動內核
// 將兩條命令同時存到bootcmd裡面,要用分號隔開,反斜槓可以提高解析速度
# setenv bootcmd nand read 0x40000000 0x600000 0x500000\; bootm 0x40000000

// 保存以上設置的環境變量
# saveenv

重啟,觀察效果。

測試2(設置機器碼):

// uboot和內核的機器碼要相同
# setenv machid 0xXXX(根據情況而定)
# saveenv

重啟,觀察效果。

測試3(啟動本地文件系統):

// uboot在啟動內核時需要傳遞參數給內核,最重要的是讓內核掛載根文件系統
// 在磁盤文件系統掛載成功後, 系統會執行磁盤文件系統下的/sbin/init程序
// 調試終端是串口0,波特率為115200bps
// 根文件系統類型是yaffs,可讀寫
# setenv bootargs root=/dev/mtdblock4 init=/sbin/init console=ttySAC0,115200 rootfstype=yaffs rw
# saveenv

重啟,觀察效果。

四、若要實現nfs掛載文件系統則進行如下操作:

1、確保虛擬機virtualbox裡的網卡為有線網卡(因為是通過網線掛載的)

2、設置ip地址
# setenv serverip 192.168.64.13

# setenv ipaddr 192.168.64.11
# setenv gatewayip 192.168.64.1
# saveenv

注:serverip為Windows裡virtualbox裡的Ubuntu的IP

測試4(掛載ubuntu裡的根文件系統):
# setenv bootargs root=/dev/nfs nfsroot=192.168.64.13:/mini_rootfs ip=192.168.64.11:192.168.64.1::255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
# saveenv

重啟,觀察效果。

Copyright © Linux教程網 All Rights Reserved