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

原创 嵌入式Lee 2023-09-01 07:30

一. 前言

以太网上数据非常多,如果所有数据都接收交给软件去处理软件负载会非常重,所以一般只需要接收发给自己的数据即可,过滤掉不必要的数据,这样软件只处理自己需要的数据,软件负担更小更高效,CAN等总线也有类似的硬件过滤机制,意义基本类似。这就需要用到过滤功能,一般接收广播地址,和目的是本MAC地址的包即可。

参考手册9 Packet Filtering

二.包过滤的序列

过程如下

先进行第二层即数据链路层MAC帧的过滤(根据MAC帧的MAC源地址目的地址)

然后进行第二层VLAN过滤

然后进行第三层网络层的IP包的过滤(根据IP报的IP源地址目的地址)

最后进行第四层传输层TCP/UDP包的过滤(根据TCP/UDP报的源和目的端口)

最基本的是MAC帧的过滤,所以重点介绍该方式的过滤。

 

. MAC帧过滤介绍

3.1 MAC地址寄存器

MAC_HW_Feature0 寄存器(偏移0x11c)的位ADDMACADRSEL[22:18]可以查询启用的附加的1~31MAC地址寄存器的个数

MACADR64SEL[24]1表示启用附加的64~12764MAC地址寄存器

MACADR32SEL[23]1表示启用附加的32~6332MAC地址寄存器

我这里的配置是

(gdb) x /1xw 0x0116011C

0x116011c: 0x1a0d1122

(gdb)

[24]= 0

[23]= 0

[22:18] = 00011 = 3

所以只有额外的3MAC地址寄存器,一共40是总是有的。

对应的寄存器为

MAC_Address(#i)_High31_1  i=1 i<=3-1=2  16

MAC_Address(#i)_Low31_1              32

这里

MACADR64SELMACADR32SEL都为0所以没有32~6364~127的寄存器。

该寄存器需要软件初始化时配置

注如下表达式中DWC_EQOS_ADD_MAC_ADDR_REG-1应该不需要-1,应该是文档错误,因为

DWC_EQOS_ADD_MAC_ADDR_REG即表示个数,0总是存在的所以从1开始,n个就是1n,比如这里为3就是1~3,3个额外的,还有04个。

MAC_Address(#i)_High31_1 (for i = 1; i <= DWC_EQOS_ADD_MAC_ADDR_REG-1)

(0x0008*i)+0x0300

AE[31]=1 使能该地址作为过滤 寄存器0只读始终是使能的

SA[30]=0 使用寄存器值[47:0]和接收包的DA比对,相同则接收;=1 使用寄存器值[47:0]和接收包的SA比对,相同则接收。 寄存器0没有。

MBC[29:24] 6bit分别对应6字节MAC地址的对应字节,对应位为1则不比较对应字节。

低位对应最后面的字节。寄存器0没有。

DCS[x:16] 匹配的数据将路由到该DMA通道去,对于单DMA则保留。

ADDRHI[15:0] MAC地址的高16

MAC_Address(#i)_Low31_1 (for i = 1; i <= DWC_EQOS_ADD_MAC_ADDR_REG-1)

ADDRLO[31:0] MAC地址的低32位。

如下可以看到0已经配置了,后面还有31~3(从初始值0xFFFFFFFF可以看出)

 

3.2地址过滤Hash

地址过滤Hash表的使能可以通过寄存器

MAC_HW_Feature1(0x120) 的位HASHTBLSZ[25:24]查询

00 Hash

01:64

10:128

11:256

我这里的值是

(gdb) x /1xw 0x01160120

0x1160120: 0x00000944

(gdb)

[25:24]=00,即没有使能Hash表。

四. 过滤模式配置

4.0 过滤模式配置寄存器

MAC_Packet_Filter寄存器0x08

控制过滤模式

RA[31] 设置为1表示接收所有的包(但是Rx Status Word还是会更新过滤是否通过的状态),设置为0则根据过滤结果控制是否接收。

调试阶段可以设置为1,以便进行接收测试。

DNTU[21]  设置为1MAC会丢弃非TCPUDP IP数据包。必须IPFE时才有效。

IPFE[20] 设置为1使能34层过滤。

VTFE[16] 设置为1使能VLAN Tag过滤

HPF[10] 设置为1使能Hash或者Perfert过滤(即寄存器匹配)

SAF[9] 设置为1使能源地址过滤

SAIF[8] 设置为1 源地址过滤反逻辑,即匹配的丢弃,不匹配的接收。

PCF[7:6]

00MAC过滤掉所有控制数据包

01: MAC接收除了Pause包外的所有控制包,哪怕是地址匹配失败

10 MAC接收所有控制包,哪怕是地址匹配失败

11: MAC接收所有通过地址过滤的控制包

DBF[5]: 设置为1不接收广播包

PM[4]: 设置为1接收所有多播包,即MAC地址的第一个bit1.

设置为0则由HMC决定。

DAIF[3]: 设置为1DA匹配之后反逻辑接收,即匹配的不接收。

HMC[2]: 设置为1DA 多播地址根据Hash匹配,否则使用寄存器匹配

HUC[1]: 设置为1DA 单播地址根据Hash匹配,否则使用寄存器匹配

PR[0]: 设置为1则不匹配SA DA都接收,甚至状态位都清除Rx Status Word

此模式可以作为监控模式,接收所有数据。

4.1 单播目的地址过滤

HUC[1]设置为0

MacAddr1MacAddr127地址用单独的使能位来使能。对于MacAddr1MacAddr31地址,可以通过在寄存器中设置相应的掩码字节控制位,在与相应的接收DA字节进行比较时屏蔽指定字节。允许对DA进行组地址筛选。MacAddr32MacAddr127地址没有掩码控制,并且将MAC地址的所有6字节与接收到的DA/SA6字节进行比较

在哈希过滤模式下(当设置了HUC位时),MAC使用64位哈希表对单播地址执行不完美的过滤。对于哈希过滤,MAC使用接收到的目的地地址的高6CRC来索引哈希表的内容。值00000选择所选寄存器的位0,值11111选择哈希表寄存器的位63。如果对应的比特(由6比特CRC指示)被设置为1,则单播分组被认为已经通过了哈希滤波器;否则,数据包被认为未通过哈希过滤器

4.2 多播放目的地址过滤

PM[4]设置为1否则由HMC决定多播的接收。

将多播地址与编程的MAC目的地地址寄存器(1-31)进行比较。还支持组地址筛选

在哈希过滤模式下,MAC使用64位哈希表执行不完美过滤。MAC使用接收到的多播地址的高6CRC来索引哈希表的内容。值000000选择所选寄存器的位0,值111111选择哈希表寄存器的位63。如果对应的比特被设置为1,则多播分组被认为已经通过了哈希过滤器。否则,数据包被认为未通过哈希过滤器

4.3 哈希或完美地址筛选

HPF[10]配置是使用哈希还是完美地址(寄存器匹配)过滤模式

配合HUC HMC配置多播和单播是使用哈希还是完美地址过滤模式

这适用于单播和多播数据包。如果HPF位被重置,则只有一个滤波器(HashPerfect)被应用于接收到的数据包。

4.4广播过滤

默认情况下,MAC不过滤任何广播数据包。设置MAC_Packet_Filter寄存器中DBF1不接收广播包。

4.5 单播源地址过滤

MAC地址寄存器的Bit 30设置为1比较SA否则比较DA

MAC还支持SA的组过滤。通过屏蔽地址的一个或多个字节来过滤一组地址。如果MAC_Packet_filter寄存器SAF置位,则MAC丢弃未通过SA过滤器的数据包。否则,SA过滤器的结果作为接收状态字中的状态位给出(Table 2-16 Receive Status at the MAC Interface)。当SAF位被设置时,SA滤波器和DA滤波器结果被以决定是否需要接收。这意味着,如果任何一个过滤器失败,数据包都会被丢弃。只有当数据包按顺序通过两个过滤器时,才会将数据包转发给应用程序

4.6 反逻辑

对于DASA过滤,可以通过设置MAC_Packet_filter寄存器的DAIFSAIF位,在最终输出时反转过滤器匹配结果。

DAIF位适用于单播和多播DA数据包。单播或多播目的地地址筛选器的结果在此模式中反转。类似地,当SAIF比特被设置时,单播SA滤波器的结果被反转。

五. 其他层级过滤

还有以下过滤,用时可以参考手册

VLAN过滤

扩展Rx VLAN过滤和路由

扩展Rx VLAN筛选和路由

六. 过滤测试

按照一般的配置DA匹配,接收目的地址DA是本设备MAC地址的包和广播包。

MAC的默认配置实际就是这样的。

寄存器0总是使能的,DA匹配,只需要填入本设备MAC地址即可,

低字节先发送如下对应FCF29FE93C18MAC地址。

MAC_Address0_HighMAC_Address0_Low

(gdb) x /20xw 0x01160300

0x1160300: 0x8000183c      0xe99ff2fc      0x0000ffff      0xffffffff

0x1160310: 0x0000ffff      0xffffffff      0x0000ffff      0xffffffff

0x1160320: 0x00000000      0x00000000      0x00000000      0x00000000

0x1160330: 0x00000000      0x00000000      0x00000000      0x00000000

0x1160340: 0x00000000      0x00000000      0x00000000      0x00000000

使能广播包

(gdb) x /1xw 0x01160008

0x1160008: 0x00000000

(gdb)

使用MAC回环测试。

测试广播地址能收到

    tx_buffer[0]=0xFF;    tx_buffer[1]=0xFF;    tx_buffer[2]=0xFF;    tx_buffer[3]=0xFF;    tx_buffer[4]=0xFF;    tx_buffer[5]=0xFF;

测试目的地址匹配能收到

    tx_buffer[0]=0xFC;    tx_buffer[1]=0xF2;    tx_buffer[2]=0x9F;    tx_buffer[3]=0xE9;    tx_buffer[4]=0x3C;    tx_buffer[5]=0x18;

测试非广播地址非目的地址匹配不能收到

    tx_buffer[0]=0xFC;    tx_buffer[1]=0xF2;    tx_buffer[2]=0x9F;    tx_buffer[3]=0xE9;    tx_buffer[4]=0x3C;    tx_buffer[5]=0x19;

以上说明过滤符合预期。

七. 总结

MAC支持的过滤多种多样,支持多个层级的过滤,最通常的就是接收广播地址和DA是和本设备MAC地址完全一样的包。


评论 (0)
  • 提到“质量”这两个字,我们不会忘记那些奠定基础的大师们:休哈特、戴明、朱兰、克劳士比、费根堡姆、石川馨、田口玄一……正是他们的思想和实践,构筑了现代质量管理的核心体系,也深远影响了无数企业和管理者。今天,就让我们一同致敬这些质量管理的先驱!(最近流行『吉卜力风格』AI插图,我们也来玩玩用『吉卜力风格』重绘质量大师画象)1. 休哈特:统计质量控制的奠基者沃尔特·A·休哈特,美国工程师、统计学家,被誉为“统计质量控制之父”。1924年,他提出世界上第一张控制图,并于1931年出版《产品制造质量的经济
    优思学院 2025-04-01 14:02 74浏览
  • 引言在语音芯片设计中,输出电路的设计直接影响音频质量与系统稳定性。WT588系列语音芯片(如WT588F02B、WT588F02A/04A/08A等),因其高集成度与灵活性被广泛应用于智能设备。然而,不同型号在硬件设计上存在关键差异,尤其是DAC加功放输出电路的配置要求。本文将从硬件架构、电路设计要点及选型建议三方面,解析WT588F02B与F02A/04A/08A的核心区别,帮助开发者高效完成产品设计。一、核心硬件差异对比WT588F02B与F02A/04A/08A系列芯片均支持PWM直推喇叭
    广州唯创电子 2025-04-01 08:53 105浏览
  • 引言随着物联网和智能设备的快速发展,语音交互技术逐渐成为提升用户体验的核心功能之一。在此背景下,WT588E02B-8S语音芯片,凭借其创新的远程更新(OTA)功能、灵活定制能力及高集成度设计,成为智能设备语音方案的优选。本文将从技术特性、远程更新机制及典型应用场景三方面,解析该芯片的技术优势与实际应用价值。一、WT588E02B-8S语音芯片的核心技术特性高性能硬件架构WT588E02B-8S采用16位DSP内核,内部振荡频率达32MHz,支持16位PWM/DAC输出,可直接驱动8Ω/0.5W
    广州唯创电子 2025-04-01 08:38 99浏览
  • REACH和RoHS欧盟两项重要的环保法规有什么区别?适用范围有哪些?如何办理?REACH和RoHS是欧盟两项重要的环保法规,主要区别如下:一、核心定义与目标RoHS全称为《关于限制在电子电器设备中使用某些有害成分的指令》,旨在限制电子电器产品中的铅(Pb)、汞(Hg)、镉(Cd)、六价铬(Cr6+)、多溴联苯(PBBs)和多溴二苯醚(PBDEs)共6种物质,通过限制特定材料使用保障健康和环境安全REACH全称为《化学品的注册、评估、授权和限制》,覆盖欧盟市场所有化学品(食品和药品除外),通过登
    张工13144450251 2025-03-31 21:18 65浏览
  •        在“软件定义汽车”的时代浪潮下,车载软件的重要性日益凸显,软件在整车成本中的比重逐步攀升,已成为汽车智能化、网联化、电动化发展的核心驱动力。车载软件的质量直接关系到车辆的安全性、可靠性以及用户体验,因此,构建一套科学、严谨、高效的车载软件研发流程,确保软件质量的稳定性和可控性,已成为行业共识和迫切需求。       作为汽车电子系统领域的杰出企业,经纬恒润深刻理解车载软件研发的复杂性和挑战性,致力于为O
    经纬恒润 2025-03-31 16:48 54浏览
  • 据先科电子官方信息,其产品包装标签将于2024年5月1日进行全面升级。作为电子元器件行业资讯平台,大鱼芯城为您梳理本次变更的核心内容及影响:一、标签变更核心要点标签整合与环保优化变更前:卷盘、内盒及外箱需分别粘贴2张标签(含独立环保标识)。变更后:环保标识(RoHS/HAF/PbF)整合至单张标签,减少重复贴标流程。标签尺寸调整卷盘/内盒标签:尺寸由5030mm升级至**8040mm**,信息展示更清晰。外箱标签:尺寸统一为8040mm(原7040mm),提升一致性。关键信息新增新增LOT批次编
    大鱼芯城 2025-04-01 15:02 99浏览
  • 在智能家居领域,无线门铃正朝着高集成度、低功耗、强抗干扰的方向发展。 WTN6040F 和 WT588F02B 两款语音芯片,凭借其 内置EV1527编解码协议 和 免MCU设计 的独特优势,为无线门铃开发提供了革命性解决方案。本文将深入解析这两款芯片的技术特性、应用场景及落地价值。一、无线门铃市场痛点与芯片方案优势1.1 行业核心痛点系统复杂:传统方案需MCU+射频模块+语音芯片组合,BOM成本高功耗瓶颈:待机电流
    广州唯创电子 2025-03-31 09:06 147浏览
  • 在环保与经济挑战交织的当下,企业如何在提升绩效的同时,也为地球尽一份力?普渡大学理工学院教授 查德·劳克斯(Chad Laux),和来自 Maryville 大学、俄亥俄州立大学及 Trine 大学的三位学者,联合撰写了《精益可持续性:迈向循环经济之路(Lean Sustainability: Creating a Sustainable Future through Lean Thinking)》一书,为这一问题提供了深刻的答案。这本书也荣获了 国际精益六西格玛研究所(IL
    优思学院 2025-03-31 11:15 67浏览
  • 一、温度计不准的原因温度计不准可能由多种原因导致,如温度计本身的质量问题、使用环境的变化、长时间未进行校准等。为了确保温度计的准确性,需要定期进行校准。二、校准前准备工作在进行温度计校准之前,需要做好以下准备工作:1. 选择合适的校准方法和设备,根据温度计的型号和使用需求来确定。2. 确保校准环境稳定,避免外部因素对校准结果产生影响。3. 熟悉温度计的使用说明书和校准流程,以便正确操作。三、温度计校准方法温度计校准方法一般分为以下几步:1. 将温度计放置在
    锦正茂科技 2025-03-31 10:27 49浏览
  • 在不久前发布的《技术实战 | OK3588-C开发板上部署DeepSeek-R1大模型的完整指南》一文中,小编为大家介绍了DeepSeek-R1在飞凌嵌入式OK3588-C开发板上的移植部署、效果展示以及性能评测,本篇文章不仅将继续为大家带来关于DeepSeek-R1的干货知识,还会深入探讨多种平台的移植方式,并介绍更为丰富的交互方式,帮助大家更好地应用大语言模型。1、移植过程1.1 使用RKLLM-Toolkit部署至NPURKLLM-Toolkit是瑞芯微为大语言模型(LLM)专门开发的转换
    飞凌嵌入式 2025-03-31 11:22 162浏览
  • 升职这件事,说到底不是单纯靠“干得多”或者“喊得响”。你可能也看过不少人,能力一般,甚至没你努力,却升得飞快;而你,日复一日地拼命干活,升职这两个字却始终离你有点远。这种“不公平”的感觉,其实在很多职场人心里都曾经出现过。但你有没有想过,问题可能就藏在一些你“没当回事”的小细节里?今天,我们就来聊聊你升职总是比别人慢,可能是因为这三个被你忽略的小细节。第一:你做得多,但说得少你可能是那种“默默付出型”的员工。项目来了接着干,困难来了顶上去,别人不愿意做的事情你都做了。但问题是,这些事情你做了,却
    优思学院 2025-03-31 14:58 76浏览
  • 北京贞光科技有限公司作为紫光同芯产品的官方代理商,为客户提供车规安全芯片的硬件、软件SDK销售及专业技术服务,并且可以安排技术人员现场支持客户的选型和定制需求。在全球汽车电子市场竞争日益激烈的背景下,中国芯片厂商正通过与国际领先企业的深度合作,加速融入全球技术生态体系。近日,紫光同芯与德国HighTec达成的战略合作标志着国产高端车规芯片在国际化道路上迈出了关键一步,为中国汽车电子产业的发展注入了新的活力。全栈技术融合:打造国际化开发平台紫光同芯与HighTec共同宣布,HighTec汽车级编译
    贞光科技 2025-03-31 14:44 82浏览
  • 在智能语音交互设备开发中,系统响应速度直接影响用户体验。WT588F系列语音芯片凭借其灵活的架构设计,在响应效率方面表现出色。本文将深入解析该芯片从接收指令到音频输出的全过程,并揭示不同工作模式下的时间性能差异。一、核心处理流程与时序分解1.1 典型指令执行路径指令接收 → 协议解析 → 存储寻址 → 数据读取 → 数模转换 → 音频输出1.2 关键阶段时间分布(典型值)处理阶段PWM模式耗时DAC模式耗时外挂Flash模式耗时指令解析2-3ms2-3ms3-5ms存储寻址1ms1ms5-10m
    广州唯创电子 2025-03-31 09:26 185浏览
我要评论
0
2
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦