本文转自公众号欢迎关注
基于DWC_ether_qos的以太网驱动开发-LWIP在PC上进行开发调试 (qq.com)
https://mp.weixin.qq.com/s/YCHunvHybX6Ugp93GvsldQ
一. 前言
LWIP是优秀的嵌入式TCP/IP协议栈,我们之前介绍了其在嵌入式环境裸机和RTOS环境的移植,有时候我们仅仅是需要调试协议栈本身,在嵌入式环境中可能调试不便,此时我们可以直接在PC环境下进行协议栈调试。以下以WSL+Ubuntu环境介绍LWIP的开发环境的搭建。
二.创建 tap 虚拟网卡
安装 UML
sudo apt install uml-utilities
创建 tap0
sudo tunctl -u someuser
如下
lhj@DESKTOP-BINN7F8:~/lwip$ sudo tunctl -u lhj
查看网卡
ifconfig
如下
tap0: flags=4099 mtu 1500
设置网卡IP并启用
sudo ifconfig tap0 192.168.1.10 up
如果需要删除网卡可以使用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监听端口5001。
测试结果如下
五. 使用gdb调试
lwip/contrib/ports/unix/example_app/Makefile
添加一行
CFLAGS+=-g3
重新make
使用gdb调试代码
sudo gdb ./example_app
b main #断点到main函数处
r #运行,到main断点处停止
layout src #查看源码
n #运行到下一行
s #单步运行到下一语句
使用vscode浏览代码
code .
六. 总结
LWIP可以方便的在PC上搭建开发环境进行协议栈的开发调试。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !