如题,设备做TCP Server,通过调试助手连接设备,连接两次之后再次发起连接无法连接到设备。
其中,设备端之前使用stm32f207,之后改用GD32F407,网络使用DM9000,软件方案采用RTT+LWIP,使用st芯片无此现象,而GD有此问题。甚至出现网络无法初始化情况,之后通过增加上电复位延时时间,初始化无问题:
但出现新问题就是TCP连接两次之后连接不上,而单步却可以,通过wireshark抓包发现:

问题出在第三次握手,返回的报文却是挥手应答报文。
单步可以而全速运行不行的情况一般出现在时序上,而DM9000通过FSMC并行传输,之后通过在发送数据任务,通过加入一小段延时,问题得以解决。
据个人理解,应该是上一帧数据还没发送出去,下一帧就来了,然后下一帧数据未能发送出,保存在发送缓冲区中,之后经过下次触发发送时,将数据发送出。通过加入延时之后,确保上一帧数据发送出。

volatile void tx_ack_delay(void)
{volatile uint32_t i = 0xef;uint8_t a = 0;while(i--){a++;a++;a++;a++;a++;a++;}
}
static void eth_tx_thread_entry(void* parameter)
{struct eth_tx_msg* msg;rt_base_t temp_isr;while(1){if(rt_mb_recv(&eth_tx_thread_mb, (rt_uint32_t*)&msg, RT_WAITING_FOREVER) == RT_EOK){struct eth_device* enetif;RT_ASSERT(msg->netif != RT_NULL);RT_ASSERT(msg->buf   != RT_NULL);enetif = (struct eth_device*)msg->netif->state;if(enetif != RT_NULL){/* call driver's interface */if(enetif->eth_tx(&(enetif->parent), msg->buf) != RT_EOK){rt_kprintf("transmit eth packet failed\n");}}/********************加入发送延时***************************/rt_enter_critical();  //关闭调度器tx_ack_delay();       //延时小段时间rt_exit_critical();   //开调度器/* send ACK */rt_sem_release(&(enetif->tx_ack));}}
}

LWIP-TCP Server连接两次之后无法连接问题相关推荐

  1. 两个html如何连接,两个路由器怎么连接图解设置

    问:两(2)个路由器怎么连接才能够上网?有没有两(2)个路由器连接图片? 答:如果想把两个路由器连接起来上网,连接方法有2种:1.无线连接:2.有线连接.下面本文进行详细的介绍说明. 注意问题: (1 ...

  2. 计算机网络两个路由连接,两个路由器怎么连接如何设置才能同时上网的方法教程...

    为什么要2个路由器连接起来呢?1个是由于电脑多了网线插口不够用,2个是如果是无线路由器可以让更大的空间可以收到无线信号上网,下面主要介绍有线连接的方式. 需要的设备:原来的路由器,新买的路由器 第一种 ...

  3. Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接

    Oracle 多表查询总结 笛卡尔集现象: 笛卡尔集会在下面条件下产生: – 省略连接条件 – 连接条件无效 – 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在where加入有效的连接条件. O ...

  4. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_关于TCP/IP,必知必会的十个问题!...

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养. TCP/IP十个问题 TCP/IP十个问题 一.TCP/IP模型 TCP/IP协议模型(Trans ...

  5. python与sql连接不上_Python连接不上SQL Server的两种根治思路

    连接不上数据库,首先可以排除是代码的问题,连接方式都是千篇一律的. 大多数问题都是本机的两个原因造成的,1.服务没有开启,2.没有启动SQL配置的TCP/IP 下面给出统一解决方案: 首先从开始菜单找 ...

  6. nodejs TCP server和TCP client如何建立连接

    首先客户端和服务器端通信得需要一个消息结构,我用如下的构造函数创建一个消息结构,包含消息正文和消息类型(method): function message(_data,_method = '') {_ ...

  7. 网络调试助手TCP server不能成功连接

    <第一次写博客,开始打算记录学习路上的问题,以方便巩固和讨论,还请多多包涵> 正文: 在使用网络调试助手时,想一个建立TCP server,一个建立TCP client,两者之间进行通信, ...

  8. SQL server 两台服务器间连接查询

    --两台服务器间连接查询: --建立连接: sp_addlinkedserver hs sp_addlinkedserver hs1 EXEC sp_addlinkedsrvlogin 'hs', ' ...

  9. stm32 网络 服务器通信协议,利用stm32的lwip TCP/IP协议栈的通信的思路

    利用stm32f103vet6作为平台,enc28j60网卡,lwip tcp/ip作为协议栈进行相应的程序编写. Stm32作为服务器与stm32作为客户端程序编写的基本步骤,思路清理: 1.stm ...

最新文章

  1. 【驱动】GPIO 作为按键时的 设备树 配置
  2. 常用Linux Shell命令组合
  3. 自动化测试pythontest_自动化测试教程-Pytest的基本应用
  4. pythony语法小练习
  5. 安卓服务Service详解
  6. python--numpy
  7. c++中介者模式mediator
  8. csv去重 python_python去重函数是什么
  9. 插入网站连接_网站开发与网页制作
  10. JavaBean、bean 、POJO、PO、DTO、VO、BO 、EJB、EntityBean
  11. 谷歌ai人工智能叫什么_Google I / O 2017的“ AI First”口号
  12. 数据结构——p = new Lnode和Lnode *p有什么区别
  13. 【Beta】 第六次Daily Scrum Meeting
  14. dcos 正确的查看日志的姿势
  15. 让数据快速使用, “无代码”新贵Nextion BI高效解决企业“BI”难
  16. Python攻关之模块(2)
  17. [Cortex-M3]-3-分散加载文件解析(.sct)
  18. 关于编程学习的心态与方法
  19. 4 计算机系统的异步性,操作系统复习资料.doc
  20. 《AutoCAD全套园林图纸绘制自学手册》一1.3 园林布局

热门文章

  1. 增强低频和高频 matlab,实验名称高斯低频滤波及高频增强滤波.doc
  2. python 领英爬虫
  3. 【算法笔记】极客时间 算法面试通关40讲 笔记  覃超
  4. 视频理解论文实验笔记2014-2022
  5. 设置和取消Excel限制保护的两种方法
  6. java 保存gif图片_java gif图片保存处理逻辑
  7. 社区发现算法原理与louvain源码解析
  8. matlab pca函数怎么用,matlab的pca函数说明
  9. 超声波气象站和常规气象站的区别
  10. k8s中将flannel网络切换calico网络