DP83867IR WoL不稳定运行
1. 前言
DP83867IR被用作千兆以太网实现的PHY
当检测到预定义的64字节序列时
PHY被配置为在GPIO_0上提供一个脉冲
FSD后从位置62开始进行64字节匹配的PHY编程如下图所示:
Step Register Value (hex) Description
1 0x13C (RXFPAT1) 0x5f47 Pattern Bytes 0 and 1
2 0x13D (RXFPAT2) 0C0E Pattern Bytes 2 and 3
3 0x13E (RXFPAT3) FB4B Pattern Bytes 4 and 5
4 0x13F (RXFPAT4) 1D64 Pattern Bytes 6 and 7
5 0x140 to 0x15A(RXFPAT5) to (RXFPAT31) Bytes 8 to 61 Pattern Bytes 8 to 61
6 0x15B (RXFPAT32) 49E6 Pattern Bytes 60 and 61
7 0x15B (RXFPAT32) 54FB Pattern Bytes 60 and 61
8 0x15C (RXFPBM1) 0000 Byte Mask 0 to 15
9 0x15D (RXFPBM2) 0000 Byte Mask 16 to 31
10 0x15E (RXFPBM3) 0000 Byte Mask 32 to 47
11 0x15F (RXFPBM4) 0000 Byte Mask 48 to 63
12 0x0161 (RXFSTS) 003E Pattern start point (62 decimal)
13 0x0172 (GPIO_MUX_CTRL) 0003 Configures GPIO_0 pin for WoL Indication
14 0x0134 (RXFCFG) 0182 WoL on pattern enabled, level Indication
当发送图案时,设置工作正常,它提供了GPIO_0引脚上的脉冲
还证实,如果发送一个轻微损坏的模式,PHY不会错误地识别它。
面临的问题是,PHY运行大约一个小时后,产生错误的WoL检测,
没有接收到正确的模式
在错误的WoL检测后,我们检查了PHY寄存器,但发现它们的设置没有被破坏
同样的行为被测试了几次,并且使用了几块硬件板
将WoL模式的起始位置改为42似乎可以解决问题:
48小时后没有收到错误的WoL
2. 复现条件
卡有一个缺省配置的1000以太网端口,除了WoL之外
给出了它的设置
连接如下:
Pin Name 48QFN Pin # Mode PU/PD Resistors Notes
RX_D0 33 1 None Address = 0
RX_D2 35 1 None Address = 0
RX_CTRL 28 3 PU=5k76, PD=2k49 Auto neg. enabled
LED_2 45 1 None TX clock skew = 2ns
LED_1 46 1 None TX clock skew = 2nsANEG_SEL=0 (ability of 10/100/1000)
LED_0 47 1 None Mirror disabled
GPIO_0 39 1 PD=2k49, No PU RX clock skew = 2ns
GPIO_1 40 1 None RX clock skew = 2ns
为了加速不稳定的WoL,应该有与卡频繁的通信
没有与卡的联系,我们花了大约一周的时间才得到一个不稳定的WoL,其模式为62
3. 寄存器问题分析
有2个寄存器写入到0x015B
认为这是一个错误配置
确认一下字节8到59
用于设置PHY寄存器的脚本是正确的,并将模式的所有64字节设置为Ok。屏蔽位全为零
另外一个澄清:
WoL模式并非全为零,它是一个特定的模式。
验证了,当发送正确的模式,在与帧开始相关的正确位置,它确实产生WoL信号
还检查了发送模式中哪怕是一个位的更改都不会激活WoL
4. 验证WoL功能
已经用从字节62开始的模式验证了WoL功能
已经包含了写到DP83867时使用的脚本
为了进一步验证,在配置寄存器0x0172之后,我在GPIO_0引脚上捕获了WoL脉冲
还配置了寄存器0x0134到0x0082,为脉冲配置了WOL_OUT_MODE
//delay 100
//0000 2100 // force 100Mbps, full-duplex
013C 475f //Pattern Bytes 0 and 1
013d 0e0c //Pattern Bytes 2 and 3
013e 4bfb //Pattern Bytes 4 and 5
013f 641d //Pattern Bytes 6 and 7
0140 0000 //
0141 0000 //
0142 0000 //
0143 0000 //
0144 0000 //
0145 0000 //
0146 0000 //
0147 0000 //
0148 0000 //
0149 0000 //
014a 0000 //
014b 0000 //
014c 0000 //
014d 0000 //
014e 0000 //
014f 0000 //
0150 0000 //
0151 0000 //
0152 0000 //
0153 0000 //
0154 0000 //
0155 0000 //
0156 0000 //
0157 0000 //
0158 0000 //
0159 0000 //
015a e649 //Pattern Bytes 60 and 61
015b fb54 //Pattern Bytes 60 and 61
015c 0000 //Byte Mask 0 to 15
015d 0000 //Byte Mask 16 to 31
015e 0000 //Byte Mask 32 to 47
015f 0000 //Byte Mask 48 to 63
0161 0000 //Pattern start point (62 decimal)
0172 0003 //Configures GPIO_0 pin for WoL Indication
0134 0082 //WoL on pattern enabled, level Indication, pulse mode
然后配置SmartBits与以下模式的生成
5. 问题分析
所遇到的问题与发送正确图案时PHY的“正常”响应无关
而是在没有接收预设图案的情况下产生不稳定的脉冲WoL
一些建议:
当观察这些WoL脉冲时,任何数据包吗?
还是线路是无声的?
如果发送数据包,你是否发送随机数据包(不是指定的魔法数据包)?
或者是在发送类似于魔法包的数据包吗?
发送的任何数据包都与魔法数据包匹配吗?
观察WoL时,只是通过PHY与卡进行通信
没有发送任何类似的数据包到魔术包或设置WoL包
实际上,我们使用Wireshark监控线路,非常确定没有WoL模式到达PHY之前得到不稳定的WoL检测
请注意,可能需要一段时间才会发生
不稳定的WoL(有时可能需要一个星期,这取决于通信流量)
设置了WoL设置和smartbits传输一个预定义的数据包,不匹配WoL魔法模式
会让示波器在"单"捕获模式下运行一整夜然后以1.7V的电压触发
看看是否能得到WoL脉冲
6. 实验结果
执行了如上所述的测试,没有WoL脉冲
向PHY发送的模式类似于魔术模式
除了数据模式字节被替换为“FF”
(范围设置在单次捕获和1.7V触发)
建议:
确保数据中没有随机化,
因为在smartbits上使用随机序列函数时确实看到了WoL脉冲
魔法包中的字节掩码越少(字节为“00”),序列匹配随机数据并发送WoL脉冲的概率就越低
- 分享
- 举报
-
浏览量:4266次2021-07-03 14:35:11
-
浏览量:6365次2021-07-16 10:03:51
-
2022-12-16 09:27:46
-
浏览量:2264次2020-07-29 14:26:10
-
浏览量:1895次2021-11-30 09:50:29
-
浏览量:1645次2019-11-18 17:23:37
-
浏览量:1890次2018-06-04 15:50:05
-
浏览量:7024次2021-12-11 15:15:40
-
浏览量:1498次2018-06-05 16:37:34
-
浏览量:1816次2018-02-05 00:29:41
-
浏览量:1693次2018-04-20 21:10:49
-
浏览量:1453次2020-06-08 10:55:16
-
浏览量:1871次2019-11-08 17:15:31
-
浏览量:2951次2022-05-26 10:04:36
-
浏览量:5650次2021-04-20 16:14:27
-
浏览量:5038次2021-07-29 11:53:53
-
浏览量:8183次2020-12-04 21:24:42
-
浏览量:3072次2021-05-19 09:56:59
-
浏览量:1968次2020-04-03 10:15:29
-
178篇
- MKE14F512VLL16单片机用不同的端口使用相同的 LPUART 模块
- Linux驱动之设备树添加LED驱动
- Mp4423电路图优化与测试
- 超越连接:ZL-450边缘网关全面评测与应用案例
- 基础知识-ubuntu简易服务
- 延时仅33us,Linux-RT实时性能测试分享—基于瑞芯微RK3562J国产平台
- Jetson Xavier NX 安装 Deepstream6.3
- 12G-SDI高清视频开发案例,让4K视频采集更便捷!基于Xilinx MPSoC高性能平台
- nvidia xavier平台lan7800网卡驱动调试记录(2)网卡硬件& patch验证
- 新基建的关键安全问题,如何实现?
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明