嵌入式技术论坛
直播中

最强海贼王

8年用户 1284经验值
擅长:MEMS/传感技术
私信 关注
[问答]

LWIP相关的线程是如何通过一个信号控制创建的呢

设备打算通过一个液晶的菜单项决定是否启动modbusTCP(通过以太网口+LWIP+LIBMODBUS+静态IP配置实现),因为LWIP这块启用与否占用不少资源,所以想通过一个开关控制是否关闭该功能。
但该功能的实现依赖LWIP创建的几个线程:etx/erx/tcip/modbustcptest,如果优雅稳定可靠地的通过开关信号(按键,菜单启停)做到这一点?

回帖(5)

LL-LING宁

2022-7-13 10:21:28
啥意思?系统运行起来以后人工决定要不要开启网络协议?
这个比较有点儿难度。重点儿在清理过程,重启就调用一个初始化函数
清理过程,你得自己写卸载网卡接口,然后几个线程可以直接 delete 。
简单点儿就是关中断,然后 delete 掉所有相关线程。
举报

最强海贼王

2022-7-13 10:21:40
一 rt-thread不支持从A线程删除B线程,因为线程有多个,信号量也不能通知多个线程,那通知各线程时用事件集?
二 从运行到关掉只要线程删掉就不会运行了;但若又从禁掉到开启,只重开各线程不重启,驱动会正常吗?
举报

LL-LING宁

2022-7-13 10:21:49
删除函数就是a删除b这样用啊。
删除一个线程容易,麻烦的是怎么清理线程运行过程中申请的内存,也就是释放线程使用的资源
重启得从 rt_hw_eth_init 开始
举报

最强海贼王

2022-7-13 10:22:00
那加入你有一个产品,根据菜单配置是否启用网络功能或者在有线方式和无线方式切换你都是怎么设计的?
举报

LL-LING宁

2022-7-13 10:22:12
禁用网络 down 掉就好了,不需要完全卸载掉。
切换就 up。
上周刚把有线的 dhcp 改了。官方给的是静态 dhcp 配置,没有在应用里动态切换。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分