问题描述
为VxWorks 5.x提供的EMAC驱动程序与自动协商PHY不直接兼容。 OPB以太网v1.02a文档指出,“如果PHY在自动协商模式下运行,则软件有责任确保此模式与PHY匹配。”
我怎样才能做到这一点?
解决/修复方法
您可以通过管理界面访问PHY,然后使用EMAC驱动程序的级别“1”接口设置或清除控制核心全双工操作的EMAC选项。此操作的示例代码如下:
#include“xemac_end_adapter.h”
/ *
PhyAddr是电路板设计的一个因素,但通常为0.单位
与VxWorks加载EMAC实例的顺序相关联。
对于具有单个EMAC的设计,单位应为0。
* /
void SetDuplex(int PhyAddr,int Unit)
{
XEmac * MacPtr = XEmacEndAdapter_GetDriver(单位);
Xuint16数据;
Xuint32选项;
if(MacPtr == NULL)
{
返回; / * VxWorks尚未加载此单元* /
}
XEmac_Stop(MacPtr);
Options = XEmac_GetOptions(MacPtr);
/ *检查PHY的MII控制寄存器* /
XEmac_PhyRead(MacPtr,PhyAddr,0,&Data);
if(Data&0x0100)
{
/ *全双工* /
XEmac_SetOptions(MacPtr,Options&XEM_FDUPLEX_OPTION);
}
其他
{
/ *以半双工方式运作* /
XEmac_SetOptions(MacPtr,Options&~XEM_FDUPLEX_OPTION);
}
XEmac_Start(MacPtr);
}
用于检查数据的常数对于遵循MII标准的所有PHY应该是相同的。
没有回复内容