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