由於簡單通訊端伺服器範本中的預設超時期限,在 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)更新
}