嵌入式uClinux應(yīng)用程序的NFS開發(fā)
3 基于NFS的應(yīng)用程序開發(fā)
3.1在主機(jī)上編譯程序,并生成在目標(biāo)機(jī)上運(yùn)行的程序
在主機(jī)/home/pub下編輯hi.c,其內(nèi)容:
#include
main(){printf(“hi! Good!n”);}
交叉編譯hi.c,#arm-elf-gcc –Wall –Wl,-elf2flt –o hi hi.c生成flt格式的可執(zhí)行文件hi。修改hi的權(quán)限#chmod 711 hi。該文件可以直接下載到目標(biāo)機(jī)上運(yùn)行,這里利用NFS看其執(zhí)行情況。
3.2目標(biāo)機(jī)利用NFS掛載主機(jī)并進(jìn)行調(diào)試
用串口線將主機(jī)的COM1和目標(biāo)機(jī)的COM0連接起來,同時(shí)接上網(wǎng)線。在主機(jī)上打開minicom(設(shè)置參數(shù):57600 8N1,無流控)用于同目標(biāo)機(jī)通訊。目標(biāo)機(jī)上電或者復(fù)位,開始啟動(dòng)uClinux,顯示信息成功后進(jìn)入sh。
在目標(biāo)機(jī)上建立/var/nfs用于掛載主機(jī)上的目錄(這里采用的是romfs只讀文件系統(tǒng),/var使用的是RAM disk驅(qū)動(dòng)的ext2文件系統(tǒng)。所以僅/var可以用于讀寫,其它目錄只可以讀)# mkdir /var/nfs
啟動(dòng)目標(biāo)機(jī)上portmap服務(wù) # portmap
掛載主機(jī)上的共享目錄#mount -t nfs 192.168.111.1:/home/pub /var/nfs
#ls /var/nfs可以看到主機(jī)上/home/pub的文件。此時(shí),可以運(yùn)行該目錄下的可執(zhí)行程序hi,#./hi(注意要加“./”)出現(xiàn)hi! Good!。程序正常運(yùn)行,將其編譯到內(nèi)核里。將hi拷貝到uClinux源碼包的/romfs/bin下編譯,生成的image.rom可以下載到 flash。在板子上的/bin下就有hi程序了,并且可以直接執(zhí)行hi。
卸載使用umount # umount /var/nfs。如果讓目標(biāo)機(jī)啟動(dòng)時(shí)自動(dòng)運(yùn)行portmap服務(wù),可以修改rc文件(uClinux源碼中),在最后加入/bin/portmap,mkdir /var/nfs。
4 小結(jié)
使用NFS開發(fā)模式,關(guān)鍵在于對主機(jī)和目標(biāo)機(jī)的配置。如果配置不當(dāng),就會(huì)mount失敗。以下是值得注意的地方:
mount成功,可是運(yùn)行程序. /hi時(shí)報(bào)告錯(cuò)誤:Permission denied.即主機(jī)拒絕操作。需要修改主機(jī)上程序的權(quán)限chmod 777 /home/pub/hi。然后在目標(biāo)機(jī)端運(yùn)行./hi即可。
主機(jī)上設(shè)置時(shí)候一定要關(guān)閉防火墻,不然目標(biāo)機(jī)mount的時(shí)候沒有響應(yīng)。
目標(biāo)機(jī)上一定要先開啟portmap服務(wù)。
主機(jī)和板子的IP在同一個(gè)網(wǎng)段。
如果要運(yùn)行大的應(yīng)用程序,在Mount的時(shí)候最好加上:
-o rsize=1024,wsize=1024,timeo=15的參數(shù),否則多半會(huì)得到server not responsing的提示信息。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論