一、硬件平台
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里面的文件了,如下图:
至此,网络文件系统挂在成功。
六、声明
以上资料,来源于自己的学习总结和韦老大及群里面的兄弟的帮助。在这里,谢谢你们,如果没有你们最真挚,最耐心的帮助,我想,我早就放弃了。嵌入式的学习有时候很枯燥,希望大家可以坚持下去,每天进步一点,不久,就会有很大的收获。
对于以上内容,欢迎大家批评指点,如有疑问,可以来韦老师的群里,我们共同讨论,一起学习。