+ -
当前位置:首页 → 问答吧 → 关于arm文件传输

关于arm文件传输

时间:2007-06-19

来源:互联网

现在正在做一个工程,需要在两个嵌入式arm板(ep9315和pxa270)上搭建一个文件传输的平台,原来没有作过,所以想请教高人专家们:应该如何搭建?能否搭建类似tcp/ip的简单协议来传输?
谢谢      

作者: eafoluke   发布时间: 2007-06-19

我也有这方面的需求,也不知道怎么做
打算使用tftp传输文件,现在tftp-client已经可以了,板子可从PC机的/tftpboot目录下get 文件。现在我想在目标板上作一个tftp-server,不过现在还没有头绪---新手,望大家多多帮助!!
楼上的多多交流      

作者: zhouliang55   发布时间: 2007-06-20

我看了有的说下在tftpd.tar.gz交叉编译,下载到目标上就可以,但是我下载了编译也通过下载也运行,ps命令也可以看到./tftpd在运行,也按照他的说明在/目录下建立了一个tftptab目录,但是我在用PC机子在tftp目标机时,提示超时失败。还有目标机在/etc/目录下根本就没有xined.conf文件,请问怎么才能启动tftp-server能,arm板子用的内核版本是arm-linux-2.4.19,busybox版本为busybox-1.00,我在busybox的选项里的inetd也打上了沟,不过还是没有用      

作者: zhouliang55   发布时间: 2007-06-20

是不是我们问的问题太简单,怎么没有人响应呢?
最近比较急,请那个大虾指点一下,不要觉得很简单不屑于说
对于我们这些新手来说你们点滴指导都是很感激的      

作者: zhouliang55   发布时间: 2007-06-21

这个好像没有什么困难的啊?
您需要安装xinetd的包,通过它来启动tftpd服务!
如果您嫌配置这些麻烦,自己写个简单的程序交换文件也可以阿!
这些操作,linux howto文章中都有说明!      

作者: 风雪狂客   发布时间: 2007-06-21

版主,我下载了xinetd.2.3.14版本,交叉编译CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/usr/src/arm-xinetd; make;后在xinetd.2.3.14目录如下:
aclocal.m4    config.h.in    configure.in  install-sh   todo
audit         config.log     contrib       libs         xinetd
CHANGELOG     config.status  COPYRIGHT     Makefile     xinetd.spec
config.guess  config.sub     en720.sh      Makefile.in  xinetd.spec.in
config.h      configure      install       readme

[root@localhost xinetd-2.3.14]# ls contrib/
empty.conf  xinetd  xinetd.conf  xinetd.d

其中xinetd为可执行脚本,xinetd.conf为xinetd的默认配置文件(这里就和pc机上的一样,同样使用了xinetd.d/目录下的xinetd要启动的服务乡)

可是在xinetd/目录下还有一个xinetd可执行文件,
[root@localhost xinetd-2.3.14]# file xinetd/xinetd
xinetd/xinetd: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped

[root@localhost xinetd-2.3.14]# file contrib/xinetd
contrib/xinetd: Bourne-Again shell script text executable
于是现在我得到两个xinetd文件,一个是脚本文件,一个是可执行目标文件,

请问,这可两个文件在嵌入式下是如何应用的?      

作者: zhouliang55   发布时间: 2007-06-23

TFTP来传输目标板启动需要的内核映象文件zImage和ramdisk
首先必须安装tftp软件包,在RedHat Linux安装CD3中找到tftp文件包:tftp-0.32-4.i386.rpm,
[root@localhost] rpm –ihv tftp-server-0.32-4.i386.rpm
系统自动安装好tftp服务器;
进入目录/etc/xinetd.d
[root@localhost]cd /etc/xinetd.d
[root@localhost]vi tftp
–注:只有在安装了tftp服务后,才会出现tftp文件
  修改其中disable和server_args项,其余可保持不变。以下为一个完整的tftp文件:
  Service tftp
  {
  socket_type = dgram
  protocol = udp
  wait = yes
  user = root
  server =/usr/sbin/in.tftpd
  server_args = -s /tftpboot -- 根据需要设置tftp服务默认目录,缺省的指定输出文件目录是/tftpboot,文件必须放在该目录下才能被输出。
  disable = no -- 默认为yes,应修改成no
per_source = 11
  cps = 100 2
  flags = IPv4
  }
我做嵌入式软件移植的时候是将文件做到linux文件系统里的,没有所用NFS服务。交叉编译也是在PC机上完成的,通过U-boot 烧到 开发班。      

作者: sun11   发布时间: 2007-06-25

首先谢谢sunll.
我的板子现在都已经跑起来了,tftp客户端服务端在PC主机上也都可以了,
板子的linux系统的tftp客户端也可以了,内核和应用程序都可以通过tftp到板子上运行起来.

我的问题是在arm板子安装tftp服务端,因为我想作一个文件的传输的工作.版主建议自己作一个交换文件,而我也考虑了一下,网络编程我可以分配一个1024的buffer,也就是说每次可以传输1K字节的数据,但是我的文件大部分都在4~5M的大小,可能以后还会有更大的文件,这样我要来回发送数据几千次或者上万次.所以我还是主张移植tftp服务端.以下是我安装xinetd-2.3.14和tftpd.tar.gz的过程和出现的问题,请版主和大虾们再给些指导::

主机环境:redhat 9.0 内核版本:2.4.19
嵌入式arm-linux  内核:2.4.19 arm-linux-gcc为2.9.35
我下载了一个tftpd.tar.gz包交叉编译产生了一个tftpd的执行文件,其属性如下:
[root@localhost tftpd-1.3]# file tftpdtftpd: ELF 32-bit LSB executable,ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (usesshared libs), not stripped
我把他下载到arm板子上的/usr/sbin/目录下,创建/tftpboot目录(在其readme文件中有说明).运行可是从PC机还是不能get目录/tftpboot下的文件,超时退出,我想应该是没有连接到arm板上的tftpd服务器.请问,这里是不直接将tftpd可执行程序下载到arm板上运行就可以了,还有没有另外的设置????????
以肯定的是 我的arm板子上tftp-client是好的,PC端的客户端服务端都是可以的.

想起版主说要起动xined服务,于是下载了xinetd-2.3.14,
交叉编译:
export LDFLAGS=-L/usr/local/arm/2.9.53/lib
export CFLAGS=-l/usr/local/arm/2.9.53/include
CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/usr/src/arm-xinetd
make
没有执行make install,网上说这一步不能执行,因为你要安装程序到arm板子上,只有将配置文件下载到你的嵌入式系统里.
编译生产生一个可执行的xinetd二进制文件
可是在原文件包里发现xontrib/目录下有下xinetd的配置文件:
[root@localhost xinetd-2.3.14]# ls contrib/
empty.conf  xinetd  xinetd.conf  xinetd.d
这时看到的和PC机配置一样的脚本,xinetd为xinetd服务脚本,xinetd.conf和xinetd.d/都是一些服务脚本,但是在xinetd.d/目下没有看到tftp脚本.
注意:这里有两个xinetd文件,一个是脚本文件,一个是可执行的二进制文件.我在PC机上也发现这两个文件1)脚本文件/etc/init.d/xinetd   (2)二进制可执行文件
/usr/sbin/xinets
如下:[root@localhost xinetd-2.3.14]# ls  contrib/
xinetd.d/chargen      cups-lpd  daytime-udp  echo-udp  servers  sgi_fam  timechargen-udp  daytime   echo         rsync     services  time-udp

我把PC主机的/etc/xinetd.d/tftp拷贝到上面的目录中,因为我想这两个应该都是一样的(不知道行不行)

接下来把xinetd.conf文件和xinetd.d/目下的文件拷贝到我的嵌入式系统的/etc/目录下,将xinetd可执行二进制文件拷贝到我的嵌入式linux的/usr/sbin/目录下,脚本文件拷贝到/etc下面,通过修改我的嵌入式系统启动脚本文件 /etc/init.d/rc.sysinit文件执行/etc/xinetd脚本程序.
到这里我有一个疑问,xinetd脚本文件和xinetd二进制文件分别有什么作用,怎么启动的,在哪里启动他们好呢??请哪个高手指点一下!!!!!!!!!!!!!!!!!!!
我运行xinet脚本程序的时候发生错误:/tftpboot # /etc/xinetd start
/bin/sh: /etc/xinetd:notfound
请问这是怎么回事?我看了一下这些配置工具和PC机环境下的一模一样,我想是不是要修改这些配置文件,才能适合arm系统呢?紧急,哪位大虾指点一下!谢!!!!!!!!!!!!!      

作者: zhouliang55   发布时间: 2007-06-26