我公司產品是雙網口,原來的程式是自己寫的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...