lwip 开发 sntp 与 tcp 不能同时工作的奇怪问题
最近基于 stm32f107 做lwip 网络开发, 开启 dhcp 和 sntp 服务, 一个udp 并且是多播 和 一个tcp,开发是基于 stm32cube 工具生成的代码,LWIP 配置如下:
工作时出现了很奇怪的问题:
如果先开 sntp ( 执行sntp_init() ) 那么 后面的 tcp 过一段时间后会无法主动发送数据,
如果先开 tcp , 则 sntp 只能执行一次,不根据设置的 SNTP_UPDATE_DELAY 定时同步时间。
仿真发现 ,如果先开 sntp ,则后面tcp 的 tcp_poll 回调函数无法回调,如果先开 tcp 则 sntp 的回调函数无法被执行。
问题很奇怪,总之谁先初始化,谁就能正常工作,谁后初始化,谁就有异常!
怀疑过 很多东西,曾把 tcp 与 udp 的数量增加到 5,5,或,5,6 ,都还是有一样的问题。
最后怀疑是回调定时器的个数可能不够用,找了上图配置界面没找到相关的设置参数,最后在 lwip 源码中的 opt.h 中找到
#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__
#define MEMP_NUM_SYS_TIMEOUT (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0))
#endif
发现没有 LWIP_SNTP 项,果断加上 LWIP_SNTP :
#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__
#define MEMP_NUM_SYS_TIMEOUT (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_SNTP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0))
#endif
重新编译工程,问题完美解决!!SNTP 与 TCP 均能正常工作,回调任务都能正常回调。
lwip 开发 sntp 与 tcp 不能同时工作的奇怪问题相关推荐
- android手机版tcp或者udp通讯测试工具,可以用于工业设备或者系统开发时间测试tcp或是udp连接通讯是否正常工作
TUtool 介绍 由于工作需要一款安卓的tcp udp测试工具,而市场里没有或者不好用,或者都是广告,现在个人开发者又不让发布应用了,小巧好用不收集用户信息的不收费没有广告的小工具只能自己用,哈哈. ...
- Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令
Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录 Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 info server info clie ...
- 《 Python程序设计项目案例》— 用Python开发的基于TCP通讯协议的私人聊天室 (期末大作业、结课作业、课程设计、毕业设计)
基于Python与TCP协议的私人聊天室(GUI交互界面,用户注册.用户登录.实时聊天,文件上传与下载) 用Python开发的基于TCP通讯协议的实时聊天通讯和文件共享应用 目录 基于Python与T ...
- 某百亿量化金融公司base北上杭深现招岗位:C++量化系统开发工程师年base40-80万+bonus工作职责1. 参与交易平台的设计、开发与测试,实现交易策略、风控等需求;2. 开发交易
某百亿量化金融公司 base北上杭深 现招岗位:C++量化系统开发工程师 年base40-80万+bonus 工作职责 1. 参与交易平台的设计.开发与测试,实现交易策略.风控等需求: 2. 开发交易 ...
- 远程控制软件开发_软件开发人员的远程工作
远程控制软件开发 Advantages 优点 Work from home 在家里工作 Manage your time 管理你的时间 Work when you are more productiv ...
- esp8266系列学习(四)——esp8266+手机端+路由器(路由可上网)组成物联网与广域网建立tcp通信的工作模式设定方法
四.esp8266+手机端+路由器(路由可上网)组成物联网与广域网建立tcp通信的工作模式设定方法 前言:esp8266模块和手机同时接入在一个路由下,通过路由器建立二者之间的tcp通信,模块设置为客 ...
- 【TCP】【JPerf】基于STM32H7开发板的TCP性能测试
1.源码已上传,见路径https://download.csdn.net/download/guanlizhongxintishi/11197638 2.使用jperf-2.0.0工具对开发板进行TC ...
- 工具推荐:程序员必备的 7 个开发工具,让你的工作效率提升200%
如果要想早点完成自己的工作,就必须借助于一些开发工具来提高自己的工作效率,今天就给大家总结一些工作中常用到的工具. Everything 不知道大家在日常工作中会不会遇到这样的情况,每次找文件的时候总 ...
- 《lwip学习10》-- TCP协议
TCP服务简介 UDP 运载的数据是以报文的形式,各个报文在网络中互不相干传输, UDP 每收到一个报文就递交给上层应用,因此如果对于大量数据来说,应用层的重装是非常麻烦的,因为UDP 报文在网络中到 ...
最新文章
- 多项式乘法 FFT模板
- Github 开源了新型肺炎防疫项目,助力抗击疫情!
- estemplate 导入MySQL_[数据库]es~通过ElasticsearchTemplate进行聚合操作
- 样本不均衡、长尾分布问题的方法整理(文献+代码)
- 用jQuery做点击下箭头改变方向
- [转载] 【C/C++】Vector的创建与初始化方法
- spark数据倾斜解决之提高并行度
- WiFi语音智能家居控制系统(一)
- 什么是SNP遗传力?
- 一、物流的基本概念|1.2现代物流管理的形成和发展
- 搜狗推广管家 v8.3
- [原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server)
- Vue3+Ant-design项目启用ts/typescript
- Linux ping命令
- RHCE认证考试心得(转)
- Python3的安装步骤
- linux 安装监听中文,cacti中文安装配置与监控wWindows Server和Linux服务器
- VLSI数字信号处理系统——第二章迭代边界
- 今日头条信息流广告浅尝截止
- 腾讯企鹅号新分成策略试运行 引领内容产业回归初心
热门文章
- 修改Tomcat可支持get传参方式的url长度,get形式
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
- 转:WebApi(一)
- XDOJ-1093-一元三次方程
- java jdk1.5 对for循环遍历的优化
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- Deseq的理论基础
- UA MATH567 高维统计III 随机矩阵3 集网与覆盖
- 脑与认知科学1 脑的基本结构下
- 用CFree写的Windows SDK 画线程序