ID บทความ: 000086267 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 23/03/2020

ทําไมตัวอย่างการออกแบบเซิร์ฟเวอร์ซ็อกเก็ตอย่างง่ายของ Nios® II จึงไม่สามารถต่อรองอัตโนมัติที่ความเร็ว 1G ได้

สิ่งแวดล้อม

    Intel® Quartus® Prime Pro Edition
    ชุด Intel® Embedded Design Nios® II (EDS)
BUILT IN - ARTICLE INTRO SECOND COMPONENT
คำอธิบาย

เนื่องจากระยะเวลาการหมดเวลาตามค่าเริ่มต้นในเทมเพลตเซิร์ฟเวอร์ Simple Socket จึงมีโอกาสที่การเจรจาอัตโนมัติที่ความเร็ว 1G อาจล้มเหลวในอุปกรณ์ Cyclone® V, Cyclone® 10 และ Max® 10

ความละเอียด

เพื่อหลีกเลี่ยงปัญหานี้ ผู้ใช้จําเป็นต้องปรับเปลี่ยนซอร์สโค้ด BSP เพื่อเพิ่มการหน่วงเวลาการเจรจาต่อรองอัตโนมัติ และคอมไพล์ใหม่เพื่อสร้างไฟล์ ELF ใหม่โดยใช้คําแนะนําด้านล่าง

เปิดไฟล์ต่อไปนี้ในไดเรกทอรีโครงการ

.. /ซอฟต์แวร์/<project_name_bsp>/ไดรเวอร์/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) {

........................................

ในขณะที่(alt_tse_phy_rd_mdio_reg(pphy, TSE_PHY_MDIO_STATUS, TSE_PHY_MDIO_STATUS_AN_COMPLETE, 1) == 0 ){


ถ้า (> timeout_threshold หมดเวลา) { tse_dprintf(4, "คําเตือน : PHY[%d%d] - การเจรจาอัตโนมัติล้มเหลว\n", mac_group_index, mac_info_index);

/* คืนค่าที่อยู่ MDIO ก่อนหน้า */

alt_tse_phy_wr_mdio_addr (pphy, mdioadd_prev);

ส่งคืน TSE_PHY_AN_NOT_COMPLETE;


}


usleep(5000); อัปเดตจาก usleep(1000)

}

ผลิตภัณฑ์ที่เกี่ยวข้อง

บทความนี้จะนำไปใช้กับ 2 ผลิตภัณฑ์

Intel® Cyclone®
ซีพีแอลดีและเอฟพีจีเอ Intel® MAX®

1

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทําขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรพึ่งพาความสมบูรณ์หรือความถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคําแปล เวอร์ชันภาษาอังกฤษจะมีผลบังคับและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้