本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注
基于DWC_ether_qos的以太網(wǎng)驅(qū)動(dòng)開發(fā)-LWIP在PC上進(jìn)行開發(fā)調(diào)試 (qq.com)
https://mp.weixin.qq.com/s/YCHunvHybX6Ugp93GvsldQ
一.前言
LWIP是優(yōu)秀的嵌入式TCP/IP協(xié)議棧,我們之前介紹了其在嵌入式環(huán)境裸機(jī)和RTOS環(huán)境的移植,有時(shí)候我們僅僅是需要調(diào)試協(xié)議棧本身,在嵌入式環(huán)境中可能調(diào)試不便,此時(shí)我們可以直接在PC環(huán)境下進(jì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
設(shè)置網(wǎng)卡IP并啟用
sudo ifconfig tap0 192.168.1.10up
如果需要?jiǎng)h除網(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 #默認(rèn)使用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
四.測(cè)試
另開一個(gè)shell,安裝工具iperf
sudo apt install iperf
運(yùn)行連接服務(wù)端進(jìn)行測(cè)試
iperf -c 192.168.1.200
新開的shell作為客戶端IP為192.168.1.1,lwipbridge可以看到
lwipbridge: flags=4163 mtu 1500
原來(lái)運(yùn)行example_app的shell為服務(wù)端IP為192.168.1.200監(jiān)聽端口5001。
測(cè)試結(jié)果如下
五.使用gdb調(diào)試
lwip/contrib/ports/unix/example_app/Makefile
添加一行
CFLAGS+=-g3
重新make
使用gdb調(diào)試代碼
sudo gdb ./example_app
b main #斷點(diǎn)到main函數(shù)處
r #運(yùn)行,到main斷點(diǎn)處停止
layout src #查看源碼
n #運(yùn)行到下一行
s #單步運(yùn)行到下一語(yǔ)句
使用vscode瀏覽代碼
code .
六.總結(jié)
LWIP可以方便的在PC上搭建開發(fā)環(huán)境進(jìn)行協(xié)議棧的開發(fā)調(diào)試。
審核編輯 黃宇
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5424瀏覽量
171700 -
調(diào)試
+關(guān)注
關(guān)注
7文章
578瀏覽量
33936 -
LwIP
+關(guān)注
關(guān)注
2文章
86瀏覽量
27168
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論