LWIP移植成功了

2020-01-01 17:34发布

成功移植lwip1.3.1 1.3.2 1.4.1,裸机能跑tcp客户端和服务器。
开心之余,又有些问题需要请教了,lwip里面如何处理断线重连的问题?

下面是我实验的现象:
我在裸机上使用lwip,tcp做了服务器和客户端,在连接后把网线拔掉,tcp_poll函数还是会被执行的,这时候把网线插上(还没出现abort错误),需要重新连接(端口没变,原连接已经没反应了),连接后上一次连接的pcb仍然存在,这时候会发现轮询时候有两个pcb连接在运行。等了好几分钟后(关闭了保活设置)第一个pcb连接出现连接错误,自动断开。。。
这两个pcb占用同一个端口不会产生冲突吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
100条回答
落叶知秋
2020-01-09 02:54
落叶知秋 发表于 2013-9-7 16:06
问题已解决!
是IAR5.41编译器的BUG!lwip源码中的src/include/lwip/tcp_impl.h文件中,有这样一段宏定义 ...

更正!

第一:用了IAR 6.4(目前最新版本)进行了同样的源码编译,还是会有同样的问题(发不出数据)!
没有具体比较过汇编的异同,只知道是不同的!如果有哪位高人知道,请告知!!

第二:用TI的代码替换后,会衍生出新的问题!就是边界问题!
TI的代码比较是用的s32_t类型,即是有符号数据类型!到达了符号位后,有问题!比如0x7FFFFFFF和0x80000000!
现象是:发送的数据量到达了一定后,比较的结果不对就会导致数据传输出问题(即是停止不动)!

还在苦逼调试中……

一周热门 更多>