前言
目前,网口和网口的都调通了,但截图比较早了,而且光口的验证还有点麻烦,需要光模块和光交换机,设备需要协调,说白了,找人借,光口验的时候是先两个光口自环,然后再分别通过一个光转电的模块与电脑互ping,然后,看寄存器或者抓的信号来验证的,本篇主要分享下电口的调试和验证。
环境搭建
单板通过网线与电脑直连,PC通过串口进入单板系统,主要是BSP:寄存器读写、以太网配置,还有交换芯片的底软,监测连接状态。
千兆分析
Q0
前端只有PHY2有链接,所以只能抓到PHY2的data_valid
脉冲信号,虽然PHY3的status_vector
的[1:0]为11,但是bit[7]为0,表示link down,所以bit[7]为1的时候,状态向量显示的信息才有效。双、半双工、速率在bit[12]和bit[11:10],1、10即双工、1000
Q1
能看出哪里有问题吗?有两个,第一,双工、半双工显示为0,这个待会说;第二,就是PHY1的配置AN_adv
是16‘h9821
,这是因为上一版本赋值的默认值设置为了16‘h9821
,导致的问题就是因为bit[15]为1,就通知了交换芯片侧的reg5为link up!并且这一状态会一直保持,上一篇笔记已经强调并解决了这个问题。
但通过读交换侧的寄存器,发现已经配置好了千兆、双工模式
千兆转百兆全双工
咳咳,换了一个网口,所以现在是PHY1了
Q0
状态寄存器显示正确
这一张是前一张的放大图,时钟域是在125MHz的userclk2
,有效数据的时钟刚好是空闲的1/10,即12.5MHz
Q1
我抓取的AN_restart
信号,可以看到“重启”之后,phy mode的Q1与交换侧并没有立刻完成自协商,而是开始发送一系列数据,\C\码 AN sequence,就是上一篇所说的把Q1 reg4的内容advertise交换的reg5
同样,这里也有个问题,双工模式显示不正确。
但读寄存器显示的百兆全!至于这个问题,硬件的同事给的解释是电脑强制配置会导致全双工降至半双工,通过交换机就不会出现这种问题。
百兆全转百兆半
分析同上类似,可以看到读寄存器显示的信息是准确的d401-->c401
Q0
Q1
PING包
最直接的,两端配好IP,ping包
PCping
Q0
Q1
BoardPing
Q0
Q1
总结
目前该核的主要内容都已完成,一些细节的再慢慢补充。
但就调试的感悟就是,调试的一大目的也是为了发现问题,除了设计初期尽可能的保证设计,调试阶段则应尽可能的进行分析全面,否则,每次重新编译的时间就开销很大,对精力也是考验。