2010年(49)
分类: 嵌入式
2010-09-07 11:17:04
1开启FTP server服务
在tornado
组件 |
对应的宏定义 |
FTP server |
INCLUDE_FTP_SERVER |
FTP client |
INCLUDE_FTP |
Anonymous FTP |
INCLUDE_FTPD_ANONYMOUS_LOGIN |
FTP server security |
INCLUDE_FTPD_SECURITY |
在vxworks的组件配置树目录里,第一次当我想开启FTP server服务时,我发现FTP client组件已经被包含了。后来我在configAll.h文件中发现它定义了宏INCLUDE_FTP,所以默认的情况下FTP client组件总是被包含的。
然后我包含了FTP server后发现FTP server security组件会自动被包含进来。在包含了上述三个组件的情况下我编译生成vxworks下载到板子中后,用leapftp连接板子的ftp server,发现连接不上。后来我通过target server调试时,用launch borower查看任务发现并没有和FTP server的任务启动。
后来,我把FTP client组件去掉了,只包含FTP server和FTP server security两个组件,生成vxworks下载到板子后,用leapftp连接板子发现板子做出了回应但是登陆不上去。我查看了vxworks系统的任务,发现此时启动了tFtpdTask任务。此时我用匿名登陆以及用户登陆都不行。我用的用户是在config.h中定义在DEFAULT_BOOTLINE中的用户名和密码。当然我们可以添加用户名和密码。具体的查看loginLib。
此后,我把FTP server security组件也去掉了,此时我仅仅包含了FTP server组件。生成vxworks下载到板子后,用leapftp连接板子发现使用用户名和密码是可以登陆的,并且可以复制文件到板子的TFFS文件系统。不过此时匿名登陆是不行的。同样,我查看了vxworks系统的任务,发现此时启动了tFtpdTask任务。
而后,我添加了Anonymous FTP组件,我就可以匿名登陆了,但是在匿名的情况下是不能复制文件到vxworks系统的文件系统里的,提示没有权限!。
最后,我把自己的工程文件(.c)添加到工程里面去,编译生成vxworks下载到板子中,运行发现tFtpdTask竟然没有启动!就谈不上leapftp对板子的连接了。相当奇怪。
注:对以上问题我没找到原因,不过我想了想解决的办法:找到TORNADO的ftp server的源码ftpdLib.c,自己启动这个任务。
2 FTP bug
由于组件FTP Server存在bug,LeapFTP等FTP软件不能显示文件列表,但是可以上传文件。但在torando的target shell中可以使用DOS命令行。比如ls查看当前目录下的文件列表,cd到某个目录等等。(注:必须包含FTP server才能使用DOS命令)两者结合起来还是能够完成文件传输及查看的。
注:对于LeapFTP等FTP软件不能显示文件列表问题网上也有讨论,我也下载了一篇解决该问题的文章。其主要思想就是找到tornado FTP的源码,对其读取列表的函数进行修改,然后使用修改后的程序。时间有限,未作尝试!