OpenEdv-开源电子网

标题: LWIP+UCOSIII发送大量数据时卡死 [打印本页]

作者: ExcaliburXP    时间: 2021-11-27 14:29
标题: LWIP+UCOSIII发送大量数据时卡死
STM32F407的板子,UCOS版本3.0.3,先后尝试了LWIP1.4.1和2.1.2,结果相同。测试程序:两个主线程做TCP服务端,监听两个不同的端口,各开一个子线程用于发送数据。其中一个子线程每10ms发送一包40*1024字节的数据包到客户端。
客户端程序在电脑上。
实验现象:
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN     1u,实验多次,最长不超过10分钟,LWIP卡死在等待某信号量上。卡死后大约2秒,串口信息提示memp_pool已满。
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN     0u,实验两小时,程序运行正常,没有卡死。
在os_cfg.h中#define OS_CFG_ISR_POST_DEFERRED_EN     1u,且在ETH中断函数void ETH_IRQHandler(void)中,添加OSIntEnter();和OSIntExit();  实验半小时,程序运行正常,没有卡死。

请问:
#define OS_CFG_ISR_POST_DEFERRED_EN  1u   开始延迟中断  功能与OSIntEnter();和OSIntExit(); 有何关联?开启延迟中断后,在有系统操作的中断函数中必须使用OSIntEnter();和OSIntExit(); 吗?

谢谢!




作者: gjs13030247996    时间: 2021-11-27 15:14
可以参考一下这个链接看一下:https://www.cnblogs.com/shanshuilanren/p/3669674.html
作者: lrzxc    时间: 2021-11-28 18:57
合格的二楼啊




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.4