0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ethernetif_input和tcpip协议栈线程的作用

嵌入式情报局 来源:嵌入式情报局 2024-03-20 10:01 次阅读

1、最近项目遇到的问题

最近在stm32上用cubemax移植了lwip协议栈,lwip就不用过多介绍了,(lightweight IP)一款轻量级的开源TCP/IP协议栈,专为嵌入式系统设计,具有小巧高效、可裁剪性强,主要是已经发展和广泛应用多年,可靠性还是可以的,基本上大多数嵌入式系统的网络通信需求都可以满足。

然而最近项目中通信数据量大一点,老是send超时,运行时间久了还会直接挂在ethnetif_input,这可把我给整郁闷了。

最后定位到原因还是lwip适配的两个线程优先级分配得有问题,导致FreeRTOS信号量超时异常。

2、两个主要线程

在lwIP协议栈中,ethernetif_input线程和tcpip协议栈线程是两个核心的线程,在处理网络数据包和执行TCP/IP协议栈功能时的作用就不用多说了,下面简单的介绍下两个线程的作用:

ethernetif_input线程:

ethernetif_input线程负责接收来自网络接口(如以太网接口)的数据包,并将其传递给lwIP协议栈进行处理。

这个线程通常运行在较低的优先级,因为它主要负责接收和缓存数据包,而不涉及复杂的协议处理。

在实际应用中,可以根据系统的需求和性能进行调整,但通常情况下,ethernetif_input线程的优先级相对较低。

tcpip协议栈线程:

tcpip协议栈线程是lwIP协议栈的核心线程,负责处理TCP/IP协议栈的各种功能,包括TCP连接管理、IP数据报的路由和转发、以及UDP数据包的处理等。

由于tcpip协议栈线程需要处理复杂的协议逻辑和数据包处理,因此它通常运行在较高的优先级。

保持tcpip协议栈线程的较高优先级有助于确保网络数据包的及时处理和协议栈功能的高效执行。

在实际的嵌入式系统设计中,需要根据具体的硬件平台和应用场景来合理设置这两个线程的优先级。通常情况下,可以通过操作系统或者裸机编程的方式来配置线程的优先级,以满足系统对网络数据处理和协议栈功能的实时性和效率要求。

3、总 结

所以通常情况下,tcpip协议栈线程的优先级需要设置得更高,因为tcpip协议栈线程需要处理复杂的协议逻辑、数据包处理、连接管理等任务,保持tcpip协议栈线程的较高优先级可以确保网络数据包的及时处理和协议栈功能的高效执行,从而提高系统的响应速度和网络通信的稳定性。

ethernetif_input线程通常负责接收和缓存数据包,相对来说不涉及太多复杂的处理逻辑,因此可以设置相对较低的优先级。

经过优先级调整后,跑了2天都没有出现异常问题。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620862
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1272

    浏览量

    78299
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33621
  • LwIP
    +关注

    关注

    1

    文章

    82

    浏览量

    26620
  • 线程
    +关注

    关注

    0

    文章

    489

    浏览量

    19495

原文标题:在单片机上运行Lwip线程优先级很重要~

文章出处:【微信号:嵌入式情报局,微信公众号:嵌入式情报局】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在lwip历程中有ethernetif_set_link这样一个线程是否可以删除?

    请教下,在 lwip 历程中,有 ethernetif_set_link 这样一个线程, 是不是在初始化完成后就可以删除啊 ?? /* Create the Ethernet link
    发表于 04-28 08:22

    基于μCOS-Ⅱ的嵌入式TCPIP_协议的研究与实现

    基于μCOS-Ⅱ的嵌入式TCPIP_协议的研究与实现
    发表于 08-20 09:28

    一种新的嵌入式TCPIP协议的研究与实现

    一种新的嵌入式TCPIP协议的研究与实现
    发表于 08-20 10:37

    ARM开发教程之基于ARM微处理器TCPIP协议LwlP实现

    ARM开发教程之基于ARM微处理器TCPIP协议LwlP实现
    发表于 08-24 22:42

    移植LWIP时候遇到了进入硬件中断的问题

    //网卡接收数据(lwip直接调用)//netif:网卡结构体指针//返回值:ERR_OK,发送正常// ERR_MEM,发送失败err_t ethernetif_input(struct
    发表于 08-17 06:06

    请问这个input函数的原型是在哪里?

    [C] 纯文本查看 复制代码err_t ethernetif_input(struct netif *netif){err_t err;struct pbuf *p;p
    发表于 07-25 01:47

    HI3861的SDK中LWIP的TCPIP线程优先级?

    想知道LWIP中的tcpip线程的优先级设置的是多少?还有就是底层wifi协议是否有任务处理?如果有,优先级是多少?
    发表于 11-20 17:37

    基于STM32单片机LwIP协议的相关资料推荐

    (struct netif *netif, struct pbuf *p)4.3.3 pbuf * low_level_input(struct netif *netif)4.3.4 ethernetif_input(struct netif *netif)4.3.5
    发表于 01-20 06:35

    MCU_STM32CUBEMX v5.5.0的一个BUG是什么原因造成的呢

    STM32CUBEMX v5.5.0 配置FreeRTOS + LWIP,在MX_LWIP_Init()中的倒数第二句,osThreadNew(ethernetif_input, &
    发表于 03-01 06:23

    RTT上移植的lwip为何不用单一进程维护eth设备呢

    tcpip主进程中来处理,官网下载的lwip130,其中:来自于 Ethernetif.cstatic voidethernetif_input(struct netif *netif){struct
    发表于 03-18 09:35

    为什么CubeMX V6.5.0生成的ethernetif.h文件中会存在错误呢

    CubeMX 版本 6.5.0 在 /LWIP/target/ethernetif.h 中生成以下行:static void ethernetif_input(void const
    发表于 12-08 06:34

    51实现TCPIP协议原理图

    51实现TCPIP协议原理图 好东西哦。网上搜集,希望对你有用。
    发表于 03-25 14:28 102次下载

    对几种开源的TCPIP协议栈分析

    对几种开源的TCPIP协议栈分析
    发表于 11-03 16:52 24次下载

    TCPIP协议栈的实现lwip

    TCPIP协议栈的实现lwip方便初学者刚开始接触lwip,有个大概的了解与认识。
    发表于 03-14 15:40 13次下载

    tcpip协议栈是什么?tcpip协议栈有哪些协议tcpip协议栈中报文封装和解封装过程

    tcpip协议栈是什么? TCP/IP协议栈是计算机网络中使用的最常见的网络协议栈。它是一个四层协议栈,每一层使用不同的
    的头像 发表于 08-01 17:51 4292次阅读
    <b class='flag-5'>tcpip</b><b class='flag-5'>协议</b>栈是什么?<b class='flag-5'>tcpip</b><b class='flag-5'>协议</b>栈有哪些<b class='flag-5'>协议</b>?<b class='flag-5'>tcpip</b><b class='flag-5'>协议</b>栈中报文封装和解封装过程