分类: 嵌入式
2009-12-21 22:38:43
最近遇到一个客户,只给我们一块板子,什么接口都没有,又要我们download文件到板子里面进行测试。郁闷了好久,同事接了一个串口,总算可以打印出信息了。
接下来我们试了两种方法,都成功了。
都是通过wifi的,然后方法一是使用tftp下载,方法二是让板子通过nfs服务器mount 上window一个文件夹。
下面来说说这两种方法:
前提:板子上的wifi可以跑起来,并且通过AP能ping 通window。(如果你有usb端口和usb线就更好办了)
方法一 tftp下载
1、将需要的文件拷贝到tftp所在的文件夹下面,运行tftp软件;
2、在板子上运行 tftp window主机地址/需要下载的文件名 -r –g /tmp(tmp为板子上的目录)
例如:tftp -g -l /tmp/test.sh -r test.sh 192.168.1.100
或者tftp –g –r 192.168.1.100 test.sh /tmp
方法二 通过nfs服务器mount
一、安装SFU
1、下载软件SFU
2、编辑用户组group文件 和密码passwd文件 ,并复制到C:\
例如:
passwd内容
root:x:0:0:root:/root:/bin/sh
group内容
root:x:0:
3、运行SFU35BETA_EN.exe,这是一个自解压文件,指定一个目录,释放压缩的文件。
4、在释放目录中,运行SfuSetup.msi,出现Micorsoft Windows Services for UNIX Setup wizard窗口。
5、点击Next,出现Customer Information窗口。
6、点击Next,出现License and Support Information窗口,选中“I accept the agreement”。
7、点击Next,出现Installation Options窗口。
8、选择Custom Installation,点击Next,出现Selecting Components窗口。
9、点击Utilities目录项,选择Entire feature will not be available,该项的图标变为一个棕色的叉号。
10、对“Interix GNU components”“Remote Connectivity”使用相同的选择。
11、点击NFS目录项,选择Entire Feature (including all subfeature if any) will be installed on local hard drive,该项的图标变为一个白色背景的驱动器。
12、 对“Authentication tools for NFS”使用相同的选择, 选择Entire Feature (including all subfeature if any) will be installed on local hard drive。
13、最终只有“Authentication tools for NFS”和“NFS”两项是完全安装,其他各项都不安装。
14、点击Next,出现User Name Mapping窗口,选中Password and group files。
15、点击Next,在Password file path and name下的空白栏中输入C:\passwd,在Group file path and name下的空白栏中输入C:\group。
16、点击Next,出现Installationg Location窗口,选择安装位置。这里的安装位置的盘必须是NTFS格式
17、点击Next,开始安装(约21MB)。最后选择Finish,结束安装。如提示重启,则重启。 (以上安装过程比较简单,引用网络上文章。)
注:与卡巴斯基互联网套装6.0有冲突,需安装之前关闭卡巴斯基。
二、共享Windows主机目录
1、 不需重启,对NTFS格式盘中要共享的目录,右键点击出现下拉菜单,选择“属性”,出现目录属性窗口。
2、 选择“NFS Sharing”选项卡,选中share this folder;指定共享名(Share name,一个简单的名字,大小写无关,如dir);字符编码(Encoding)选择GB2312-80;选中Allow anonymous access;点击Permissions,出现NFS Share Permissions窗口,设置共享文件夹读写属性。
3、 在Type of access下拉菜单中选择Read-Write(可读可写);要使目标板对本机文件有root权限,选中Allow root access。
4、 设置完,点击OK按钮,回到目录属性窗口。
5、 点击“安全”选项,添加everyone,使之允许读取,控制,或者完全控制,如果没有“安全”选项请在资源管理器点“工具”---->“文件夹选项”,点击查看选项,将“使用简单文件共享(推荐)”前的勾去掉。目录属性窗口里就有安全选项了。
6、请确认你已经开启了windows的文件共享功能,如果没有请开启。否则会出现NFS能挂载,但不能访问的问题。我在设置的时候就遇到了这样的问题,郁闷了半天,^_^
三、配置Services for UNIX Administration
1、选择开始->程序->Windows Services for Unix->Services for Unix Administration启动Services for UNIX Administration,
2、出现设置窗口后,点击 左边子窗口User Name Mapping,再点击标签栏“Map”,然后点击 show User Maps
3、在windows user name 和unix user name框中分别输入guest和root,然后点击add,则添加到mapped users中。
4、然后再点击 show group Maps, 在windows group name 和unix group name框中分别输入guests和root然后点击add,则添加到mapped groups中。
至此设置完毕
四、启动目标板,并在目标板上挂装Windows目录
将主机IP设为192.168.1.1,交叉线与目标板相连,启动目标板,主机启动tftp服务,运行mount命令来挂装NFS目录:
mount –t nfs –o nolock 192.168.1.1: share_name /mnt
share_name为共享的目录名。显示一下目录内容,应为Windows机器上的共享NFS目录内容。
这样,我们编译好的程序便可以放入共享目录中,然后在目标板上运行。
例如:windows主机192.168.1.7 NFS共享了一个work目录,ARM板IP为192.168.1.9
二者通过交叉线连接,ARM板操作如下:
[root@(none) /]$
[root@(none) /]$mount -t nfs -o nolock 192.168.1.7:work /mnt/nfs/
[root@(none) /]$cd /mnt/nfs/
[root@(none) nfs]$ls
gpsdata ll test
[root@(none) nfs]$./gpsdata
handle
Reading data from robot.
[root@(none) nfs]$
以上成功挂载了windows共享的work目录,并运行了gpsdata程序
注:如出现网络不通的问题,则应检查本地连接是否有防火墙,如有,则去掉防火墙保护。
很可能会遇到以下几个问题:
1、NFS能挂载,但不能访问的问题
原因:
本地安全策略未设置为允许 Everyone 权限应用于匿名用户(默认设置)。
解决方案:
使用“本地安全策略”管理器以启用“本地策略”中的“安全选项”中的“网络访问:允许 Everyone 权限应用于匿名用户”。
2、mount -t nfs -o nolock 192.168.1.7:work /mnt/nfs/
mount: Mounting 192.168.1.7:/work on / mnt/nfs/ failed: No such device
可能的原因:
1、检查nfs server的配置是否正确!特别是/etc/exports文件的配置!(linux上的nfs服务器)
2、确认板子的内核配置中是否选择了对nfs系统的支持!(最可能的原因)
以下几个原因也可以参考:
原因
NFS 服务器尚未从用户名映射收到更新的映射。
解决方案
通过执行以下操作之一,强制 NFS 服务器刷新映射:
使用 nfsadmin server 命令执行操作,例如通过将某个值设置为当前值。
重新启动 NFS 服务器。
原因
根用户的用户标识符 (UID) 不是 0。NFS 服务器只为 UID 为 0 的 UNIX 用户授予根目录访问权限。
解决方案
将根用户的 UID 更改为 0。