现在的位置: 首页 > 综合 > 正文

vmware下如何使用nfs下载程序到开发板

2017年03月26日 ⁄ 综合 ⁄ 共 2728字 ⁄ 字号 评论关闭

linux安装在vmware虚拟机中
linux操作系统版本:ubuntu12.04
开发板:UT6410
开发板上的操作系统:linux2.6.28,文件系统类型是yaffs
串口上位机:windows超级终端

当我们编译好程序后需要下载到开发板运行测试,如果开发板上运行的是飞凌提供的linux2.6.28系统则可以用超级终端通过串口下载。但是linux2.6.36则不支持这种方式。通过nfs下载程序则是一种比较通用的方式,因此学会如何利用nfs下载程序到开发板是非常有必要的。

基本原理:将pc机上vmware中的linux的nfs服务器配置好,配置过程中会要求设置一个共享目录,把需要下载到开发板的程序放到这个共享目录中。开发板上的linux操作系统就可以通过一根网线将这个共享目录挂载到自己的根目录下,将之前放置于这个共享目录中的程序“复制”到其他目录即是实现了从pc机下载程序到开发板。

pc机上linux的配置:
1、安装并启动nfs服务器,ubuntu默认是不安装的,具体的安装过程见沧海猎人的博客http://blog.csdn.net/embedded_hunter/article/details/6871196中的1-->6步。
2、设置ip等信息:
首先选vmware的vm-->settings-->Network Adapter选择为Bridge(桥接)方式。
然后运行你的开发板,进入系统后在超级终端中敲入命令:ifconfig会显示如下类似的信息:

eth0      Link encap:Ethernet  HWaddr 08:90:90:90:90:90
          inet addr:192.168.0.232  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:422 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:36547 (35.6 KiB)  TX bytes:2958 (2.8 KiB)
          Interrupt:108 Base address:0x6000

其中inet addr是你的开发板的ip地址,Bcast是默认网关,Mask是子网掩码。根据这些信息设置pc机的ip

在pc机linux中打开一个终端,输入指令:gedit  /etc/network/interfaces把打开的文件中编辑成成如下:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.255

其中子网掩码(netmask)和默认网关(gateway)要与上面开发板中严格保持一致,ip地址只需要保持在同一个网段即可。即ip的前三个段一样,最后一段不同即可。在此例中即192.168.0.xxx(当然xxx要小于255)。

接着重启pc机中linux的网络配置,在pc机的终端中输入如下指令:sudo /etc/init.d/networking restart。可以输入ifconfig检查一下是否设置正确。
最再重启一下pc机的nfs,在终端中输入:sudo  /etc/init.d/nfs-kernel-server restart 。到此,pc机上的设置就基本完成了,接下来在开发板上就可以挂载了。
当然以上的整个安装和配置过程只需进行一次即可,并不是说每次挂载都需要重新这样来一遍。

在开发板上挂载nfs:
首先用一根网上将开发板和板子连接起来,这是前提。
然后在开发板运行起来后在windows超级终端中输入:
mount  -o nolock 192.168.0.111:/nfsroot   /mnt         --------  其中192.168.0.111是你在pc机上设置的那个ip地址;/nfsroot是你在配置pc机linux的nfs服务器的时候设置的共享目录;/mnt是你开发板上linux中的目录。-o的意思是mount命令带有参数,后面的nolock就是所带的参数,至于为什么要带这个参数,参考“关于mount
nfs时-o nolock的问题

挂载成功之后进入mnt目录就可以看到pc机上nfsroot目录中的内容。以后当你需要下载程序到开发板,只需在pc机上把程序放到共享目录,板子就可以通过挂载共享目录把程序下载到开发板。
需要卸载的时候输入命令umount  / mnt即可。

由上可见,这里采用的方法主要是更改pc机上linux的ip地址等信息,使其与开发板上的ip等信息相匹配。当然也可以更改开发板上的ip地址来匹配pc机上的ip,但在这里不讨论,可以参见http://bbs.witech.com.cn/viewthread.php?tid=4569&highlight=uboot%2B%C9%E8%D6%C3ip

另外需要注意的是:
1、开发板的实际ip是进入操作系统后在windows超级终端中输入ifconfig看到的,并不是在uboot中输入printenv打印的环境变量中显示的。我在实际的配置中发现我开发板的环境变量中的ip信息就与ifconfig看到的不同,但开发板真正的ip是ifconfig看到的,我也不理解这是为什么。(此问题已解决:“LZ,要知道UBOOT中设置的IP和操作系统中设置的IP没有什么关系,可以在uboot.设置192.168.1.15,而在系统中设置192.168.1.16,不冲突,因为UBOOT引导系统后,会重新加载系统的网卡驱动,之前的IP地址当然不存在了。要在系统中设置IP,可以在/etc/profile最后一行,加上ifconfig
eth0 192.168.1.xx
”)
2、如果不能正常挂载,可能还需要修改/etc/NetworkManager/nm-system-settings.conf
[main]
plugins=ifupdown,keyfile
[ifupdown]
managed=false
将managed=ture改为false。
然后执行sudo /etc/init.d/network-manager restart,重新配置一下。

抱歉!评论已关闭.