(协议栈修改的helloword UDP,在开发板上运行正常,图片显示有问题的话,可以查附件2843.C6678与88E1512调试问题.docx)
1-TMS320C6678与88e1512(以下统一称为PHY)通过SGMII接口进行连接,硬件回路上使用0.1uf电容进行AC耦合;
2-MDIO和MDC接口连接PHY芯片,通过读取寄存器和写入寄存器,能够确定MDIO接口工作正常,PHY芯片可以进行配置,且通过软复位之后,再次读取寄存器值证明写入成功;
3-PHY的MDI引脚通过0.1uF电容与PC端的网口连接,直接上电后能够显示PHY与PC端完成link up,且使用88e1512自带的packet generator(通过MDIO设置PHY寄存器)可以验证PHY发送出来的数据PC端是能够接受到的;
4-DSP启动过程如下:系统时钟初始化(初始化成功,能够测试到sysclkout输出166MHz);使能电源域MyPowerUpDomains();初始化Serdes(我的输入时钟是125M,故设置值为0x000000A1),可以看到是初始化成功了;
然后初始化MDIO,通过寄存器读取和抓取DSP在MDIO引脚上的输出电平,能够看到初始化成功了;
初始化MDIO后,开始配置PHY寄存器,配置内容如下:
配置PHY为SGMII to copper模式,并通过软件复位使能该配置(我使用uiRegValue直接赋值的原因是我使用官方的Get_Reg函数读取出来的值全部为0,但抓取gpMDIO_regs是能够读到寄存器值的,这个原因不详,所以只能直接赋值进行配置了);
后边的配置主要包括屏蔽PHY的半双工模式(9_0)、配置速率为百兆(21_2),自协商还是使能着的,然后复位page进行使能;
紧接着使能SGMII(0),这个里面速率设置为100Mbps,全双工,能够看到自协商和linkup都通过了。
最后开始启动协议栈。
5-整个程序在官方开发板运行正常,除了PHY芯片的配置是额外添加的,Serdes时钟和SGMII接口有变化,其他均未改动;官方开发板运行的结果,ping能够通,数据收发也没有问题;但程序在自己的板子上能够看到MAC建立起来(官方开发板和自己的板子运行结果均如下),IP也添加,但就是无法数据收发和ping。程序启动起来后,DSP读取PHY的LINK_REG、ALIVE_REG、LINK_INT_RAW_REG、LINK_MASKED_REG均为1。
请各位大佬拨冗指导一下。