IMX RT10xx 以太网MAC地址Hash过滤
MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address)。网络数据包通过PHY进入MCU的MAC控制器,MAC对目的地址/源地址检查并过滤掉没用的数据帧。一般情况下,MCU检查每个以太网包的目的MAC地址,与自身的MAC地址一致,或者是广播包、多播包,就接收;否则就丢弃。如果用户应用需要接收多个目的MAC地址的数据帧,可以使用RT10xx的以太网MAC地址Hash过滤功能。
ENET MAC判断是否接收单播以太网帧,通过下面方式 1. Exact match匹配,必须匹配PALR/PAUR寄存器配置的本机MAC地址。 2. Hash Table的匹配模式,Hash table for unicastaddress filtering。
HashTable算法不是直接比较目标 MAC地址,Hash地址过滤方式将48位的 目标MAC地址,映射到 6位的 Hash值,来判断是否接收该数据帧。MAC接收到以太网帧后,会自动计算目标 MAC地址的 CRC32值,然后用该CRC32值的高 6位,作为索引号去检查 Hash表寄存器IAUR/IALR 对应位,如果该位的值是 1,则收到的以太网帧通过,否则就丢掉。例如,计算出MAC地址的CRC32是0x2C(二进制101100B),第6位是 1,则对应 IAUR的 第12位,如果该位是 1,则通过。
HashTable CRC32的计算公式可以参考附件的源代码,如下面mimxrt1050EthCalcCrc函数。 |