文章 ID: 000086394 内容类型: Product Information & Documentation 上次审核日期: 2018 年 10 月 17 日

如何更新英特尔® Stratix® 10 SX 设备的 Linux 设备树,以匹配 Quartus® Prime Pro Platform Designer 中的时钟设置?

环境

  • 英特尔® Quartus® Prime Pro Edition
  • Linux-socfpga 4.X

    BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明

    SoC FPGA Linux 内核版本 4.17 2018 年 6 月和更高版本,以及 4.18 及更高版本:

    • Linux 设备树中仅指定了英特尔® Stratix® 10 SX 的顶级参考时钟频率。
    • 时钟管理器驱动程序从FPGA比特流中加载英特尔® Quartus® Prime Pro Platform Designer 设计中的Stratix 10 HPS 组件上的时钟树设置。

    对于 SoC FPGA Linux 内核版本 4.17(2018 年 6 月之前)和更早的版本:

    Linux 设备树包含有关 英特尔® Stratix® 10 SX 的完整时钟结构的信息,并且必须在英特尔® Quartus® Prime Pro Platform Designer 设计中反映Stratix 10 HPS 组件中的时钟设置。

    如果时钟结构未更新以反映您的主板和设计,外围设备可能会在 Linux 中操作不正确。

    Linux 内核包含一个通用顶级设备树和 英特尔 Stratix 10 SX 开发套件的示例设备树:

    arch/arm64/boot/dts/altera/

    socfpga_stratix10.dtsi #Generic顶级设备树

    英特尔 Stratix 10 SX 开发套件、黄金硬件参考设计 (GHRD) 和黄金软件参考设计 (GSRD) 的 Socfpga_stratix10_socdk.dts # 示例器件树

     

    注意:

    • 黄金硬件参考设计 (GHRD) 随示例/硬件/文件夹中的英特尔 FPGA SoC EDS 一同发货
    • 黄金软件参考设计 (GSRD) 可从 Rocketboards.org https://rocketboards.org/foswiki/Documentation/GSRD 下载

    此问题已在以后的内核版本 (5.X) 中修复

    解决方法

    SoC FPGA Linux 内核版本 4.17 2018 年 6 月和更高版本,以及 4.18 及更高版本:

    在 Linux 设备树中仅指定了英特尔® Stratix® 10 SX 的顶级参考时钟频率。

    clkmgr@ffd10000 {

    时钟 {

    osc1 { 时钟频率 = ;       };

    };

    };

     

    对于 SoC FPGA Linux 内核版本 4.17(2018 年 6 月之前)和更早的版本:

    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 的逻辑可以进行正确的计算。

    有关设备树的更多信息,请参阅 Linux 内核文档。

     

    相关产品

    本文适用于 1 产品

    英特尔® Stratix® 10 SX SoC FPGA

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。