TFTP客户端请求文件时出现「打开文件失败」错误求助
TFTP客户端请求文件时出现「打开文件失败」问题排查
我曾在NXP社区论坛发布过该问题,团队表示LWIP为开源软件,与NXP无关,对此我表示认同。
应用场景
- PC端运行TFTPD64服务器,存储所有固件文件
- MCU端运行TFTP客户端,通过文件名向服务器请求固件文件
- MCU接收固件文件后启动软件升级(擦除并写入全部闪存)
问题描述
MCU端的TFTP客户端代码大部分取自某GitHub仓库,客户端已在69端口正常启动,但向服务器请求文件时出现「打开文件失败」错误,尽管服务器已指向该文件且文件可用。
相关代码
客户端初始化代码
void tftp_example_init_client(void) { void *f; err_t err; ip_addr_t srv; int ret = ipaddr_aton(LWIP_TFTP_SERVER_IP, &srv); if(ret != 1) { printf("ipaddr_aton failed \r\n"); } err = tftp_init_client(&tftp); if(err != ERR_OK) { printf("tftp_init_client failed, error : %d \r\n", err); } f = tftp_open_file(LWIP_TFTP_FILENAME, 1); if(f == NULL) { printf("failed to open file , %d \r\n", f); } err = tftp_get(f, &srv, TFTP_PORT, LWIP_TFTP_FILENAME, TFTP_MODE_OCTET); if(err != ERR_OK) { printf("tftp_get failed \r\n"); } }
tftp_open_file函数定义
static void * tftp_open_file(const char* fname, u8_t is_write) { snprintf(full_filename, sizeof(full_filename), "%s%s", LWIP_TFTP_BASE_DIR, fname); full_filename[sizeof(full_filename)-1] = 0; printf("%s \r\n",fname); if (is_write) { return (void*)fopen(full_filename, "wb"); } else { return (void*)fopen(full_filename, "rb"); } } static void* tftp_open(const char* fname, const char* mode, u8_t is_write) { LWIP_UNUSED_ARG(mode); return tftp_open_file(fname, is_write); }
补充信息
#define LWIP_TFTP_SERVER_IP "192.168.225.20" #define LWIP_TFTP_FILENAME "0223.bin" #define LWIP_TFTP_BASE_DIR "\\"
TFTP服务器错误截图

恳请各位帮忙解决该问题,谢谢。
内容的提问来源于stack exchange,提问作者lily amazon
相关产品推荐
相关产品推荐

