lwip雙網絡卡移植

2021-09-25 18:34:49 字數 625 閱讀 3154

我公司產品是雙網口,原來的程式是自己寫的tcp/ip協議棧,因為只是簡單實現了arp和tcp、udp的最簡單情況,所以有時候在公網上會遇到問題。

後來在單網口的產品中移植了lwip,輕量級tcp/ip協議棧,覺得一定程度上解決了問題,所以雙網絡卡的產品也要用lwip這個協議棧來實現。這個工作就落到了我的頭上。

單網絡卡的移植我不贅述,只描述從單網絡卡向雙網絡卡移植過程中遇到的問題以及解決方法。

首先,我看了下單網絡卡移植中所作的改動。

由此,可以知道我所需要做的主要改動就是針對這幾個函式,及其相關的函式。

多建立乙個netif塊,硬體初始化時在mylwip_init()函式中多新增乙個netif_add,並呼叫netif_set_up().

在low_level_init()中,區分兩個網絡卡的mac位址並且填充到netif塊中。[由此**可見,硬體mac位址修改後程式必須重新設定netif鍊錶才能正確執行。]

在low_level_output()中,判斷返回的資料是要傳送到哪個網絡卡,將資料拷貝到網絡卡傳送緩衝區,然後傳送。

在low_level_input()中,判斷是哪個網絡卡接受到了資料,並將網絡卡接受緩衝區中的資料拷貝到netif塊的payload資料處。

到此為止,測試ok,開心之極,趕緊記錄下來。

lwip雙網絡卡移植的問題,以及特殊解決方法

我公司產品是雙網口,原來的程式是自己寫的tcp ip協議棧,因為只是簡單實現了arp和tcp udp的最簡單情況,所以有時候在公網上會遇到問題。後來在單網口的產品中移植了lwip,輕量級tcp ip協議棧,覺得一定程度上解決了問題,所以雙網絡卡的產品也要用lwip這個協議棧來實現。這個工作就落到了我...

LWIP 移植檔案

要將乙太網驅動和lwip鏈結在一起還需要一些中間檔案,這些檔案很重要。這些中間檔案包括 cc.h cpu.h perf.h sys arch.c 和sys arch.h。stm32f4x7 eth bsp.c netconf.c 為硬體驅動配置檔案。stm32f4x7 eth.c 驅動庫傳輸層硬體配...

LWIP應用開發 LWIP移植和裁剪

1.lwip原始碼目錄結構 lwip原始碼目錄中包括doc src test資料夾和其他檔案,其中src資料夾是lwip的重點,裡面包含了lwip的原始碼 src原始碼資料夾如下示,由api core include netif這4個資料夾組成 src api 協議棧sequentialapi和so...