硬汉嵌入式论坛

 找回密码
 立即注册
查看: 819|回复: 5
收起左侧

[LwIP] LWIP卡死在select的问题

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2023-9-18 16:52:35 | 显示全部楼层 |阅读模式
系统使用了FreeRTOS和LwIP,程序有概率卡死在select函数中。

我的程序使用了双网卡,一个使用PPP拨号访问外网,一个使用以太网。我在两个任务中有调用select,一个select用来监听所有socket的读fd,一个是在往以太网写数据的时候,监听写它的fd,如果返回失败表示lwip现在可能内存不够就不写了。
跑了一晚上,一般都是七八个小时后会卡死,卡死的时候,两个任务都卡在select函数里面。请问如何定位里面的问题,也不太好复现,似乎就是select不是可重入函数。


我发现了两个宏定义:LWIP_NETCONN_SEM_PER_THREAD和LWIP_NETCONN_FULLDUPLEX,打开这两个宏定义可以避免这个情况吗?

谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-9-18 21:13:38 | 显示全部楼层
select重入需要多任务执行,你的LwIP多任务支持是不是没有移植好。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2023-9-19 10:43:21 | 显示全部楼层
eric2013 发表于 2023-9-18 21:13
select重入需要多任务执行,你的LwIP多任务支持是不是没有移植好。

移植的是NXP SDK中的FreeRTOS LwIP例程,没加select的时候也跑过两三天,所以多任务应该没问题。就是select这个函数用着有问题,不知道是否和LWIP_NETCONN_SEM_PER_THREAD、LWIP_NETCONN_FULLDUPLEX两个宏定义有关系。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-9-20 09:13:35 | 显示全部楼层
tilblackout 发表于 2023-9-19 10:43
移植的是NXP SDK中的FreeRTOS LwIP例程,没加select的时候也跑过两三天,所以多任务应该没问题。就是sele ...

说明底层还是有问题,得排查下了
回复

使用道具 举报

3

主题

36

回帖

45

积分

新手上路

积分
45
发表于 2023-9-20 09:59:27 | 显示全部楼层
或者参考 esp-idf 中的移植呗,人家 Freertos + lwip 已经跑了 N 多年了
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2023-9-20 15:56:13 | 显示全部楼层
msr06rr 发表于 2023-9-20 09:59
或者参考 esp-idf 中的移植呗,人家 Freertos + lwip 已经跑了 N 多年了

LwIP单网卡跑问题不大的,我这个大概率是双网卡出现的问题,我也有看到说LwIP对双网卡支持不太好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 04:28 , Processed in 0.200158 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表