文章 ID: 000088371 內容類型: 疑難排解 最近查看日期: 2023 年 08 月 16 日

為什麼在我的 Cyclone® V SoC 設計上,HPS EMAC 掛起且 RX 緩衝區已滿?

環境

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:cache-controller@fffef000 {

相容 = 「arm,pl310-cache」;

註冊 = <0xfffef000 0x1000>;

中斷 = <0 38 0x04>;

緩存統一;

緩存級別 = <2>;

arm,標籤延遲 = <1 1 1>;

ARM,資料延遲 = <2 1 1>;

預取資料 = <1>;

prefetch-instr = <1>;

arm,共用覆蓋; # 檢查這是否存在

臂,雙線填充 = <1>;

臂,雙線填充增量 = <0>;

臂,雙線填充包裝 = <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 配置 = <&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

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。