没有合适的资源?快使用搜索试试~ 我知道了~
首页LWIP的pcb-〉next 指向pcb自身死机问题解决方法.doc
资源详情
资源评论
资源推荐
本人使用的 LWIP 版本号是 LWIP 1.3.2 ,并且使用 UCOSII V2.89 系统。
在移植使用的过程中,使用 LWIP 只做客户端或服务端是没有问题的。后来客户端和服务端都集合使用的时
候,碰到了一个 BUG,for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) , 在这个地方进入死循环了,
即 pcb 块申请和释放的时候出错了, pcb->net 指向自己本身了。后来在网上查了一大堆资料,说是
LWIP1.3.2 版本就有这个问题,而 1.4.1 版本没有。为了解决这个问题就尝试去移植 LWIP1.4.1 这个版本,然
后却发现 1.4.1 与 1.3.2 版本的邮箱和信号量函数接口都不同了,在 UCOSII,V2.8.9 下已经不能满足了。相
当于之前移植的 sys_arch.c 已经不能适应了。LWIP1.4.1 在网上的 sys_arch.c 例子基本都是基于 UCOSIII-
V3.0.x 来实现。所有如果更换 LWIP1.4.1 的话,最好也要去替换 UCOSII。而又由于之前的工程中已有使用
UCOSII,再去替换工作量又相当大,所有想找到一种方式,直接在 LWIP1.3.2 版本下解决 LWIP 的 pcb->net
指向自己本身的问题。
后来发现这个问题是由于 LWIP 里面的 TCP 块在没有接连的情况下,不用 close 就会自动释放。如果 LWIP
自己释放过了,而你自己又操作 close 或 abort 释放一次,那么 TCP_PCB 内存块就出现问题了。那么问题既
然找到了,那就想办法解决。本人想到了一个修改最少最简便的方法来解决这个问题,仅需修改 2 个.c、1
个.h 文件即可解决这个问题。修改情况如下:
需改内容 解释
文件名称 添加内容(增加红色字体)
tcp.h /* the TCP protocol control block */
struct tcp_pcb {
/** common PCB members */
IP_PCB;
/** protocol specific PCB members */
TCP_PCB_COMMON(struct tcp_pcb);
..............................省略......................................
/* KEEPALIVE counter */
u8_t keep_cnt_sent;
u8_t pcb_used;
};
在 struct tcp_pcb 结 构 体 中 增 加 一 个 字
段,pcb_used。这个字段值 = 0 或 = 1。
0 代表这个 TCP_PCB 块没有在使用,已经
释放。
1 代表这个 TCP_PCB 块正在使用,占用内
存。
memp.c void
memp_free(memp_t type, void *mem)
{
struct memp *memp;
struct tcp_pcb *pcb;
if(type == MEMP_TCP_PCB ){
pcb = (struct tcp_pcb *)mem;
if(pcb->pcb_used == 0){
return;
}
pcb->pcb_used = 0;
}
SYS_ARCH_DECL_PROTECT(old_level);
在 释 放 TCP_PCB 块 的 时 候 , 如 果
pcb_used==0,那么这个 TCP_PCB 块已经
释放过了,可能是没连接的块系统自己释
放, 也 能是 自己 误 操作 , 多次 释放 。总
之,不管什么原因,已经释放过的不能再
释放了,所有这边直接 return 退出。没有释
放的正常释放,只是字段 pcb_used 置 0。
Vicious旭
- 粉丝: 0
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2