SoC FPGA Linux Kernel เวอร์ชั่น 4.17 มิถุนายน 2018 และใหม่กว่า และ 4.18 และใหม่กว่า:
- เฉพาะความถี่สัญญาณนาฬิกาอ้างอิงระดับบนสุดสําหรับ Intel® Stratix® 10 SX เท่านั้นที่จะถูกระบุไว้ใน Linux Device Tree
- การตั้งค่าต้นนาฬิกาตามการตั้งค่าบนส่วนประกอบ HPS Stratix 10 ในการออกแบบ Intel® Quartus® Prime Pro Platform Designer ถูกโหลดจาก FPGA บิตสตรีมโดยไดรเวอร์ตัวจัดการนาฬิกา
สําหรับ SoC FPGA Linux Kernel เวอร์ชั่น 4.17 (ก่อนเดือนมิถุนายน 2018) และก่อนหน้า:
Linux Device Tree มีข้อมูลเกี่ยวกับโครงสร้างการนาฬิกาทั้งหมดของ Intel® Stratix® 10 SX และต้องแสดงการตั้งค่านาฬิกาในส่วนประกอบ HPS Stratix 10 ในการออกแบบ Intel® Quartus® Prime Pro Platform Designer
หากโครงสร้างการตอกบัตรไม่เป็นการอัปเดตเพื่อแสดงบอร์ดและการออกแบบ อุปกรณ์ต่อพ่วงอาจทํางานไม่ถูกต้องใน Linux
เคอร์เนล Linux ประกอบด้วยโครงสร้างอุปกรณ์ระดับบนสุดทั่วไปและแผนผังอุปกรณ์ตัวอย่างสําหรับชุดพัฒนา SX Intel Stratix 10:
arch/arm64/boot/dts/altera/
socfpga_stratix10.dtsi #Generic โครงสร้างอุปกรณ์ระดับสูง
Socfpga_stratix10_socdk.dts # ตัวอย่างแผนผังอุปกรณ์สําหรับชุดพัฒนา SX Intel Stratix 10, การออกแบบอ้างอิงฮาร์ดแวร์สีทอง (GHRD) และการออกแบบอ้างอิงซอฟต์แวร์สีทอง (GSRD)
หมาย เหตุ:
- การออกแบบอ้างอิงฮาร์ดแวร์สีทอง (GHRD) มีการจัดส่งพร้อม soC EDS Intel FPGA ในตัวอย่าง/ฮาร์ดแวร์/ โฟลเดอร์
- สามารถดาวน์โหลดการออกแบบอ้างอิงซอฟต์แวร์สีทอง (GSRD) ได้จาก Rocketboards.org https://rocketboards.org/foswiki/Documentation/GSRD
ปัญหานี้ได้รับการแก้ไขในเวอร์ชันเคอร์เนลที่ใหม่กว่า (5.X)
SoC FPGA Linux Kernel เวอร์ชั่น 4.17 มิถุนายน 2018 และใหม่กว่า และ 4.18 และใหม่กว่า:
เฉพาะความถี่สัญญาณนาฬิกาอ้างอิงระดับบนสุดสําหรับ Intel® Stratix® 10 SX เท่านั้นที่มีการระบุไว้ใน Linux Device Tree
clkmgr@ffd10000 {
นาฬิกา {
osc1 { ความถี่สัญญาณนาฬิกา = ; };
};
};
สําหรับ SoC FPGA Linux Kernel เวอร์ชั่น 4.17 (ก่อนเดือนมิถุนายน 2018) และก่อนหน้า:
socfpga_stratix10.dtsi แสดงการตั้งค่าที่เป็นไปได้สําหรับแต่ละส่วนประกอบทรีนาฬิกา
peri_emacb_clk: peri_emacb_clk@ec {
#clock-เซลล์ = ;
เข้ากันได้ = "altr,socfpga-s10-perip-clk";
นาฬิกา = , , , , ;
reg = ;
};
ด้านล่างนี้เป็นส่วนหนึ่งของแผนภูมิที่แสดงนาฬิกาที่ส่ง UART และ I2C โปรดสังเกตว่าตามค่าเริ่มต้นจะมีการตั้งนาฬิกาต้นทางสําหรับ IP ไว้ แต่ไม่ได้ตั้งค่าการเชื่อมต่อของนาฬิกา ชุด IP จะมีนาฬิกาที่จะ l4_sp_clock ซึ่งขับเคลื่อนโดย noc_clk แต่ noc_clk และ noc_free_clk ไม่มีไดรเวอร์ที่กําหนด:
:
main_noc_base_clk: main_noc_base_clk {
...
นาฬิกา = ;
...
};
noc_free_clk: noc_free_clk@4c {
...
นาฬิกา = , ,
;
...
};
noc_clk: noc_clk@30 {
...
นาฬิกา = , ;
...
};
l4_sp_clk: l4_sp_clk {
...
นาฬิกา = ;
...
};
i2c1: i2c@ffc02900 {
...
นาฬิกา = ;
...
};
uart0: serial0@ffc02000 {
...
นาฬิกา = ;
...
};
การตั้งค่าที่จําเป็นสามารถนําไปใช้ผ่านไฟล์ .dts สําหรับบอร์ดของคุณโดยใช้รายละเอียดที่แสดงด้านล่าง:
soc {
clkmgr@ffd10000 {
นาฬิกา {
osc1 {
ความถี่นาฬิกา = ;
};
periph_pll@e4 {
peri_emaca_clk@e8{
นาฬิกา = ;
};
peri_emacb_clk@ec {
นาฬิกา = ;
};
};
noc_free_clk@4c {
นาฬิกา = ;
};
noc_clk@30 {
นาฬิกา = ;
};
emaca_free_clk {
นาฬิกา = ;
};
emacb_free_clk {
นาฬิกา = ;
};
emac0_clk {
นาฬิกา = ;
};
emac1_clk {
นาฬิกา = ;
};
emac2_clk{
นาฬิกา = ;
};
};
};
};
};
ข้างต้นแก้ไขปัญหาสําหรับ UART / I2C และกําหนดนาฬิกาอีเธอร์เน็ตบางส่วน ขณะนี้ต้นนาฬิกาเสร็จสมบูรณ์จาก UART / I2C จนถึง PLL หลัก ซึ่งหมายความว่าตรรกะที่ตั้งค่า UART และ I2C ตามความถี่สัญญาณนาฬิกาต้นทางสามารถทําการคํานวณที่เหมาะสมได้
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับ Device Tree โปรดดูเอกสารประกอบ Linux Kernel