《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 嵌入式uClinux應用程序的NFS開發
嵌入式uClinux應用程序的NFS開發
摘要: 在目標機上可以運行uClinux了,接著就需要開發完成特定任務的應用程序了。由于嵌入式uClinux的特殊開發環境(主機——目標機),其應用程序的開發模式也有多種。 一種是在主機上編寫程序,然后編譯、連接、調試,成功后將程序和內核一同編譯并下載到目標板。這種模式中不利于開發的問題有:主機和目標機的運行環境(如指令集,函數庫等)不同。另一種是通過網線或串口線將目標機和主機連起來,直接在目標機上開發調試。這種模式使用NFS將主機的特定目錄mount到目標機上,對主機的操作就是對目標機的操作。采用 NFS模式可以方便應用程序的開發,減少映像文件的下載次數和對flash的燒寫次數。這對于縮短開發周期,提高開發效率,加快產品的上市時間相當重要。
關鍵詞: 軟件 uClinux NFS 嵌入式
Abstract:
Key words :

     在目標機上可以運行uClinux了,接著就需要開發完成特定任務的應用程序了。由于嵌入式uClinux的特殊開發環境(主機——目標機),其應用程序的開發模式也有多種。

  一種是在主機上編寫程序,然后編譯、連接、調試,成功后將程序和內核一同編譯并下載到目標板。這種模式中不利于開發的問題有:主機和目標機的運行環境(如指令集,函數庫等)不同。另一種是通過網線或串口線將目標機和主機連起來,直接在目標機上開發調試。這種模式使用NFS將主機的特定目錄mount到目標機上,對主機的操作就是對目標機的操作。采用 NFS模式可以方便應用程序的開發,減少映像文件的下載次數和對flash的燒寫次數。這對于縮短開發周期,提高開發效率,加快產品的上市時間相當重要。

  1 NFS的簡要介紹

  NFS是Network File System(網絡文件系統)的縮寫,最初是由Sun公司開發出來的分布式文件系統。提供NFS服務的一方是NFS Server(遠程主機),使用NFS服務的一方是NFS Client(客戶機)。利用它,客戶機可以將遠程主機提供的共享目錄掛載到自己的目錄上,在本地的操作如同對遠程主機的操作。

  NFS有自己的協議與端口號(2049),它本身并沒有提供傳輸資料的協議,但是NFS卻能通過網絡進行資料的共享。這是因為在資料傳送或者其它相關數據交互的時候,NFS用遠程過程調用(Remote Procedure Call, RPC)的傳輸協議。RPC服務portmap負責管理服務與相關端口映射的工作。因此,使用NFS服務必須先激活RPC服務portmap,在主機和目標機上都要實現RPC服務,才可以使用NFS。

  使用NFS Server還需要激活至少兩個系統守護進程:rpc.nfsd用于管理Client使用主機共享目錄的權限,包含對Client的IP的判別; rpc.mountd用于管理NFS的文件系統。當Client通過rpc.nfsd后,在使用NFS Server提供的文件前,還必須取得使用權限的認證。rpc.nfsd及rpc.mountd的系統服務是由nfs-utils提供的。

  2配置主機和目標機的NFS服務

  嵌入式系統的開發是基于主機/目標機,在主機上要安裝目標機的交叉編譯工具。需要在主機上編譯出可以在目標機上運行的可執行文件。該可執行文件通常需要下在到目標機上才可以運行,而利用NFS可以不用下載即可運行。下面以主機RedHat9.0+PC,IP為192.168.111.8;目標機 uCLinux(內核為linux.2.4.x)+S3C44B0,IP為192.168.111.1的環境講解使用NFS需要的配置。

  2.1主機上的配置

  NFS服務需要內核(Kernel)支持,因此,內核版本最好高于2.2.x。如果重新編譯內核,一定要選擇支持NFS。主機上的配置均以root用戶進行。

  2.1.1確認是否安裝了NFS服務

  NFS服務一般在RedHat9.0安裝時就默認安裝的。檢查是否安裝了nfs的方法是:

  (1)查看/etc/rc.d/init.d目錄下是否有nfs和nfslock文件,如果有說明主機已經安裝了nfs服務。(#ls /etc/rc.d/init.d/)

  (2)#rpm -qa| grep -i nfs,出現redhat-config-nfs-1.0.4-5,

  nfs-utils-1.0.1-2.9這表示安裝了NFS。如果沒有安裝,安裝過程如下:

  #mount /dev/cdrom /mnt/cdrom(掛載光盤)

  #cd /mnt/cdrom/RedHat/RPMS

  #rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm rpm2.1.2檢查RPC程序是否已經啟動

 

  #rpcinfo –p,檢查系統RPC運行狀況,若出現

  100000 2 tcp 111 portmapper

  100000 2 udp 111 portmapper 表示已經啟動RPC程序。

  2.1.3啟動主機上的NFS服務,并關閉防火墻

  NFS服務一般不會在開機時自動啟用。啟動該服務:

  (1)#ntsysv,選中nfs,nfslock和portmap;或者#setup,選擇System services里的nfs,nfslock和portmap。

  (2)啟用portmap服務,# /etc/rc.d/init.d/portmap start。也可以#service nfs start 和#service portmap start啟動服務。激活portmap后,就會出現一個端口號為111的rpc服務。至于nfs則會激活至少兩個以上的系統守護進程,然后就開始監聽 Client的請求,用#cat /var/log/messages可以看到以上操作是否成功。

  由于防火墻會關閉NFS服務(2049端口號)的對外服務,所以必須關閉防火墻。在RedHat9.0上運行setup,選擇Firewall configuration,選中No firewall。然后到上一層菜單選擇System services,去掉ipchains 和iptables 兩項服務。

  2.1.4設置共享目錄

  在文件/etc/exports中設定允許被訪問的共享目錄以及訪問的權限。該文件的格式:/共享目錄 主機名稱或IP(權限參數)。修改此文件添加共享目錄(該目錄要存在),/home/pub *() //允許所有主機訪問此目錄,權限為rw.

  /home/nfs 192.168.111.8(rw) //允許IP為192.168.111.8的主機訪問此目錄。權限為讀寫。

  權限參數設定為:

  rw:讀寫權限 ro:只讀權限

  no_root_squash:如果是root使用共享目錄,對于此目錄,他就具有root的權限

  root_squash:如果是root使用共享目錄,那么他的權限將被壓縮為匿名者(nobody)

  all_squash:不論NFS的使用者身份如何,他都會被壓縮成為匿名使用者(nobody)

  anonuid:前面的匿名使用者的UID設定值,通常為nobody;也可自行設定UID的值。(這個UID必需要存在于/etc/passwd中)

  anongid:同anonuid,但是變成groupID就是了

  sync:資料同步寫入到內存與硬盤中

  async:資料會先暫存于內存當中,而不會直接寫入硬盤

  2.1.5使/etc/exports文件生效,導出共享目錄

  修改了/etc/exports文件后,不需要重新激活nfs,只需要重掃描/etc/exports的文件,將設定重新加載即可,所使用的命令格式為#exportfs [-aruv]。其參數說明:

  -a 全部掛載(或卸載) /etc/exports 文件中的設定

  -r重新掛載/etc/exports里的設定,此外也更新/etc/exports及/var/lib/nfs/xtab

  -u 卸載所掛目錄

  -v將共享的目錄的情況顯示到屏幕上

  這里,輸入#exportfs –rv,會將/etc/exports中所設置的共享目錄輸出。

  exporting 192.168.111.8:/home/nfs

  exporting *:/home/pub

  reexporting 192.168.111.8:/home/nfs to kernel

  每次修改了/etc/exports文件后都需要運行一次該命令。

  2.1.6檢查主機配置是否正確

  (1)檢驗所共享的目錄內容,可以查看/var/lib/nfs/xtab這個文件:

  # cat /var/lib/nfs/xtab 顯示共享出去的目錄信息。也可以用#showmount–e 192.168.111.1顯示主機上的共享目錄.

  (2)觀察NFS激活的端口號,# netstat –utln顯示內容中有

  udp 0 0 0.0.0.0:2049 0.0.0.0:*

  這里2049是nfs服務所開啟的端口,其它的端口是RPC Server其它程序隨機產生的,每次restart nfs都會得到不一樣的端口號。

  (3)mount自己提供的共享目錄。#mount –t nfs 192.168.111.1:/home/pub /mnt/nfs,將主機/home/pub掛載到/mnt/nfs目錄下。如果 mount成功,表示主機配置正確。#cd /mnt/nfs,#ls 看見的內容就是/home/pub下的內容。

  2.1.7卸載共享目錄,停止NFS服務

  卸載共享目錄#umount /mnt/nfs(#umount /home/nfs)

  停止(啟動)portmap服務 # /etc/rc.d/init.d/portmap stop(restart)

  停止(啟動)nfs服務 #/etc/rc.d/init.d/nfs stop(restart)

  2.2目標機上的配置

  目標機為內核為ARM7TDMI的S3C44BO板,運行uClinux操作系統。在目標機端使用NFS掛載主機上的共享目錄,需要配置內核和相應的用戶程序(make menuconfig)。2.2.1配置內核

 

  Networking options --> (缺省) //開啟網絡功能

  Network device support --> (缺省)

  File systems ->Network File Systems——〉 //支持NFS文件系統

  <*> NFS file system support

  # Provide NFSv3 client support

  2.2.2用戶程序配置

  Network Applications -->

  # portmap

  BusyBox -->

  # mount(mount nfs support)(mount/unmount 命令有兩個地方可以選擇,Filesystem Applications 或BusyBox。這里推薦選擇BusyBox。

  配置完畢后,將編譯生成的映像文件image.rom下載到目標機上flash中。

  3 基于NFS的應用程序開發

  3.1在主機上編譯程序,并生成在目標機上運行的程序

  在主機/home/pub下編輯hi.c,其內容:

  #include

  main(){printf(“hi! Good!n”);}

  交叉編譯hi.c,#arm-elf-gcc –Wall –Wl,-elf2flt –o hi hi.c生成flt格式的可執行文件hi。修改hi的權限#chmod 711 hi。該文件可以直接下載到目標機上運行,這里利用NFS看其執行情況。

  3.2目標機利用NFS掛載主機并進行調試

  用串口線將主機的COM1和目標機的COM0連接起來,同時接上網線。在主機上打開minicom(設置參數:57600 8N1,無流控)用于同目標機通訊。目標機上電或者復位,開始啟動uClinux,顯示信息成功后進入sh。

  在目標機上建立/var/nfs用于掛載主機上的目錄(這里采用的是romfs只讀文件系統,/var使用的是RAM disk驅動的ext2文件系統。所以僅/var可以用于讀寫,其它目錄只可以讀)# mkdir /var/nfs

  啟動目標機上portmap服務 # portmap &

  掛載主機上的共享目錄#mount -t nfs 192.168.111.1:/home/pub /var/nfs

  #ls /var/nfs可以看到主機上/home/pub的文件。此時,可以運行該目錄下的可執行程序hi,#./hi(注意要加“./”)出現hi! Good!。程序正常運行,將其編譯到內核里。將hi拷貝到uClinux源碼包的/romfs/bin下編譯,生成的image.rom可以下載到 flash。在板子上的/bin下就有hi程序了,并且可以直接執行hi。

  卸載使用umount # umount /var/nfs。如果讓目標機啟動時自動運行portmap服務,可以修改rc文件(uClinux源碼中),在最后加入/bin/portmap&,mkdir /var/nfs。

  4 小結

  使用NFS開發模式,關鍵在于對主機和目標機的配置。如果配置不當,就會mount失敗。以下是值得注意的地方:

  mount成功,可是運行程序. /hi時報告錯誤:Permission denied.即主機拒絕操作。需要修改主機上程序的權限chmod 777 /home/pub/hi。然后在目標機端運行./hi即可。

  主機上設置時候一定要關閉防火墻,不然目標機mount的時候沒有響應。

  目標機上一定要先開啟portmap服務。

  主機和板子的IP在同一個網段。

  如果要運行大的應用程序,在Mount的時候最好加上:

  -o rsize=1024,wsize=1024,timeo=15的參數,否則多半會得到server not responsing的提示信息。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜精品福利一区二区三区av| 91久久精品一区二区别| 国产一区二区丝袜高跟鞋图片| 欧美成黄导航| 久久一区激情| 久久国产日韩| 欧美一级二区| 亚洲午夜在线观看| 夜夜爽www精品| 亚洲欧洲一级| 亚洲欧美资源在线| 亚洲综合国产精品| 中文欧美日韩| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲国产精品高清久久久| 一区二区亚洲精品| 国内精品久久久久久久影视麻豆| 国产欧美大片| 国产美女高潮久久白浆| 国产精品男女猛烈高潮激情 | 亚洲欧美视频一区| 亚洲特色特黄| 亚洲欧美日韩国产中文| 亚洲女优在线| 欧美一二三视频| 久久国产欧美日韩精品| 久久久久久久国产| 美女精品国产| 欧美刺激午夜性久久久久久久| 欧美成人精品在线观看| 欧美成人蜜桃| 欧美日韩久久久久久| 欧美体内she精视频在线观看| 欧美午夜精品久久久久久浪潮| 国产精品igao视频网网址不卡日韩| 国产精品青草综合久久久久99| 国产精品亚洲人在线观看| 国产美女高潮久久白浆| 国产一区再线| 在线看国产一区| 亚洲人午夜精品| 亚洲无毛电影| 欧美在线免费观看亚洲| 亚洲国产欧美一区二区三区久久| 亚洲日本aⅴ片在线观看香蕉| 99热这里只有精品8| 亚洲一区二区三区高清| 久久aⅴ国产紧身牛仔裤| 久久在线视频在线| 欧美人与性动交a欧美精品| 国产精品国产三级国产普通话99| 国产精品主播| 激情亚洲网站| 99在线观看免费视频精品观看| 亚洲一区精品在线| 亚洲丶国产丶欧美一区二区三区| 99精品福利视频| 欧美一区高清| 欧美国产一区在线| 国产精品扒开腿爽爽爽视频| 国产欧美一区二区三区久久 | 国产精品高潮呻吟久久av无限| 国产日韩欧美亚洲| 亚洲国产精品成人综合| 亚洲婷婷综合久久一本伊一区| 久久精品国产久精国产一老狼| aa级大片欧美三级| 久久高清国产| 欧美日本精品| 国产专区综合网| 99精品欧美一区二区三区综合在线 | 午夜在线播放视频欧美| 亚洲人成艺术| 午夜精品一区二区三区电影天堂| 久久综合色天天久久综合图片| 欧美性片在线观看| 亚洲第一视频网站| 亚洲欧美视频一区| 一本久道久久综合狠狠爱| 久久久成人网| 国产精品成人在线观看| 在线观看亚洲视频| 亚洲一级在线| 99精品国产99久久久久久福利| 久久精品99| 国产精品久久久久99| 亚洲日本成人女熟在线观看| 羞羞色国产精品| 亚洲线精品一区二区三区八戒| 久久夜色精品国产亚洲aⅴ| 国产精品家庭影院| 亚洲精品老司机| 久久精品一级爱片| 午夜在线观看欧美| 欧美日韩国语| 在线播放国产一区中文字幕剧情欧美 | 国产精品国产三级欧美二区| 久久精品国产第一区二区三区| 欧美日韩国产首页| 在线播放视频一区| 午夜视频在线观看一区| 亚洲综合日韩| 欧美色区777第一页| 亚洲激情午夜| 亚洲福利专区| 久久久久国内| 国产免费亚洲高清| 亚洲一级在线观看| 亚洲影院在线观看| 欧美日韩精品在线| 亚洲精品在线视频| 亚洲精品小视频在线观看| 裸体丰满少妇做受久久99精品 | 国产一区二区精品丝袜| 亚洲欧美日韩综合aⅴ视频| 亚洲免费在线| 欧美视频在线观看免费| 日韩视频在线一区二区三区| 亚洲精品中文字幕有码专区| 久久亚洲一区| 韩国精品在线观看| 欧美综合77777色婷婷| 久久成人精品无人区| 国产美女精品一区二区三区| 亚洲欧美视频在线观看视频| 亚洲欧美一级二级三级| 国产精品美女久久久久久久| 一区二区毛片| 亚洲女性喷水在线观看一区| 国产精品久久久久7777婷婷| 亚洲一级高清| 欧美在线观看天堂一区二区三区| 国产精品裸体一区二区三区| 在线视频欧美精品| 午夜欧美电影在线观看| 国产精品欧美久久| 亚洲尤物精选| 欧美中文字幕在线| 国内精品模特av私拍在线观看| 久久av红桃一区二区小说| 久久久人人人| 亚洲国产精品尤物yw在线观看| 亚洲人成在线观看网站高清| 欧美精品麻豆| 一区二区三区av| 欧美一区不卡| 国内久久精品视频| 亚洲精品久久久久久久久久久久 | 欧美激情精品| 99精品久久免费看蜜臀剧情介绍| 亚洲午夜视频在线| 国产日韩精品在线观看| 欧美一二三区在线观看| 久久综合九九| 亚洲人成网站影音先锋播放| 亚洲一本视频| 国产三区精品| 亚洲国产另类久久久精品极度| 欧美精品久久久久久久久久| 一区二区三区四区精品| 欧美在线日韩精品| 亚洲第一主播视频| 亚洲天堂成人| 国产一区二区在线免费观看 | 国精品一区二区三区| 亚洲国产精品成人综合色在线婷婷| 免费精品视频| 夜夜爽www精品| 久久成人av少妇免费| 亚洲国产二区| 亚洲欧美国产日韩中文字幕| 国产自产精品| 在线视频亚洲一区| 国产日韩欧美一区二区三区四区 | 日韩视频在线你懂得| 国产精品老牛| 亚洲激情自拍| 国产精品视频| 亚洲人成网站精品片在线观看| 欧美三区美女| 久久精品国产综合| 欧美调教视频| 亚洲国产精品第一区二区三区| 欧美视频二区36p| 久久国产一区二区三区| 欧美日韩一区二区三| 欧美影院成人| 欧美日韩精品二区| 欧美在线看片| 国产精品久久久久久久久| 亚洲电影免费| 国产精品日韩欧美大师| 亚洲看片网站| 国产亚洲毛片在线| 亚洲一区精品视频| 亚洲国产精品免费| 久久精品国产亚洲一区二区| 日韩午夜在线视频| 女人色偷偷aa久久天堂| 午夜精品久久久久久|