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®

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