基于DWC_ether_qos的以太网驱动开发-LWIP在PC上进行开发调试

描述

本文转自公众号欢迎关注

基于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上搭建开发环境进行协议栈的开发调试。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分