一、硬件平臺
1.電腦
臺式機、筆記本或一體機
2.開發板
JZ2440、MINI2440或TQ2440
3.網線
建議使用交叉網線,即買開發板的時候送的網線,以便數據能夠正常的相互傳輸,也可以自己製作一條。當然,在用路由器和開發板相連時,可以使用直連線;如果是電腦和開發板相連,則必須用交叉線。
4.路由器
其實也可以不用路由器,直接將電腦和開發板用交叉網線相連,但是那樣就不能上網了,傳資料不太方便,所以建議配一個路由器。
5.mimiOTG線或者串口線(買開發板時自帶的)
二、軟件平臺
1.主機 windows 7 或者windows XP均可
2.客機 Vmware下的Linux,如ubuntu,redhat等
三、主機和客機實現雙機互Ping
1.主機聯網設置
a.使用路由器,讓電腦可以正常上網。這點,無需多少,否則,也不會看到這篇文檔。注意,聯網設置好了之後,在本地連接中,選擇手動設置IP,如192.168.1.11,其他的會正常產生,如下圖:
在命令提示符中,輸入ipconfig,會顯示本機的IP改爲了192.168.1.11,如下圖:
b. 關閉電腦上的防護牆。至於怎麼關閉,自己上百度。(提示:到控制面板上面查找)
2.虛擬機Vmware設置
在虛擬機的ubuntu中,選擇橋接(也可以選擇NET模式,不過不太方便,這裏只介紹橋接bridge模式),虛擬機中的選擇:編輯à虛擬網絡設置à選擇“Host Virtual Network Mapping”,在VMnet0中選擇自己電腦對應的網卡,不要選擇自動獲取,即“Bridge to an automatically chosen adapter”,否則,互ping失敗。具體設置如下圖:
3.客機ubuntu聯網設置
在ubuntu的命令終端中,輸入ifconfig查看系統的IP,看是否與主機windows下的IP處於同一網段(同一網段是指網絡號相同的一系列IP地址,對於此時主機IP爲192.168.1.11,因爲是一個C類地址,故我們只需要設置客機IP爲192.168.1.***即可,***在1到255之間,不爲11),我們設置爲192.168.1.108,可以使用命令或者圖形化界面配置,至於怎麼配置,大家上百度很簡單就搜到了。
設置好了之後,可以用ifconfig命令進行查看自己的IP,如下圖:
4.雙機互Ping
設置好了主機和客機的IP及其相關聯網配置之後,就可以實現雙機互Ping了。在windows的命令提示符下輸入ping + 客機IP 即ping 192.168.1.108 ,如果出現下圖所示的現象,則說明ping成功,否則失敗。
在Linux的命令終端下輸入Ping + 主機IP,即ping 192.168.1.11,如果出現下圖所示,則說明ping 成功,否則失敗。
四、客機配置
爲了實現文件能正確的上傳,我們還得在客機ubuntu中開啓並配置一些相關的服務。
1.安裝、配置、啓動FTP服務
執行下列命令,安裝後即會自動運行:
sudo apt-get install vsftpd
修改vsftpd的配置文件/etc/vsftpd.conf,將下面幾行前面的“#”去掉。
#local_enable=YES//表示允許本地用戶登錄
#write_enable=YES //表示允許上傳文件
修改完畢之後,執行以下命令重啓FTP服務:
sudo/etc/init.d/vsftpdrestart
2.安裝、配置、啓動ssh服務
執行下列命令,安裝後即會自動運行:
sudo apt-get install openssh-server
使用默認配置即可。
3.安裝、配置、啓動NFS服務
執行下列命令,安裝後即會自動運行:
sudo apt-get install nfs-kernel-serverportmap
其配置文件爲/etc/exports,在裏面增加以下內容,以後通過網絡文件系統訪問/work/nfs_root/first_fs目錄。
/work/nfs_root/first_fs *(rw,sync,no_root_squash) 如下圖:
修改完畢之後執行以下命令重啓NFS服務:
sudo /etc/init.d/nfs-kernel-server restart
以上三個服務使用apt-get安裝之後已經啓動,並且以後每次都會開機啓動。如果想取消,則可以在Linux的啓動菜單執行“System”->“系統管理”->“網絡”命令,在對話框中取消。
五、開發板配置
1.確保開發板的內核中帶有網卡驅動,而且可以正常使用。注意,這點尤爲重要。在這個上面,我花了很長時間,要不是有羣裏面的兄弟和韋老大的幫忙,估計現在我還在弄那個什麼網絡文件系統。如果你的內核中沒有網卡驅動,則會出現,在u-boot下可以ping通客機,但是到了文件系統階段,就ping不通了,就會一直卡在那兒不動,如圖:
2.設置u-boot的IP地址即serverip,並進行Ping客機的IP。
在u-boot下輸入print命令,查看u-boot的ip和server,將ip設置爲同一網段,這裏設置爲192.168.1.110,將serverip設置爲客機的ip,即192.168.1.108,執行下列命令完成:
setipaddr192.168.1.110
setserverip192.168.1.108
save
然後,在u-boot下ping 客機和主機,如ping主機windows有:
Ping 客機ubuntu有:
至此,開發板,主機,客機三機可以通信了。但是注意(以下語句,來自韋老師聊天記錄):
如果windows有多網卡,那麼這些網卡的IP的網段一定不能相同。
vmware用橋接的話,把windows網絡連接裏的vmnet1,vmnet8禁止掉
請確定你選用哪一個網卡來連接開發板,選擇的網卡、VMWARE LINUX的IP、開發板IP,三者設爲同一網段。
VMWAER裏,選擇上述所選的網卡用作橋接。方法如下:
vmware的Edit菜單->Virtual Network Editor->Host Virtual NetworkMapping->VMnet0, 在此選擇網卡。不要選擇Bridge to an automatically chosen adapter, 一定要選中某個網卡。
在windows裏,你選用的網卡"如果是斷開狀態"的話,是無法PING通的。如果開發板正在運行UBOOT,它是在使用網絡命令的時候才使能網卡,其他時候是不使能網卡的。這意味着在UBOOT階段沒有使用網絡命令時,即使你已經接了網線,但是windows的網卡仍然是斷開狀態。要想解決這個問題。
建議使用一個HUB或路由器,讓PC、開發板的網線都接到HUB或路由器上去。UBOOT是不迴應PING包的,這意味着開發板運行UBOOT時,它可以PING通別人,但是別人PING不通開發板。
3.在PC機上測試下是否可以自已掛接自已:
4.單板掛接
在單板上創建一個掛接目錄,再掛接。這樣在服務器上改變那個目錄下的文件時,單板上掛接的這個目錄裏也會改變。
這種方法是開發板啓動之後去掛載的。
直接讓開發板從 nfs 啓動。修改命令行參數。
要求:
服務IP、目錄。
開發板IP。
在linux內核的Documention\nfsroot.txt中有說明用法。
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>noinitrdroot=/dev/nfsnfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
[<server-ip>:] 服務器IP。
<root-dir> 服務器上哪個目錄設置成被單板掛載。
[,<nfs-options>] 用中括號表示的參數可以省略。尖括號的不可省略。
<client-ip> 表示單板的IP。
<server-ip> 服務器IP。
<gw-ip> 網關,單板和服務器同一網段。
<netmask> 子網掩碼
<hostname> 不關心這個,不要。
<device> 網卡,如 eth0\eth1
<autoconf> 自動配置,這個不需要。寫成 off
在u-boot下執行以下命令:
set bootargs=noinitrd root=/dev/nfsnfsroot=192.168.1.108:/work/nfs_root/first_fsip=192.168.1.110:192.168.1.108:192.168.1.1:255.255.255.0::eth0:offinit=/linuxrc console=ttySAC0
設置後重啓單板。
在文件系統下ping客機ubuntu,測試可不可以ping通:
ping 192.168.1.108,則出現:
說明可以ping通。然後重啓單板,在文件系統下,執行ls命令,就會看到客機ubuntu上面的/work/nfs_root/first_fs裏面的文件了,如下圖:
至此,網絡文件系統掛在成功。
六、聲明
以上資料,來源於自己的學習總結和韋老大及羣裏面的兄弟的幫助。在這裏,謝謝你們,如果沒有你們最真摯,最耐心的幫助,我想,我早就放棄了。嵌入式的學習有時候很枯燥,希望大家可以堅持下去,每天進步一點,不久,就會有很大的收穫。
對於以上內容,歡迎大家批評指點,如有疑問,可以來韋老師的羣裏,我們共同討論,一起學習。