五、mini2440下NFS服務器的搭建

 

通過自己這幾天的摸索終於把linux交叉開發環境搭建好了,現在總結一下自己做的工作。

      在嵌入式開發的過程中,PC應用開發是直接在pc上進行的,但是嵌入式linux應用開發則必須依靠宿主機才能進行。所以,在宿主機上搭建針對某種目標機的應用開發環境是進行嵌入式linux應用開發的第一步。我是在windows XP的平臺上來做的,利用虛擬機中的linux來搭建所需要的開發平臺。
      在嵌入式開發領域廣泛的使用NFS(Network Filesystem)來開發文件系統中的應用程序。NFS最初是由Sun公司提出的,NFS使得開發板可以通過網絡遠程掛載宿主機中的文
件系統。從開發板的角度來看,訪問宿主機中的文件系統就相當於在訪問本地的文件系統。這樣在宿主機上做了程序修改,就能馬上在開發板上看到修改的運行結果,應用程序的調試效率得到了極大地提高。


一、在虛擬機下安裝Fedora9,並設置其IP地址爲:202.38.214.179,並設置相應的子網掩碼和網關。


二、在pc上實現數據交互的常用接口有串口、並口、網絡接口、USB接口等,在這裏我們採用串口來實現交互,在mini2440開發板中提供了一個9針的串口。虛擬機設置串口,在本

實驗中,由於宿主機的硬件平臺是有虛擬機模擬的,所欲需要在虛擬機中實現對串口的模擬,如下:
     1) 打開虛擬機的配置界面,單擊"Add"按鈕。
     2) 在彈出的窗口中選擇需要安裝的"Serial Port"選項,如圖1所示:


     3) 選擇串口類型"使用位於主機上的物理串行端口(P)".
     4) 單擊"完成"按鈕完成串口的創建.


三、Minicom的使用:在我們用windows開發板進行連接通行的時候,是採用"超級終端"。在linux系統中,常用的串口通信軟件是Minicom。由於嵌入式linux應用開發是在linux平

臺上進行的。所以我們要採用minicom串口通信。
      啓動Minicom [root#lcoalhost]#minicom -s
      啓動後minicom會自動讀取默認的配置文件,由於Minicom默認的部分配置不符合實際環境的要求,所以需要進行修改,修改過程如下:
 1) 啓動minicom如圖2所示:


 2) 選中"Serial port setup"選項對串口參數進行配置,配置界面如圖3所示:


 從上面我們可以看到minicom採用的設備是ttyS5,在linux中/dev/目錄下的ttyS0、ttyS1、ttyS2、ttyS3是對應與串口COM1、COM2、COM3、COM4的,由於在本人的實驗在

開始設置的過程中的一些原因,在winodws下采用COM6端口的終端,所以這時候在linux得得到新的串口設備ttyS5,我是通過語句:
 mknod -m 666 /dev/ttyS0 c 4 64
 得到COM6對應的ttyS5串口的。最後退出Minicom設置界面。
四、設置宿主機上的NFS。
 啓動NFS: [root#lcoalhost]#/etc/init.d/nfs start
 啓動rpcbind: [root#lcoalhost]#/etc/init.d/rpcbind start
 關閉防火牆: [root#lcoalhost]#/etc/init.d/iptables stop
 設置共享目錄 [root#lcoalhost]#vim /etc/exports
 在編輯nfs服務的配置文件(注意:第一次打開的時候是空的,在exports文件中添加)
 /opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
 其中:/opt/FriendlyARM/mini2440/root_qtopia 表示nfs共享目錄,它可以作爲開發板的根
文件系統通過nfs掛接;
 * 表示所有的客戶機都可以掛接此目錄
 rw 表示掛接此目錄的客戶機對該目錄有讀寫的權力
 sync 所有數據在請求時寫入共享
 no_root_squash 表示允許掛接此目錄的客戶機享有該主機的root 身份  
   測試nfs是否成功,可以輸入以下命令檢驗:
 [root#lcoalhost]#mount -t nfs localhost:/opt/FriendlyARM/mini2440/root_qtopia /mnt/
   運行後在到目錄/mnt/下查看發現和目錄/opt/FriendlyARM/mini2440/root_qtopia下的內容一樣,這樣nfs就可以了。
五、通過nfs掛載文件系統:啓動mini2440開發板,並設置目標板啓動模式爲 Nand Flash 啓動,在windows的超級終端下我們看到了vivi菜單界面,選擇q進入Goto shell of vivi

,並寫入以下內容:

  1.  Supervivi> param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=202.3  
  2. 8.214.179:/opt/FriendlyARM/mini2440/root_qtopia ip=202.38.214.189:202.38.214.179  
  3. :202.38.214.254:255.255.255.0:mini2440:eth0:off"  

 其中param set linux_cmd_line是設置啓動 linux 時的命令參數。其各參數的含義如下:
 root=/dev/nfs 告訴內核使用NFS掛載根文件系統。
 nfsroot 是自己開發主機的IP 地址。
 “ip=”後面:
 第一項(202.38.214.189)是目標板的臨時IP(注意不要和局域網內其他IP 衝突);
 第二項(202.38.214.179)是開發主機的IP;
 第三項(202.38.214.254)是目標板上網關(GW)的設置;
 第四項(255.255.255.0)是子網掩碼;
 第五項是開發主機的名字(一般無關緊要,可隨便填寫)
 eth0 是網卡設備的名稱。
 要注意的是,宿主機的IP地址、網關和子網掩碼必須和所設的參數值保持一致。內核啓動時,會自動掛載NFS服務器共享的目錄。如下所示:
 

  1. eth0: link down  
  2.  IP-Config: Complete:  
  3.        device=eth0, addr=202.38.214.189, mask=255.255.255.0, gw=202.38.214.254,  
  4.        host=mini2440, domain=, nis-domain=(none),  
  5.        bootserver=202.38.214.179, rootserver=202.38.214.179, rootpath=  
  6.  Looking up port of RPC 100003/2 on 202.38.214.179  
  7.  eth0: link up, 100Mbps, full-duplex, lpa 0x45E1  
  8.  Looking up port of RPC 100005/1 on 202.38.214.179  
  9.  VFS: Mounted root (nfs filesystem) on device 0:11.  
  10.  Freeing init memory: 160K  
  11.  [10/Sep/2008:03:06:06 +0000] boa: server version Boa/0.94.13  
  12.  [10/Sep/2008:03:06:06 +0000] boa: server built Mar 26 2009 at 15:28:42.  
  13.  [10/Sep/2008:03:06:06 +0000] boa: starting server pid=699, port 80  
  14.   
  15.  Try to bring eth0 interface up......NFS root ...Done  
  16.   
  17.  Please press Enter to activate this console.  

六、掛載了NFS文件系統,就可以在宿主機上進行嵌入式應用程序的開發了。
 比如我們在宿主機上的root_qtopia目錄下寫一個helloword的c語言程序,通過arm-linux-gcc -o test test.c的編譯成爲在arm上可運行的可執行文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章