記事 ID: 000086392 コンテンツタイプ: トラブルシューティング 最終改訂日: 2018/10/18

インテル® Stratix® 10 HPS UART / I2C / SPI ペリフェラルが誤った速度で実行されるのに、Linux で動作しないのはなぜですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション

Linux-socfpga 4.X

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

2 つの異なる問題により、ハード・プロセッサー・システム (HPS) デバイスFPGA 10 SoC インテル® Stratix® UART、I2C、SPI IP は、古いバージョンのカーネルで誤った速度で動作する可能性があります。

SoC FPGA Linux カーネル 4.17 以降 (2018年6月以降) 非デフォルトの MPU クロック周波数が使用される場合: 修正済みで、https://github.com/altera-opensource/linux-socfpga コミットにアップロードされたパッチ 23d4f7b2c6000e09539a6266ef35c213f93649e

  • SoC FPGA Linux 4.17 カーネル以降では、Stratix 10 クロック・マネージャー・ドライバーは、FPGA・ビットストリームからクロック情報を抽出します。リファレンス・クロック周波数のみが、デバイスツリーで指定されます。
  • 問題のため、MPU 周波数が非デフォルト値に設定されている場合、一部の周波数が誤っている可能性があります。

SoC FPGA Linux カーネル 4.17 は、2018年6月より前および 4.16 以前:

  • Linux デバイスツリーには、ハード・プロセッサー・システム (HPS) をインテル® Stratix® 10 SoC FPGAクロック構造に関する情報が含まれています。インテル® Quartus® Prime Pro プラットフォーム・デザイナー・システムのハード・プロセッサー・システム インテル Stratix 10 FPGA IP のクロック・セットアップを反映している必要があります。 ボードとデザインを反映するようにクロック構造が更新されていない場合、Linux ではペリフェラルが正しく動作しない可能性があります。 一般的な問題は、u-boot で動作する UART または I2C インターフェイスですが、Linux では動作しません。
  • 問題が原因で、MPU 周波数が非デフォルト値に設定されている場合、一部の周波数が誤っている可能性があります (以下の回避策)

この問題は、新しいバージョンのカーネルで修正されました。クロック情報は、FPGA・コンフィグレーション・ビットストリームおよび更新されたクロックドライバーから読み込まれます。

解決方法

SoC FPGA Linux カーネル 4.17 以降 (2018年6月以降)、非デフォルトの MPU クロック周波数を使用する場合

  • この問題は、コミットが 23d4f7b2c6000e095399a6266ef35c213f93649e の https://github.com/altera-opensource/linux-socfpga の 4.18 カーネルで修正されています
  • また、この問題0002_clk-pll-s10_L3L4clockFrequencyFix_1.patch を回避できるパッチも利用可能です。

また、関連する KDB を参照してください: f2s_free_clockを HPS リファレンス・クロックとして使用する際、インテル® Stratix® 10 SoC で Linux の起動に失敗する原因は何ですか?

 

Soc FPGA Linux カーネル 4.17 (2018年6月以前、4.16 以前):

Linux デバイスツリーを更新してデザインのクロック設定を反映させる方法については、プラットフォーム・デザイナーのクロック設定に合わせて、Stratix 10 SX の Linux デバイスツリーを更新する方法 を参照してください。

非デフォルトの 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ゲート = ;

};

関連製品

本記事の適用対象: 1 製品

インテル® Stratix® 10 SX SoC FPGA

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。