关闭window防火墙即可。
这种情况,可以在uboot下,ping一下开发板和主机,很可能ping不不通,说明是网络的原因。
这个问题很久了,还是回答一下,帮助后来的朋友。
原因:设置错误造成。解决方法:重新设置服务器来解决此问题。
如下参考:
1.首先打开个人FTP软件,弹出如下界面。个人可选择直接在窗口中输入相关信息或通过网站管理器保存个人用户信息。使用站点管理器保存个人信息,如下图。
2.打开站点管理器后,将个人的相关信息输入即可登录,如下图。
3.从右侧图片可以看出,个人已经成功登录,但是上传图片时,服务器不安全,不支持TLS。
4,如果你发现在FTP登录主机地址,所以实际上,尽管个人过去也可以登录到服务器通过特殊IP上传文件,但实际上属于对服务器的IP地址可以登录FTP地址,文件上传,如下图。
5.但只要FTP登录主机地址与个人服务器相同即可,如下图。
6.最后,通过上传一个文件,您可以看到您的问题已经解决,您可以上传一个新文件。
接收数据是按找特定的协议吧,也就是帧的形式。本身的传输过程会有误码的,这要看你的环境,接线等等。
上传的网络空间有大小限制所以传过限制的大小后自动被切断而错误
第一步:用tftpserver.c中的err_t tftp_send_message(struct udp_pcb *upcb, struct ip_addr *to_ip, int to_port, char *buf, int buflen)向指定地址发送写文件请求;
第二步:用tftpserver.c中的void process_tftp_request(struct pbuf *pkt_buf, struct ip_addr *addr, u16_t port)函数处理回应,如果接收到回应后,process_tftp_request函数中的int tftp_process_write(struct udp_pcb *upcb, struct ip_addr *to, int to_port, char *FileName)函数发送数据文件。
基本流程就是上述所说,但是tftp_send_message()函数中的参数struct udp_pcb *upcb,数据结构非常复杂
struct udp_pcb {
/* Common members of all PCB types */
IP_PCB;
/* Protocol specific PCB members */
struct udp_pcb *next;
u8_t flags;
/* ports are in host byte order */
u16_t local_port, remote_port;
#if LWIP_IGMP
/* outgoing network interface for multicast packets */
struct ip_addr multicast_ip;
#endif /* LWIP_IGMP */
#if LWIP_UDPLITE
/* used for UDP_LITE only */
u16_t chksum_len_rx, chksum_len_tx;
#endif /* LWIP_UDPLITE */
/* receive callback function
* addr and port are in same byte order as in the pcb
* The callback is responsible for freeing the pbuf
* if it's not used any more.
*
* ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf
* makes 'addr' invalid, too.
*
* @param arg user supplied argument (udp_pcb.recv_arg)
* @param pcb the udp_pcb which received data
* @param p the packet buffer that was received
* @param addr the remote IP address from which the packet was received
* @param port the remote port from which the packet was received
*/
void (* recv)(void *arg, struct udp_pcb *pcb, struct pbuf *p,
struct ip_addr *addr, u16_t port);
/* user-supplied argument for the recv callback */
void *recv_arg;
};
开启TFTP服务器,在路由器的upnp设置里面是可以设置开启的
但是有些路由可能会直接升级不成功,因为可能是软件不支持,点开upnp以后,路由器就会假死,接着就不能上网!
您可以试试以下这个软件
软件名称: Cisco TFTP Server 汉化版(姜鹏) V1.1
软件简介: CISCO公司出品的 TFTP 服务器,常用于CISCO 路由器的IOS升级与备份工作。也可用于个人建立TFTP服务器,进行文件传输。软件中附带了一个命令行方式的TFTP 客户端,文件名为T,用它可以测试你建立的TFTP服务器。
升级说明:1、 请到TL-LINK网站下载对应版本最新的升级程序或者联系技术支持人员获取升级程 序,下载和升级前请关闭电脑防病毒软件;
2、 升级请在Win xp、WinNT 、 Win2000 、Win98 、 Win95 的操作系统下进行;
3、 打开“我的电脑”-“工具”-“文件夹选项”-“查看”,将“隐藏已知文件的扩展名”选项前面的小钩去掉,然后按“确定”;
4、 将升级包解压缩,产生的文件夹内,将Tftpd32.exe双击打开不要关闭;
5、 保持解压得到得文件内*.bin文件和设备升级界面的文件名相同;并注意升级过程不可断电。
6、 点击路由器“软件升级”界面的“升级”按钮,升级成功后在TFTPd32的窗口上会出现升级成功的信息;
7、 升级成功后,请检查路由器参数设置;
本文标签:stm32tftp传输文件不正确