本文轉自公眾號歡迎關注
基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP在PC上進行開發(fā)調(diào)試 (qq.com)
https://mp.weixin.qq.com/s/YCHunvHybX6Ugp93GvsldQ
一.前言
LWIP是優(yōu)秀的嵌入式TCP/IP協(xié)議棧,我們之前介紹了其在嵌入式環(huán)境裸機和RTOS環(huán)境的移植,有時候我們僅僅是需要調(diào)試協(xié)議棧本身,在嵌入式環(huán)境中可能調(diào)試不便,此時我們可以直接在PC環(huán)境下進行協(xié)議棧調(diào)試。以下以WSL+Ubuntu環(huán)境介紹LWIP的開發(fā)環(huán)境的搭建。
二.創(chuàng)建 tap 虛擬網(wǎng)卡
安裝 UML
sudo apt install uml-utilities
創(chuàng)建 tap0
sudo tunctl -u someuser
如下
lhj@DESKTOP-BINN7F8:~/lwip$ sudo tunctl -u lhj
查看網(wǎng)卡
ifconfig
如下
tap0: flags=4099 mtu 1500
設置網(wǎng)卡IP并啟用
sudo ifconfig tap0 192.168.1.10up
如果需要刪除網(wǎng)卡可以使用sudo tunctl -d tap0
三.編譯LWIP
安裝必要的工具
sudo apt install bridge-utils
sudo apt install cmake
lgit clone https://github.com/lwip-tcpip/lwip.git
lcd lwip
lsudo ./contrib/ports/unix/setup-tapif #默認使用tap0
lcp ./contrib/examples/example_app/lwipcfg.h.example ./contrib/examples/example_app/lwipcfg.h
lvim ./contrib/examples/example_app/lwipcfg.h
去掉`#define USE_DHCP 0` 和`#define USE_AUTOIP 0`的注釋,并將`LWIP_LWIPERF_APP`的宏定義為 1
lcd ./contrib/ports/unix/example_app/
lmkdir build && cd build
lcmake -DLWIP_DIR=/home/lhj/lwip ..
lmake
lsudo ./example_app
四.測試
另開一個shell,安裝工具iperf
sudo apt install iperf
運行連接服務端進行測試
iperf -c 192.168.1.200
新開的shell作為客戶端IP為192.168.1.1,lwipbridge可以看到
lwipbridge: flags=4163 mtu 1500
原來運行example_app的shell為服務端IP為192.168.1.200監(jiān)聽端口5001。
測試結果如下
五.使用gdb調(diào)試
lwip/contrib/ports/unix/example_app/Makefile
添加一行
CFLAGS+=-g3
重新make
使用gdb調(diào)試代碼
sudo gdb ./example_app
b main #斷點到main函數(shù)處
r #運行,到main斷點處停止
layout src #查看源碼
n #運行到下一行
s #單步運行到下一語句
使用vscode瀏覽代碼
code .
六.總結
LWIP可以方便的在PC上搭建開發(fā)環(huán)境進行協(xié)議棧的開發(fā)調(diào)試。
審核編輯 黃宇
-
以太網(wǎng)
+關注
關注
40文章
5547瀏覽量
174186 -
調(diào)試
+關注
關注
7文章
602瀏覽量
34407 -
LwIP
+關注
關注
2文章
89瀏覽量
27905
發(fā)布評論請先 登錄
相關推薦
基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-MAC幀格式介紹

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-MDIO驅動編寫與測試

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-描述符鏈表介紹

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-數(shù)據(jù)流驗證過程

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-收發(fā)驅動編寫與調(diào)試

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-無OS環(huán)境移植LWIP

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的內(nèi)存池介紹

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的堆管理介紹

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的堆(內(nèi)存池)未對齊導致問題的案例分享

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-RTOS環(huán)境移植LWIP與性能測試

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的定時器模塊詳解

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的ARP模塊介紹

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-LWIP的ICMP模塊介紹與PING收發(fā)測

設計軟件核心以太網(wǎng)服務質量數(shù)據(jù)手冊免費下載

基于DWC_ether_qos的以太網(wǎng)驅動開發(fā)-包過濾

評論