工具/软件:TI-RTOS
大家好、
我们在客户电路板上的 RMII 设计中遇到了一个软件问题。 请帮助检查以下内容。
感谢您的任何评论或提示!
硬件平台:
采用 RMII 设计的客户产品板。
此设计可与 Linux 配合使用、请参阅以下屏幕截图。 因此硬件设计没有问题。
软件平台:
PRCESSOR-SDK-RTOS 1.0.7和1.0.8。
在这两个上进行了测试。
基于以下示例:
NIMU_BasicExample_skAM335x_armExampleproject
C:\ti\pdk_am335x_1_0_7\packages/MyExampleProjects\NIMU_BasicExample_skAM335x_armExampleproject
问题描述:
在 SK EVM 上运行时、如果网线插拔和插入、则可能会检测到链路状态。 从 PC 主机端、我们可以成功地对电路板执行 Ping 操作。
更改相关代码后、可以检测到链路状态、但无法从主机端成功 ping 通。
代码更改:
MAIN_skAM335x.c (位于 C:\ti\pdk_am335x_1_0_7\packages/ti\transport:NDK\Nimu\examples\src\)
将 RGMII 模式更改为 RMII 模式:
AM335x_evmsk_pinmux_data.c (位于 C:\ti\pdk_am335x_1_0_7\packages/ti\starterware\board\am335x 中)
将引脚多路复用数据从原始 RGMII 引脚更改为当前硬件设计使用的 RMII 引脚。
enet_phy.c (位于 C:\ti\pdk_am335x_1_0_7\packages/ti\board\src\skAM335x\device 中)
将_cpswIsGigPhy 定义从 true 更改为 FLASE、因为这不是千兆位以太网。
emac_soc.c (位于 C:\ti\pdk_am335x_1_0_7\packages/ti\drv\emac\soc \am335x\)
这是以太网 phy_id 参数所在的位置。 由于客户的设计对 EMAC1使用0,对 EMAC2使用1,因此与 SK EVM 使用的值相同。 因此不需要更改。
编译过程:
由于 board_lib、EMAC 有一些变化、我们必须首先重新编译 board_lib 和 EMAC、然后转到 CCS 项目 NIMU_BasicExample_skAM335x_armExampleproject 进行最终编译。
测试结果:
在此测试中、我们插入和拔出网线3次、因此您可以看到连接建立3次、如下所示:
但是、在 PC 主机端、我们无法成功对电路板执行 Ping 操作。
验证过程:
我们检查了寄存器的 pinmux 和 gmii_SEL 设置、结果发现所有设置都生效。
通过与 Linux uboot 的寄存器转储进行比较、每个引脚和 gmii_SEL 寄存器的引脚多路复用设置都显示了正确的值。
此外、我们还执行了一些测试来验证 phy_id 设置、如果对于 EMAC1端口、phy_id 更改为0以外的其他值、则会报告以下问题:
从我的角度来看、gmii_SEL、pinmux 设置、phy_id 都是正确的。
问题:
还有什么可能导致产品板 PC 主机 ping 失败?





