在VxWorks开发过程中我们经常使用FTP来作为文件传输手段,尤其是软件开发过程中的工程文件的远程加载。风河的workbench提供了一个很好的工具wftpd.exe,当然还有tftp就不赘述了。
最近一个项目上有一个需求,需要通过FTP将实验数据从设备卸载到本地。(本地主机使用客户端)
问题出现了,本地主机客户端(xftp、fileZilla)无法访问设备端!!!即Wftpd连接没问题,xftp连接不上。
问题原因在于wftp为ftp server,对接的是设备端的tfp client;而xftp为client,对接的是设备端的ftp server组件。
问题定位:设备端ftp server功能异常。
问题解决:
- 确认VIP工程里的kernel configuration中是否增加FTP server组件;这个一般都include了
- kernel configuration中查看FTP init directory和root directory是否为当前设备文件系统根路径(只要是为可访问路径即可);
- kernel configuration中FTPS_AUTH_CALLBACK_HOOK挂载到自己的回调函数(MyFtpCallback)中,如下图。
- kernel configuration中将FTPS_INSTALL_CALLBACK_HOOK定义为TRUE。
编写自己的回调函数,可以放置在usrAppInit.c中
#include <iprip.h>
#include <ipftps.h>
int MyFtpCallback (Ipftps_session *session, char *password)
{
return 0;
}
回调函数中可增加对FTP客户端访问所需的用户名和密码的判断,暂不赘述。
Kernel config配置如下图