9.1i EDK  – 如何使VxWorks 5.x EMAC驱动程序与自动协商PHY兼容?-Altera-Intel社区-FPGA CPLD-ChipDebug

9.1i EDK – 如何使VxWorks 5.x EMAC驱动程序与自动协商PHY兼容?

问题描述

为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应该是相同的。

请登录后发表评论

    没有回复内容