0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式USB开发 来源:嵌入式Lee 作者:嵌入式Lee 2023-09-11 08:40 次阅读

本文转自公众号欢迎关注

基于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.10up

如果需要删除网卡可以使用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。

测试结果如下

wKgaomT-a4eASU5pAAN8tVb5SkU139.png


五.使用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 #单步运行到下一语句

wKgZomT-a4eAcGJTAAO1wIvbvLk990.pngwKgaomT-a4iAMWx0AAK4eAwCxhQ439.png

使用vscode浏览代码

code .

六.总结

LWIP可以方便的在PC上搭建开发环境进行协议栈的开发调试。

审核编辑 黄宇

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

    关注

    40

    文章

    5078

    浏览量

    166248
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • LwIP
    +关注

    关注

    1

    文章

    82

    浏览量

    26629
收藏 人收藏

    评论

    相关推荐

    基于DWC_ether_qos以太网驱动开发-MAC帧格式介绍

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-MAC帧格式介绍 (qq.com) 一.前言   在以太网
    的头像 发表于 08-30 09:23 1284次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-MAC帧格式介绍

    基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-MDIO驱动编写与测试 一.前言
    的头像 发表于 08-30 09:37 2276次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-MDIO<b class='flag-5'>驱动</b>编写与测试

    基于DWC_ether_qos以太网驱动开发-描述符链表介绍

    本文转自公众号欢迎关注 一.描述符概述 1.0 前言 对于DWC Ethernet QoS驱动的编写来说,初始化完成之后,核心操作就是DMA的描述符链表配置(linked list
    的头像 发表于 08-30 09:39 2727次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-描述符链表介绍

    基于DWC_ether_qos以太网驱动开发-数据流验证过程

    转自公众号欢迎关注 https://mp.weixin.qq.com/s/klrHhaLMM_0W3FGVwHXFkA 基于DWC_ether_qos以太网驱动开发-数据流验证过程
    的头像 发表于 08-31 08:41 1166次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-数据流验证过程

    基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-收发驱动编写与调试 (
    的头像 发表于 09-05 08:47 1368次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-收发<b class='flag-5'>驱动</b>编写与<b class='flag-5'>调试</b>

    基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-无OS环境移植LWIP (qq.com) https://mp.we
    的头像 发表于 09-06 08:40 810次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-无OS环境移植<b class='flag-5'>LWIP</b>

    基于DWC_ether_qos以太网驱动开发-LWIP的内存池介绍

    本文转自公众号,欢迎关注 https://mp.weixin.qq.com/s/mBoGSf_u9edFF01U_OZT9g 一.前言 lwIP为基础结构提供了专用的内存池管理,比如netconn
    的头像 发表于 09-07 08:45 876次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-<b class='flag-5'>LWIP</b>的内存池介绍

    基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍

    本文转自公众号欢迎关注 基于DWC_ether_qos以太网驱动开发-LWIP的堆管理介绍 (qq.com) https://mp.wei
    的头像 发表于 09-08 08:40 767次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-<b class='flag-5'>LWIP</b>的堆管理介绍

    基于DWC_ether_qos以太网驱动开发-LWIP的堆(内存池)未对齐导致问题的案例分享

    本文转自公众号欢迎关注 https://mp.weixin.qq.com/s/ErIa2ss2YZLGYbSwoJEzog 一. 前言 内存未对齐访问问题这个已经是老生常谈的问题了, 由于LWIP
    的头像 发表于 09-09 08:44 1222次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-<b class='flag-5'>LWIP</b>的堆(内存池)未对齐导致问题的案例分享

    基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试

    本文转自公众号,欢迎关注 基于DWC_ether_qos以太网驱动开发-RTOS环境移植LWIP与性能测试 (qq.com) https:
    的头像 发表于 09-11 11:20 1104次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-RTOS环境移植<b class='flag-5'>LWIP</b>与性能测试

    基于DWC_ether_qos以太网驱动开发-LWIP的定时器模块详解

    一. 前言 LWIP的定时器模块,实现了通用的软件定时器,用于内部的周期事件处理,比如arp,tcp的超时等,用户也可以使用。这一篇来分析该模块的实现。 二.代码分析 2.1源码 源码
    的头像 发表于 09-18 09:33 874次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-<b class='flag-5'>LWIP</b>的定时器模块详解

    基于DWC_ether_qos以太网驱动开发-LWIP的ARP模块介绍

    TCP/IP通讯第一步需要先调通ARP,否则TCP/IP包都不知道MAC地址要发给谁。这一篇来基于LWIP的ARP实现进行相关的分析。
    的头像 发表于 09-18 09:34 1026次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-<b class='flag-5'>LWIP</b>的ARP模块介绍

    设计软件核心以太网服务质量数据手册免费下载

    本文描述Synopsys设计软件核心以太网服务质量DWC以太网QoS核心5.10A。DWC以太网
    发表于 10-23 08:00 15次下载
    设计软件核心<b class='flag-5'>以太网</b>服务质量数据手册免费下载

    基于DWC_ether_qos以太网驱动开发-包过滤

    以太网上数据非常多,如果所有数据都接收交给软件去处理软件负载会非常重,所以一般只需要接收发给自己的数据即可
    的头像 发表于 09-02 09:19 826次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-包过滤

    基于DWC_ether_qos以太网驱动开发-软复位介绍与问题案例

    一般模块都会有软复位的功能,软复位在驱动编写中很重要。一般初始化时执行软复位使得模块进入确定的初始状态以提高可靠性,异常时也可以重新初始化来恢复,所以软复位在驱动中一般是必须要做的动作。
    的头像 发表于 09-02 09:17 888次阅读
    基于<b class='flag-5'>DWC_ether_qos</b>的<b class='flag-5'>以太网</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>-软复位介绍与问题案例