友善之臂mini2440使用:u-boot從nfs啟動(dòng)linux
1 開發(fā)環(huán)境
? ?友善之臂mini2440-W35
?? win7+SecureCRT
?? VirtualBox+Ubuntu
?? Jlink V8
2 VirtualBox設(shè)置
? ?Settings-->Network-->Adapter 1-->Attached to Bridged Adapter
3 Ubuntu
? ?ifconfig 獲得IP地址
? ?安裝nfs,創(chuàng)建共享目錄,這個(gè)目錄就是以后mini2440啟動(dòng)的目錄(設(shè)為NFS_ROOT)了
? ?將光盤中的arm-linux-gcc-4.4.3.tar.gz復(fù)制到Ubuntu響應(yīng)目錄,解壓,設(shè)置環(huán)境變量。arm-none-linux-gnueabi-gxx就是我們以后要用的編譯器;lib中的庫文件是以后也是要用的。
? ?安裝mkimage工具,好像sudo apt-get insall mkimage-tools就行,這個(gè)可以從zImage制作uImage。
4 使用Jlink燒寫u-boot到Nor-flash
? ? 將板子上的開關(guān)撥刀Nor-flash一端。在win7下啟動(dòng)Jlink ARM程序,打開本博客附件中的jfalsh工程文件,再打開data file,選擇附件中的u-boot.bin,然后Erase Chip,Program(從地址0x0開始),這樣u-boot就燒好了。
??? 板子插好電源,網(wǎng)線,串口線。
??? 在win7系統(tǒng)中打開SecureCRT,選中相應(yīng)的COM口,禁用硬件流。重啟板子,會(huì)聽到“嘀——”的長音,SecureCRT界面出現(xiàn)autoboot:1的時(shí)候,按電腦鍵盤任意鍵,就可以進(jìn)入u-boot的設(shè)置命令行,試一試:“printenv”。
5 設(shè)置u-boot參數(shù)
bootdelay=1 baudrate=115200 ethaddr=08:08:11:18:12:27 tekkaman=bmp?d?70000 ?stdin=serial stdout=serial stderr=serial ethact=dm9000 filesize=21BA fileaddr=30008000 gatewayip=192.168.0.1 netmask=255.255.255.0 serverip=192.168.0.36 ipaddr=192.168.0.37 bootcmd=nfs?0x30008000?192.168.0.36:$NFS_ROOT/uImage_W35;bootm?0x30008000 bootargs=noinitrd?root=/dev/nfs?init=/linuxrc?console=ttySAC0,115200?nfsroot=192.168.0.36:$NFS_ROOT?ip=192.168.0.37:192.168.0.36:192.168.0.1:255.255.255.0?mem=64M?rootdelay=4
??? 這里,bootcmd加載了內(nèi)核,bootargs是啟動(dòng)內(nèi)核,加載文件系統(tǒng)的參數(shù),ipaddr是板子臨時(shí)的IP,跟服務(wù)器192.168.0.36設(shè)在一個(gè)網(wǎng)段就可以了。
??? 設(shè)置使用setenv命令,如:
setenv?bootargs?'noinitrd?root=/dev/nfs?init=/linuxrc?console=ttySAC0,115200?nfsroot=192.168.0.36:$NFS_ROOT?ip=192.168.0.37:192.168.0.36:192.168.0.1:255.255.255.0?mem=64M?rootdelay=4'
??? $NFS_ROOT請自行替換為你的nfs根目錄。
6 制作uImage
???? 將附件中的zImage_W35拷貝到$NFS_ROOT目錄,使用之前安裝的mkimage工具將zImage轉(zhuǎn)換成uImage:
mkimage?-A?arm?-O?linux?-T?kernel?-C?none?-a?30008000?-e?30008040?-n?linux.test?-d?zImage_W35?uImage_W35
7 使用busybox創(chuàng)建根文件系統(tǒng)
???? 可以參考Tekkaman?Ninja的博文:http://blog.chinaunix.net/uid-20543672-id-94316.html。文章里的內(nèi)容只要基本理解就行,主要是創(chuàng)建/etc/init.d/rcS
及其依賴項(xiàng)。
? ?? 我當(dāng)時(shí)是搜的這個(gè)博客:http://blog.csdn.net/openblog/article/details/7415994。然后根據(jù)運(yùn)行出錯(cuò)的信息,google就可以了。
8 注:
??? 上面創(chuàng)建的文件系統(tǒng)應(yīng)該是在$NFS_ROOT下面的,你cd /看看Ubuntu的根目錄就會(huì)明白。
??? 在win7系統(tǒng)中打開SecureCRT,是VirtualBox中Ubuntu保持運(yùn)行狀態(tài)。然后重啟板子,就可以完成mini2440使用u-boot從nfs啟動(dòng)linux的工作了。按任意鍵,你就可以使用busybox的sh在板子上來做簡單的操作了。
??? 附件:http://download.csdn.net/detail/binzo/6873219