我们是AM335x+KSZ9031RNX的PHY,是RGMII链接,现在有两个问题:
1.与PC链接的时候自适应经常会识别成百兆
2.自适应成百兆以后,通信一段时间之后,CPDMA就不发送了,DMASTATUS寄存器的TX_HOST_ERR_CODE位是0x0010这个错误,这个错误大概是什么问题,可以这么解决?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们是AM335x+KSZ9031RNX的PHY,是RGMII链接,现在有两个问题:
1.与PC链接的时候自适应经常会识别成百兆
2.自适应成百兆以后,通信一段时间之后,CPDMA就不发送了,DMASTATUS寄存器的TX_HOST_ERR_CODE位是0x0010这个错误,这个错误大概是什么问题,可以这么解决?
用的是什么操作系统?Linux吗?
网络这块,我之前没怎么用过starterware,但是对于LInux来说,确实是有这个delay的配置。而且在代码的部分还会在PHY端通过寄存器的配置,来加入该delay。
以SDK6.0的uboot代码为例:EZSDK_06_00_00_00/board-support/u-boot-2013.01.01-psp06.00.00.00/board/ti/am335x/board.c
863 /*
864 *
865 * CPSW RGMII Internal Delay Mode is not supported in all PVT
866 * operating points. So we must set the TX clock delay feature
867 * in the AR8051 PHY. Since we only support a single ethernet
868 * device in U-Boot, we only do this for the first instance.
869 */
870 #define AR8051_PHY_DEBUG_ADDR_REG 0x1d
871 #define AR8051_PHY_DEBUG_DATA_REG 0x1e
872 #define AR8051_DEBUG_RGMII_CLK_DLY_REG 0x5
873 #define AR8051_RGMII_TX_CLK_DLY 0x100
874
875 // if (board_is_evm_sk() || board_is_gp_evm()) {
876 const char *devname;
877 devname = miiphy_get_current_dev();
878
879 miiphy_write(devname, 0x0, AR8051_PHY_DEBUG_ADDR_REG,
880 AR8051_DEBUG_RGMII_CLK_DLY_REG);
881 miiphy_write(devname, 0x0, AR8051_PHY_DEBUG_DATA_REG,
882 AR8051_RGMII_TX_CLK_DLY);