嵌入式Linux之相關網絡環境的搭建

嵌入式Linux之相關網絡環境的搭建


在嵌入式Linux開發過程中,與網絡相關的配置非常重要。因爲開發板與宿主機的文件交互均是通過網線經由相關的網絡服務器實現的,在這一部分走的彎路也比較多,現將相關服務器的搭建流程以及相應配置記錄如下。

1. Linux虛擬機,Window,目標板網絡互通

在開發過程中,linux虛擬機,window系統目標板的網絡應該是通暢的。首先,我們可以通過window下的服務器相關的軟件對目標板進行操作,這就要求window與目標板之間必須網絡互通;另外,因爲我們的Linux服務器是虛擬的,當通過Linux虛擬機對目標板進行操作時,實際還是要先透過window進而與目標板溝通的。因而,Linux與Window也必須是互通的。
要保證這三者之間兩兩互通,需要進行如下設置

  1. 關閉window和Linux系統的防火牆,Linux下關閉防火牆的指令爲(只針對Ubuntu 系統):

    sudo ufw disable

  2. 將Window,Linux,目標板的IP設置在同一個網段內
    例如:window的靜態IP設置爲192.168.7.100
    Linux下的靜態IP設置爲 192.168.7.110
    目標板的靜態IP設置爲 192.168.7.236(目標板默認值,可更改)
    目標板IP設置方法爲:進入Uboot指令行,設置相關的環境變量,並保存:

    setenv serverip 192.168.7.100 ##宿主機IP
    setenv ipaddr 192.168.7.236 ##目標板IP
    saveenv ##保存環境變量

    在tftp操作時,需要特別注意的是,這裏的宿主機的IP配置的是Window下的IP,宿主機與目標板的tftp操作必須在window下進行。如果想切換到Linux下進行,必須將serverip更改爲linux系統下的靜態IP值。

  3. 配置虛擬機選項,使虛擬機與Window互通
    在虛擬機中,點擊VM->setting->network adapter,將連接方式選成bridge連接方式。這樣,在IP設置好,防火牆關閉的情況下,虛擬機和Window系統之間應該兩兩能夠ping通。
    完成上述配置之後,可以進行測試。啓動smart3250,進入uboot指令行,依次以ping的形式進行測試。目標板應該能ping通Linux虛擬機和Window。然而,在目標板僅加載uboot的情況下,宿主機是無法ping通目標板的,這可能是由於目標板中uboot對網絡支持不完善。但是當整個Linux系統移植完成之後,這三者之間應該是兩兩互通的。

NFS服務器搭建和使用

NFS就是Network File System,最早是由SUN公司提出並發展的。它最大的功能就是可以通過網絡,讓不同的機器,不同的系統,共享某個文件夾。對於嵌入式平臺來說,通常需要在主機上配置NFS服務服務器,將某個特定的目錄共享給目標系統來訪問和使用。通過NFS,目標系統可以直接訪問運行在主機端的文件,可以減少對目標系統FLASH的燒寫,既減少了對FLASH的損害,同時也節省了燒寫FLASH所花費的時間。
NFS安裝需要兩個程序,RPC程序和NFS程序,具體安裝步驟《嵌入式Linux學習筆記-主機平臺環境搭建》,這裏主要講述NFS服務器的使用。
首先需要修改/etc/exports文件,在上一文檔中,配置的用戶端IP爲192.168.7.110,是Linux宿主機的IP,主要用於測試,看NFS服務器是否可以掛載自己的文件系統。當Linux平臺搭建完成之後,就需要目標板來掛載宿主機的文件夾。這時需要將IP改爲目標板的IP,允許目標板掛載宿主機的NFS文件夾。同時添加了一個新的NFS文件夾

# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
#/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
/home/iemink/nfsfiles 192.168.7.236(rw,sync,no_root_squash)
/home/iemink/smart3250 192.168.7.236(rw,sync,no_root_squash)

之後,在目標板的命令行輸入掛載指令:

root@ZLG:~# mount –t nfs 192.168.7.110:/home/iemink/smart3250 /mnt/nfs –o nolock

就可以在目標板/mnt/nfs文件夾下看到掛載的宿主機smart3250文件夾。
NFS服務器的具體使用,以一個例子說明。
首先在宿主機的NFS文件夾、/home/iemink/smart3250中新建一個/app/hello文件夾,作爲應用程序文件夾,在其中編寫一個簡單的hello world程序,通過交叉編譯鏈編譯:

arm-vfp-linux-gnu-gcc hello.c –o hello

生成可執行的目標文件。注意,這些都是在宿主機中完成的,至於這個程序能不能在目標板上執行,則需要通過NFS服務器將該文件掛載在目標板上執行,如下:

root@ZLG:~# mount –t nfs 192.168.7.110:/home/iemink/smart3250 /mnt/nfs –o nolock
root@ZLG:~# cd /mnt/nfs/app/hello
root@ZLG:~# ./hello
hello world

可以看到,該目標代碼可以再開發板上執行。若要發佈程序,則將該程序複製到開發板系統目錄即可,若要開機自動運行該代碼,則可以修改/etc/rc.d/reS文件,在其中增加執行程序的命令即可。例如,將上述的hello文件放置在/home文件夾下,若要開機執行這段程序:

root@ZLG:/mnt/app/hello# cp hello /home
root@ZLG:/mnt/app/hello# vi /etc/rc.d/reS
##在該文件結尾添加
/home/hello

tftp服務器的使用

NFS服務器僅僅涉及文件的掛載,不涉及FLASH操作,可以在目標板上掛載一個容量很大的文件夾而不需要考慮目標板的FLASH容量。而tftp服務器則是實現文件的傳輸,需要考慮目標板容量。tftp服務器的使用上,需要注意的是宿主機和目標板IP的配置。需要將兩者配置在同一個網段內。在window下使用tftp服務器很方便,直接運行tftp32.exe,則宿主機就成爲一個tftp服務器。
tftp32.exe運行界面
在軟件的在current directory中,選擇需要傳輸文件所在的文件夾,點擊show dir,查看該文件夾下的內容:

  • burn
  • rootfs.tar,bz
  • safefs.cramfs
  • uboot.bin
  • uImage

其中uImage是需要傳輸的文件,在uboot中輸入指令:

tftp 80008000 uImage

則將uImage文件燒寫如目標板的RAM的80008000空間,再通過nand write指令將其固化到FLASH中。


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