当前位置: 首页 > article >正文

ESP-NETIF L2 TAP 接口-物联网嵌入式开发应用

ESP-NETIF L2 TAP

概述

ESP-NETIF L2 TAP 接口是 ESP-IDF 访问用户应用程序中的数据链路层(OSI/ISO 中的 L2)以进行帧接收和传输的机制。在嵌入式开发中,它通常用于实现非 IP 相关协议,如 PTP 和 Wake on LAN 等。

Tips : 目前 ESP-NETIF L2 TAP 接口仅支持以太网 (IEEE 802.3)。

L2 TAP接口示例解析

https://github.com/espressif/esp-idf/tree/master/examples/protocols/l2tap

使用 VFS 的文件描述符访问 ESP-NETIF L2 TAP 接口,VFS 文件描述符会提供类似文件的接口(调用 open()read()write() 等函数访问),详情请参阅 虚拟文件系统组件,更多接口说明请参考ESP-NETIF L2 TAP 接口使用手册。****

示例用法具体:

  1. 使用阻塞read()等待帧并将其回显给发起者。
  2. 使用带有超时和非阻塞read()select()等待帧,并将其回显给发起者。
  3. write()定期广播传输“Hello 消息”,以显示要传输的以太网帧的正确结构。

示例总体逻辑:

初始化: 系统启动后,ESP32 初始化 L2 TAP 接口和以太网网络,并设置一些 GPIO。

回显和广播任务

  • echo_l2tap_task()nonblock_l2tap_echo_task() 监听以太网接口上接收到的数据包,并将其原样回显。
  • hello_tx_l2tap_task() 负责隔一段时间向网络广播 “Hello” 消息。

示例代码块:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

非 IP 相关协议实现

LAN唤醒

概述:

LAN唤醒(Wake-on-LAN, WoL)是一种网络标准,允许通过局域网(LAN)唤醒计算机或其他设备。它通过发送特定的网络数据包,通常称为“魔术包”(Magic Packet),远程启动处于待机或休眠状态的设备。该技术广泛应用于网络管理、远程控制和自动化系统中,可以远程启动设备而无需物理访问。

实现方式:
  1. 配置睡眠模式和唤醒源:ESP32可以进入深度睡眠模式,并通过网络唤醒设备。我们可以使用FreeRTOS任务来监听网络数据包,并在收到魔术包时唤醒设备。
  2. 实现Wake-on-LAN魔术包检测:通过监听以太网接口获取到指定的广播数据包,判断数据包内容来执行对应的操作。
  3. 触发唤醒机制:如果检测到魔术包,则通过配置ESP32的唤醒机制来控制设备的唤醒。

PTP

概述:

PTP 是一种网络协议,用于在局域网中提供子微秒级精度的时间同步,常用于工业控制、金融、测量等需要高精度时间同步的场景。PTP 的实现通常依赖硬件支持,以减少网络延迟对时间同步的影响。

时间同步的基本流程:

  • Sync 消息:由主时钟(Master Clock)发出,携带当前主时钟的时间。
  • Follow_Up 消息:提供更精确的时间戳信息,跟随 Sync 消息发送。
  • Delay_Req 消息:从时钟(Slave Clock)发送给主时钟,询问主时钟的当前时间。
  • Delay_Resp 消息:主时钟对从时钟的 Delay_Req 消息做出回应。
实现方式:
  1. PTP 帧捕获:通过 L2 TAP 接口监听以太网上的 PTP 帧,使用 read() 函数读取接收到的帧。解析接收到的 PTP 帧,区分 PTP 消息类型(SyncDelay_Resp 等),并分别处理。

  2. 时间同步:通过解析 PTP Sync 消息中的时间戳,将系统时间同步为主时钟的时间。


http://www.kler.cn/a/460289.html

相关文章:

  • P5289 [十二省联考 2019] 皮配 做题记录
  • 网络分析工具-tcpdump
  • 服务器主机测试网络
  • 某小程序sign签名参数逆向分析
  • C# 设计模式(结构型模式):装饰器模式
  • 二十三种设计模式-单例模式
  • MIT线性代数教材:Linear Algebra and Its Applications
  • 淺談Cocos2djs逆向
  • [算法] [leetcode-75] 颜色分类
  • 掌握机器学习与MySQL集成实战Ruby和JavaScript辅助Redis缓存策略
  • 双目视觉:reprojectImageTo3D函数
  • Scala Collection(集合)
  • 解锁手机矩阵的流量密码:云手机的奇幻之旅
  • 记一次音频无输出的解决方案
  • ES中查询中参数的解析
  • Paimon_01_241020
  • 前端超大缓存IndexDB、入门及实际使用
  • win10 重装系统中 或 电脑恢复重置中的 优化步骤
  • 寄存器总结
  • 开发小工具:ping地址
  • django StreamingHttpResponse fetchEventSource实现前后端流试返回数据并接收数据的完整详细过程
  • PHP框架+gatewayworker实现在线1对1聊天--mysql数据库(3)
  • Spring boot + Hibernate + MySQL实现用户管理示例
  • logback之自定义过滤器
  • 【AndroidAPP】权限被拒绝:[android.permission.READ_EXTERNAL_STORAGE],USB设备访问权限系统报错
  • C语言一维数组与指针运算