記事 ID: 000088371 コンテンツタイプ: トラブルシューティング 最終改訂日: 2023/08/16

Cyclone® V SoC デザインで、RX バッファーがいっぱいの状態で HPS EMAC がハングするのはなぜですか?

環境

Linux-socfpga

BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

Linux-socfpga カーネルバージョン 5.4 以降の問題により、状況によっては HPS EMAC がハングまたはストールすることがあります。

この問題は、Cyclone® V SoC Linux デバイスツリーの設定が正しくないために発生します

  • 共有イネーブルオーバーライドビットは、L2C-310キャッシュコントローラで有効にする必要があります
  • 読み取りと書き込みの未処理トランザクション制限は、EMAC DMA で 0xf に設定する必要があります
解決方法

この問題を回避するには、次の手順を実行します。


1. arch/arm/boot/dts/socfpga.dtsi を編集して、L2C-310 デバイスツリー・ノードが共有のイネーブル・オーバーライド・ビットに設定されていることを確認します

L2: キャッシュcontroller@fffef000 {

compatible = "arm,pl310-cache";

reg = <0xfffef000 0x1000>;

割り込み = <0 38 0x04>;

キャッシュ統合;

キャッシュレベル = <2>;

arm,tag-latency = <1 1 1>;

ARM,データ・レイテンシー = <2 1 1>;

プリフェッチデータ= <1>;

prefetch-instr = <1>;

アーム、共有オーバーライド; # これが存在することを確認します

ARM、ダブルラインフィル= <1>;

ARM,ダブルラインフィル-incr = <0>;

ARM、ダブルラインフィルラップ= <1>;

ARM、プリフェッチドロップ= <0>;

ARM,プリフェッチオフセット = <7>;

};

2. イーサネット・ノード を編集 して snps,axi-config のリファレンスを追加し、arch/arm/boot/dts/socfpga.dtsi に snps,axi-config のノード を追加します

GMAC0 の例:

diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi

インデックス E404220..90A0560 100644

--- a/arch/arm/boot/dts/socfpga.dtsi

+++ b/arch/arm/boot/dts/socfpga.dtsi

@@ -560,10 +560,16@@

リセット名 = "stmmaceth";

SNPS,マルチキャスト・フィルター・ビン = <256>;

SNPS,完全フィルタエントリ = <128>;

+ snps,axi-config = <&stmmac_axi_setup_0>;

TX-FIFO-depth = <4096>;

rx-fifo-depth = <4096>;

ステータス = "無効";

};

+

+ stmmac_axi_setup_0: stmmac-axi-config_0 {

+ SNPS,wr_osr_lmt = <0xf>;

+ SNPS,rd_osr_lmt = <0xf>;

+ };

この問題は、linux-socfpga-5.10.120-lts および linux-socfpga-5.15.30-lts ブランチで修正されています。

関連製品

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

Cyclone® V ST SoC FPGA
Cyclone® V SX SoC FPGA
Cyclone® V SE SoC FPGA

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