嵌入式linux新手入門手記-第一次啟動am335x
由于nand中沒有MLO和u-boot.img,所以我們需要設(shè)置am335x處于SD卡啟動模式,從SD卡啟動。
從SD卡啟動,對SD卡的設(shè)置比較簡單,將SD卡設(shè)置為FAT16分區(qū),并格式化,然后將MLO,u-boot.img拷貝到SD卡上。由于我們不需要進(jìn)入到kernel,所以不拷貝uImage,也不制作ubi分區(qū)。
設(shè)置am335x的LCD_data4:0為b10111,從SD卡啟動(MMC0),插入制作好的SD卡到卡槽中。將am335x電路板通電,等u-boot.img啟動時按下鍵盤任意鍵,超級終端顯示“U-Boot:”提示符,即進(jìn)入到命令行操作模式。輸入以下內(nèi)容,設(shè)置網(wǎng)絡(luò)參數(shù):
setenv ipaddr 192.168.1.51 //設(shè)置am335x板的ip地址
setenv serverip 192.168.1.50 //設(shè)置tftp和nfs的ip地址
確保計算機(jī)的tftp服務(wù)已經(jīng)正確啟動,/home/XXXX/tftp目錄下有MLO,u-boot.img和uImage。執(zhí)行以下的命令:
mw.b 0x82000000 0xff 0x20000 //將DDR的0x82000000,長度0x20000空間填充為0xff
tftp 0x82000000 MLO //從tftp服務(wù)器下載MLO到DDR的0x82000000開始的空間
nandecc hw 2 //設(shè)置DDR的工作模式
nand erase 0x0 0x20000 //擦除nand地址0x0開始,長度0x20000空間
nand write.i 0x82000000 0x0 0x20000 //將DDR地址0x82000000空間的數(shù)據(jù)寫入到nand的0x0開始的空間,寫入長度0x20000
上述命令將MLO寫入到nand的地址0x0開始的空間。
mw.b 0x82000000 0xff 0x40000
tftp 0x82000000 u-boot.img
nand erase 0x80000 0x40000
nand write.i 0x82000000 0x80000 0x40000
上述命令將u-boot.img寫入到nand的地址0x80000開始空間。
我們將使用nfs來加載uImage,以及根文件系統(tǒng),所以下面的命令可以先不執(zhí)行。
mw.b 0x82000000 0xff 0x500000
tftp 0x82000000 uImage
nand erase 0x280000 0x500000
nand write 0x82000000 0x280000 0x500000
上述命令將uImage寫入到nand的0x280000的空間。
mw.b 0x82000000 0xff 0x2000000
tftp 0x82000000 ubi.img
nand erase 0x780000 0xf880000
nand write 0x82000000 0x780000 0x2000000
上述命令將根文件系統(tǒng)寫入到nand的0x780000空間,長度為0x2000000。這里要注意長度應(yīng)該比ubi.img實際字節(jié)大一些。
ubi.img文件的制作方法在后續(xù)的手記中記錄。
上述完成后,執(zhí)行nand erase 0x260000 0x20000,清除u-boot的啟動參數(shù),然后設(shè)置bootargs和bootcmd。
setenv ipaddr 192.168.1.51
setenv serverip 192.168.1.50
setenv bootargs console=ttyO0,115200n8 noinitrd root=/dev/nfs rw nfsroot=192.168.1.50:/home/XXXX/nfs ip=192.168.1.51:192.168.1.50::255.255.255.0::eth0::off mem=256M init=/linuxrc
set bootcmd "nfs 0x82000000 192.168.1.50:/home/XXXX/nfs/boot/uImage;bootm 0x82000000"
saveenv //保存環(huán)境變量
上述將設(shè)置am335x板的ip地址,tftp和nfs服務(wù)器的ip地址,以及從nfs服務(wù)器加載uImage和ubi跟文件系統(tǒng)。
最后保存好上述環(huán)境變量后,將am335x電路板斷電,然后將LCD_data(4:0)設(shè)置為b10011,從nand啟動。
重新啟動電路板,當(dāng)u-boot啟動后,將會自動從192.168.1.50的nfs/boot目錄下下載uImage并啟動。kernel啟動后,將自動將192.168.1.50的nfs目錄作為根文件系統(tǒng)加載到am335x的“/”下。