由於兩個不同的問題,Intel® Stratix® 10 SoC FPGA硬核處理器系統 (HPS) 裝置上的 UART、I2C 和 SPI IP 可能會在較舊的核心版本上以錯誤的速度執行。
使用非預設 MPU 頻率頻率時,SoC FPGA Linux Kernels 4.17 和更新版本(2018 年 6 月之後),使用非預設 MPU 頻率:上傳至 HTTPs://github.com/altera-opensource/linux-socfpga 的修復和修補程式會執行 23d4f7b2c6000e095399a6266ef35c213f93649e
- 在 SoC FPGA Linux 4.17 核心和更新版本中,Stratix 10 頻率管理器驅動程式會從FPGA位流擷取計時資訊。裝置樹中僅指定參考頻率頻率。
- 由於問題,如果 MPU 頻率設定為非預設值,某些頻率可能不正確。
SoC FPGA Linux 核心 2018 年 6 月前 4.17,以及 4.16 及更早版本:
- Linux 裝置樹包含 Intel® Stratix® 10 SoC FPGA硬核處理器系統 (HPS) 的計時結構相關資訊。它必須反映硬處理器系統中的頻率設定,Intel Stratix Intel® Quartus® Prime Pro 平臺設計者系統中的 10 FPGA IP。 如果計時結構未更新以反映主機板與設計,則周邊裝置在 Linux 中可能會操作不正確。 一般的問題是 UART 或 I2C 介面在 u-boot 中運作,但在 Linux 中無法運作。
- 由於問題,如果 MPU 頻率設定為非預設值(下方的解決方法),某些頻率可能不正確
此問題已針對較新的核心版本修復。頻率資訊會從FPGA組態位流和更新的頻率驅動程式讀取。
使用非預設 MPU 頻率頻率時,SoC FPGA Linux 核心 4.17 和更新版本(2018 年 6 月之後)
- 此問題已修復為 HTTPs://github.com/altera-opensource/linux-socfpga 上的 4.18 核心,承諾 23d4f7b2c6000e095399a6266ef35c213f93649e
- 此問題也可以使用修補程式0002_clk-pll-s10_L3L4clockFrequencyFix_1.修補程式
此外,請參閱相關的 KDB:當我使用f2s_free_clock作為 HPS 參考頻率時,為什麼 Linux 無法開機于 Intel® Stratix® 10 SoC?
Soc FPGA Linux 核心 4.17 于 2018 年 6 月前和 4.16 日及更早版本:
請參閱 如何將 Linux 裝置樹更新為 Stratix 10 SX,以符合平臺設計者中的頻率設定? 以取得如何更新 Linux 裝置樹以反映設計中的計時設定的資訊。
若使用非預設 MPU 頻率頻率,則要解決數學錯誤問題
- 手動設定裝置樹中的 L3、L4 L4 慢速頻率頻率
6 離開邏輯來描述 PLL 的
6 從 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-gate = ;
};
l4_mp_clk:l4_mp_clk {
#clock單元 = ;
#compatible = 「altr,socfpga-s10-gate-clk」;
#clocks = ;
頻率頻率 = ;
相容 =「固定頻率」;
#div-reg= ;
#clk-gate = ;
};
l4_sp_clk:l4_sp_clk {
#clock單元 = ;
#compatible = 「altr,socfpga-s10-gate-clk」;
#clocks = ;
頻率頻率 = ;
相容 =「固定頻率」;
#div-reg= ;
#clk-gate = ;
};