1、最近項(xiàng)目遇到的問(wèn)題
最近在stm32上用cubemax移植了lwip協(xié)議棧,lwip就不用過(guò)多介紹了,(lightweight IP)一款輕量級(jí)的開(kāi)源TCP/IP協(xié)議棧,專(zhuān)為嵌入式系統(tǒng)設(shè)計(jì),具有小巧高效、可裁剪性強(qiáng),主要是已經(jīng)發(fā)展和廣泛應(yīng)用多年,可靠性還是可以的,基本上大多數(shù)嵌入式系統(tǒng)的網(wǎng)絡(luò)通信需求都可以滿(mǎn)足。
然而最近項(xiàng)目中通信數(shù)據(jù)量大一點(diǎn),老是send超時(shí),運(yùn)行時(shí)間久了還會(huì)直接掛在ethnetif_input,這可把我給整郁悶了。
最后定位到原因還是lwip適配的兩個(gè)線(xiàn)程優(yōu)先級(jí)分配得有問(wèn)題,導(dǎo)致FreeRTOS信號(hào)量超時(shí)異常。
2、兩個(gè)主要線(xiàn)程
在lwIP協(xié)議棧中,ethernetif_input線(xiàn)程和tcpip協(xié)議棧線(xiàn)程是兩個(gè)核心的線(xiàn)程,在處理網(wǎng)絡(luò)數(shù)據(jù)包和執(zhí)行TCP/IP協(xié)議棧功能時(shí)的作用就不用多說(shuō)了,下面簡(jiǎn)單的介紹下兩個(gè)線(xiàn)程的作用:
ethernetif_input線(xiàn)程:
ethernetif_input線(xiàn)程負(fù)責(zé)接收來(lái)自網(wǎng)絡(luò)接口(如以太網(wǎng)接口)的數(shù)據(jù)包,并將其傳遞給lwIP協(xié)議棧進(jìn)行處理。
這個(gè)線(xiàn)程通常運(yùn)行在較低的優(yōu)先級(jí),因?yàn)樗饕?fù)責(zé)接收和緩存數(shù)據(jù)包,而不涉及復(fù)雜的協(xié)議處理。
在實(shí)際應(yīng)用中,可以根據(jù)系統(tǒng)的需求和性能進(jìn)行調(diào)整,但通常情況下,ethernetif_input線(xiàn)程的優(yōu)先級(jí)相對(duì)較低。
tcpip協(xié)議棧線(xiàn)程:
tcpip協(xié)議棧線(xiàn)程是lwIP協(xié)議棧的核心線(xiàn)程,負(fù)責(zé)處理TCP/IP協(xié)議棧的各種功能,包括TCP連接管理、IP數(shù)據(jù)報(bào)的路由和轉(zhuǎn)發(fā)、以及UDP數(shù)據(jù)包的處理等。
由于tcpip協(xié)議棧線(xiàn)程需要處理復(fù)雜的協(xié)議邏輯和數(shù)據(jù)包處理,因此它通常運(yùn)行在較高的優(yōu)先級(jí)。
保持tcpip協(xié)議棧線(xiàn)程的較高優(yōu)先級(jí)有助于確保網(wǎng)絡(luò)數(shù)據(jù)包的及時(shí)處理和協(xié)議棧功能的高效執(zhí)行。
在實(shí)際的嵌入式系統(tǒng)設(shè)計(jì)中,需要根據(jù)具體的硬件平臺(tái)和應(yīng)用場(chǎng)景來(lái)合理設(shè)置這兩個(gè)線(xiàn)程的優(yōu)先級(jí)。通常情況下,可以通過(guò)操作系統(tǒng)或者裸機(jī)編程的方式來(lái)配置線(xiàn)程的優(yōu)先級(jí),以滿(mǎn)足系統(tǒng)對(duì)網(wǎng)絡(luò)數(shù)據(jù)處理和協(xié)議棧功能的實(shí)時(shí)性和效率要求。
3、總 結(jié)
所以通常情況下,tcpip協(xié)議棧線(xiàn)程的優(yōu)先級(jí)需要設(shè)置得更高,因?yàn)閠cpip協(xié)議棧線(xiàn)程需要處理復(fù)雜的協(xié)議邏輯、數(shù)據(jù)包處理、連接管理等任務(wù),保持tcpip協(xié)議棧線(xiàn)程的較高優(yōu)先級(jí)可以確保網(wǎng)絡(luò)數(shù)據(jù)包的及時(shí)處理和協(xié)議棧功能的高效執(zhí)行,從而提高系統(tǒng)的響應(yīng)速度和網(wǎng)絡(luò)通信的穩(wěn)定性。
ethernetif_input線(xiàn)程通常負(fù)責(zé)接收和緩存數(shù)據(jù)包,相對(duì)來(lái)說(shuō)不涉及太多復(fù)雜的處理邏輯,因此可以設(shè)置相對(duì)較低的優(yōu)先級(jí)。
經(jīng)過(guò)優(yōu)先級(jí)調(diào)整后,跑了2天都沒(méi)有出現(xiàn)異常問(wèn)題。
審核編輯:黃飛
-
單片機(jī)
+關(guān)注
關(guān)注
6076文章
45500瀏覽量
670709 -
TCP
+關(guān)注
關(guān)注
8文章
1425瀏覽量
83546 -
UDP
+關(guān)注
關(guān)注
0文章
334瀏覽量
35424 -
LwIP
+關(guān)注
關(guān)注
2文章
90瀏覽量
29589 -
線(xiàn)程
+關(guān)注
關(guān)注
0文章
510瀏覽量
20829
原文標(biāo)題:在單片機(jī)上運(yùn)行Lwip線(xiàn)程優(yōu)先級(jí)很重要~
文章出處:【微信號(hào):嵌入式情報(bào)局,微信公眾號(hào):嵌入式情報(bào)局】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于μCOS-Ⅱ的嵌入式TCPIP_協(xié)議棧的研究與實(shí)現(xiàn)
ARM開(kāi)發(fā)教程之基于ARM微處理器TCPIP協(xié)議棧LwlP實(shí)現(xiàn)
請(qǐng)問(wèn)這個(gè)input函數(shù)的原型是在哪里?
HI3861的SDK中LWIP的TCPIP線(xiàn)程優(yōu)先級(jí)?
基于STM32單片機(jī)LwIP協(xié)議的相關(guān)資料推薦
MCU_STM32CUBEMX v5.5.0的一個(gè)BUG是什么原因造成的呢
為什么CubeMX V6.5.0生成的ethernetif.h文件中會(huì)存在錯(cuò)誤呢
嵌入式TCPIP協(xié)議棧LWIP的內(nèi)部結(jié)構(gòu)
基于ARM的輕量級(jí)TCPIP協(xié)議棧的移植及應(yīng)用
TCPIP協(xié)議棧的實(shí)現(xiàn)lwip
AN1921 - Microchip TCPIP精簡(jiǎn)協(xié)議棧
基于STM32的虛擬多線(xiàn)程(TI_BLE協(xié)議棧_ZStack協(xié)議棧)
tcpip協(xié)議棧是什么?tcpip協(xié)議棧有哪些協(xié)議?tcpip協(xié)議棧中報(bào)文封裝和解封裝過(guò)程
ethernetif_input和tcpip協(xié)議棧線(xiàn)程的作用
評(píng)論