由于简单套接字服务器模板中的默认超时期限,Cyclone® V、Cyclone® 10 和 Max® 10 设备中,1G 速度的自动协商可能会失败。
要变通解决此问题,用户需要修改 BSP 源代码以增加自动协商超时延迟,并使用以下说明重新编译以生成新的 ELF 文件。
在项目目录中打开以下文件:
../software/<project_name_bsp>/drivers/src/altera_avalon_tse.c
将超时延迟从“usleep(1000)”更改为“usleep(5000)”,如下一部分代码所示:
alt_32 alt_tse_phy_restart_an(alt_tse_phy_info *pphy, alt_u32 timeout_threshold) {
........................................
while(alt_tse_phy_rd_mdio_reg(pphy, TSE_PHY_MDIO_STATUS, TSE_PHY_MDIO_STATUS_AN_COMPLETE, 1) == 0 ){
if(timeout > timeout_threshold) { tse_dprintf(4, “WARNING : PHY[%d.%d] - Auto-Negotiation FAILED\n”, mac_group_index, mac_info_index);
/* 恢复以前的 MDIO 地址 */
alt_tse_phy_wr_mdio_addr(pphy,mdioadd_prev);
返回TSE_PHY_AN_NOT_COMPLETE;
}
休眠(5000);更新自 Usleep(1000)
}