文章 ID: 000086392 内容类型: 故障排除 上次审核日期: 2018 年 10 月 18 日

为什么英特尔® Stratix® 10 HPS UART/I2C/SPI 外设以错误的速度运行或无法在 Linux 中运行?

环境

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

    BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明

    由于两种不同问题,英特尔® Stratix® 10 SoC FPGA 硬核处理器系统 (HPS) 设备上的 UART、I2C 和 SPI IP 在旧内核版本上可能会以错误的速度运行。

    SoC FPGA Linux 内核 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 内核 4.17,2018 年 6 月和 4.16 及更早版本:

    • Linux 设备树包含有关 英特尔® Stratix® 10 SoC FPGA 硬核处理器系统 (HPS) 的时钟结构的信息。它必须反映英特尔® Quartus® Prime Pro Platform Designer 系统中的硬核处理器系统英特尔 Stratix 10 FPGA IP 中的时钟设置。 如果时钟结构未更新以反映您的主板和设计,外围设备可能会在 Linux 中操作不正确。 典型的问题在于 UART 或 I2C 接口在 u-boot 中工作,但它们在 Linux 中不起作用。
    • 一个问题导致,如果 MPU 频率设置为非默认值,则某些频率可能不正确(下面的变通办法)

    此问题已针对较新的内核版本修复。时钟信息可从FPGA配置比特流和更新的时钟驱动程序中读取。

    解决方法

    使用非默认 MPU 时钟频率的 SoC FPGA Linux 内核 4.17 和更高版本(2018 年 6 月之后)

    另请参阅 相关 KDB:当我使用f2s_free_clock作为 HPS 参考时钟时,Linux 为何无法在英特尔® Stratix® 10 SoC 上启动?

     

    Soc FPGA Linux 内核 4.17 预预 2018 年 6 月和 4.16 及更早:

    请参阅 如何更新Stratix 10 SX 的 Linux 设备树以与 Platform Designer 中的时钟设置相匹配? 了解有关如何更新 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

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