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天都没有出现异常问题。

审核编辑:黄飞

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

    关注

    6032

    文章

    44513

    浏览量

    632839
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1348

    浏览量

    78982
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33872
  • LwIP
    +关注

    关注

    2

    文章

    85

    浏览量

    27084
  • 线程
    +关注

    关注

    0

    文章

    504

    浏览量

    19647

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

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

收藏 人收藏

    评论

    相关推荐

    基于μ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

    请问这个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

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

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

    对几种开源的TCPIP协议分析

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

    嵌入式TCPIP协议LWIP的内部结构

    分析了嵌入式 TCPIP协议主要对LWIP的基本结构,介绍了嵌入式TCPIP协议LWIP的内
    发表于 02-17 15:55 76次下载
    嵌入式<b class='flag-5'>TCPIP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>LWIP的内部结构

    基于ARM的轻量级TCPIP协议的移植及应用

    本文着重与讲诉基于ARM的轻量级TCPIP协议的移植及应用
    发表于 10-14 17:55 54次下载
    基于ARM的轻量级<b class='flag-5'>TCPIP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>的移植及应用

    TCPIP协议的实现lwip

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

    AN1921 - Microchip TCPIP精简协议

    本应用笔记描述Microchip传输控制协议/互联网协议(TCP/IP)精简协议库的结构和接口,并提供部分简单的演示应用。实现TC P/IP精简
    发表于 03-22 10:16 3次下载
    AN1921 - Microchip <b class='flag-5'>TCPIP</b>精简<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    基于STM32的虚拟多线程(TI_BLE协议_ZStack协议)

    基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考了参考TI_BLE协议_ZStack协议
    发表于 06-14 10:42 6898次阅读
    基于STM32的虚拟多<b class='flag-5'>线程</b>(TI_BLE<b class='flag-5'>协议</b><b class='flag-5'>栈</b>_ZStack<b class='flag-5'>协议</b><b class='flag-5'>栈</b>)

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

    tcpip协议是什么? TCP/IP协议是计算机网络中使用的最常见的网络协议
    的头像 发表于 08-01 17:51 8293次阅读
    <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><b class='flag-5'>栈</b>有哪些<b class='flag-5'>协议</b>?<b class='flag-5'>tcpip</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>中报文封装和解封装过程