เนื่องจากสองปัญหาที่แตกต่างกัน UART, I2C และ IP SPI บนอุปกรณ์ Intel® Stratix® 10 SoC FPGA Hard Processor System (HPS) อาจทํางานที่ความเร็วที่ไม่ถูกต้องในเวอร์ชันเคอร์เนลเก่า
SoC FPGA Linux Kernels 4.17 และใหม่กว่า (หลังเดือนมิถุนายน 2018) เมื่อใช้ความถี่สัญญาณนาฬิกา MPU ที่ไม่ใช่ค่าเริ่มต้น: อัปโหลดแก้ไขและอัปโหลดเพื่อ https://github.com/altera-opensource/linux-socfpga ยอมรับ 23d4f7b2c600e095399a6266ef35c213f93649e
- ใน SoC FPGA Linux 4.17 Kernels และใหม่กว่า ไดรเวอร์ Stratix 10 Clock Manager จะดึงข้อมูลการนาฬิกาจากบิตสตรีม FPGA ระบุเฉพาะความถี่นาฬิกาอ้างอิงในโครงสร้างอุปกรณ์
- เนื่องจากปัญหา ความถี่บางอย่างอาจไม่ถูกต้องหากตั้งความถี่ MPU เป็นค่าที่ไม่ใช่ค่าเริ่มต้น
SoC FPGA Linux Kernels 4.17 ก่อนเดือนมิถุนายน 2018 และ 4.16 และก่อนหน้า:
- Linux Device Tree มีข้อมูลเกี่ยวกับโครงสร้างการตอกบัตรของ Intel® Stratix® 10 SoC FPGA Hard Processor System (HPS) โดยต้องแสดงการตั้งค่าสัญญาณนาฬิกาในระบบฮาร์ดโปรเซสเซอร์ Intel Stratix IP FPGA 10 ตัวในระบบ Intel® Quartus® Prime Pro Platform Designer หากโครงสร้างการตอกบัตรไม่เป็นการอัปเดตเพื่อแสดงบอร์ดและการออกแบบ อุปกรณ์ต่อพ่วงอาจทํางานไม่ถูกต้องใน Linux ปัญหาทั่วไปคืออินเทอร์เฟซ UART หรือ I2C ทํางานใน u-boot แต่ไม่สามารถใช้งานได้ใน Linux
- เนื่องจากปัญหา ความถี่บางอย่างอาจไม่ถูกต้องหากตั้งความถี่ MPU เป็นค่าที่ไม่ใช่ค่าเริ่มต้น (การแก้ไขปัญหาด้านล่าง)
ปัญหานี้ได้รับการแก้ไขสําหรับเวอร์ชัน Kernel ที่ใหม่กว่า ข้อมูลนาฬิกาจะถูกอ่านจากบิตการกําหนดค่า FPGA และด้วยไดรเวอร์นาฬิกาที่อัปเดต
SoC FPGA Linux Kernels 4.17 และใหม่กว่า (หลังเดือนมิถุนายน 2018) เมื่อมีการใช้ความถี่สัญญาณนาฬิกา MPU ที่ไม่ใช่ค่าเริ่มต้น
- ปัญหานี้ได้รับการแก้ไขสําหรับเคอร์เนล 4.18 บน https://github.com/altera-opensource/linux-socfpga โดยมี 23d4f7b2c6000e095399a6266ef35c213f93649e
- นอกจากนี้ยังมีโปรแกรมแก้ไขสําหรับแก้ไขปัญหานี้ 0002_clk-pll-s10_L3L4clockFrequencyFix_1.patch
และดู KDB ที่เกี่ยวข้อง: เหตุใด Linux จึงไม่สามารถบูตบน Intel® Stratix® 10 SoC ของฉันเมื่อฉันใช้ f2s_free_clock เป็นสัญญาณนาฬิกาอ้างอิง HPS
Soc FPGA Linux Kernels 4.17 ก่อนเดือนมิถุนายน 2018 และ 4.16 และก่อนหน้า :
ดู ฉันจะอัปเดต Linux Device Tree สําหรับ Stratix 10 SX เพื่อให้ตรงกับการตั้งค่านาฬิกาใน Platform Designer ได้อย่างไร สําหรับข้อมูลเกี่ยวกับวิธีอัปเดต Linux Device Tree เพื่อแสดงการตั้งค่านาฬิกาในการออกแบบของคุณ
หากต้องการแก้ไขข้อผิดพลาดทางคณิตศาสตร์หากมีการใช้ความถี่นาฬิกา MPU เริ่มต้น
- ตั้งค่าความถี่นาฬิกาช้า L3,L4 L4 ด้วยตนเองในโครงสร้างอุปกรณ์
○ ปล่อยให้ตรรกะนี้อธิบาย PLL
○ ควบคุมนาฬิกาจากตัวแบ่ง L3
l3_main_free_clk: l3_main_free_clk {
#clock-เซลล์ = ;
#compatible = "altr,socfpga-s10-perip-clk";
#clocks = ;
ตัวแบ่ง#fixed = ;
ความถี่นาฬิกา = ;
เข้ากันได้ = "นาฬิกาคงที่"
};
l4_sys_free_clk: l4_sys_free_clk {
#clock-เซลล์ = ;
#compatible = "altr,socfpga-s10-perip-clk";
#clocks = ;
ตัวแบ่ง#fixed = ;
ความถี่นาฬิกา = ;
เข้ากันได้ = "นาฬิกาคงที่"
};
l4_main_clk: l4_main_clk {
#clock-เซลล์ = ;
#compatible = "altr, socfpga-s10-gate-clk"
#clocks = ;
ความถี่นาฬิกา = ;
เข้ากันได้ = "นาฬิกาคงที่";
#div-reg = ;
#clk-เกต = ;
};
l4_mp_clk: l4_mp_clk {
#clock-เซลล์ = ;
#compatible = "altr, socfpga-s10-gate-clk"
#clocks = ;
ความถี่นาฬิกา = ;
เข้ากันได้ = "นาฬิกาคงที่";
#div-reg= ;
#clk-เกต = ;
};
l4_sp_clk: l4_sp_clk {
#clock-เซลล์ = ;
#compatible = "altr, socfpga-s10-gate-clk"
#clocks = ;
ความถี่นาฬิกา = ;
เข้ากันได้ = "นาฬิกาคงที่";
#div-reg= ;
#clk-เกต = ;
};