ID do artigo: 000086392 Tipo de conteúdo: Solução de problemas Última revisão: 18/10/2018

Por que Intel® Stratix® 10 periféricos HPS UART /I2C/SPI funcionam na velocidade errada ou não funcionam no Linux?

Ambiente

  • Intel® Quartus® Prime Pro Edition
  • Linux-socfpga 4.X

    BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descrição

    Devido a dois problemas diferentes, os dispositivos UART, I2C e SPI IP Intel® Stratix® SoC FPGA 10 soC podem funcionar na velocidade errada em versões mais antigas do Kernel.

    SoC FPGA Linux Kernels 4.17 e posterior (pós-junho de 2018) quando uma frequência de clock MPU não padrão é usada: corrigido e atualizado para https://github.com/altera-opensource/linux-socfpga commit 23d4f7b2c6000e095399a6266ef35c213f93649e

    • No SoC FPGA Linux 4.17 Kernels e mais recente, o driver Stratix 10 Clock Manager extrai as informações de clocking do FPGA bitstream. Apenas as frequências do clock de referência são especificadas na árvore do dispositivo.
    • Devido a um problema, algumas frequências podem estar incorretas se a frequência MPU estiver definida como um valor não padrão.

    SoC FPGA Linux 4.17 antes de junho de 2018, e 4.16 e anterior:

    • A Árvore de dispositivos Linux contém informações sobre a estrutura de clocking do Intel® Stratix® 10 SoC FPGA Hard Processor System (HPS). Ele deve refletir a configuração do clock no sistema de processador rígido Intel Stratix 10 FPGA IP no sistema Intel® Quartus® Prime Pro Platform Designer.  Se a estrutura de clocking não for atualizada para refletir sua placa e seu design, os periféricos podem operar incorretamente no Linux.  Problemas típicos são interfaces UART ou I2C que funcionam em u-boot, mas que não funcionam no Linux.
    • Devido a um problema, algumas frequências podem estar incorretas se a frequência MPU estiver definida como um valor não padrão (solução abaixo)

    Este problema foi corrigido para versões mais recentes do Kernel. As informações do clock são lidas FPGA bitstream de configuração e por um driver de clock atualizado.

    Resolução

    SoC FPGA Linux kernels 4.17 e posteriores (pós-junho de 2018) quando uma frequência de clock MPU não padrão é usada

    • Este problema é corrigido para o kernel de 4,18 em https://github.com/altera-opensource/linux-socfpga com commit 23d4f7b2c6000e095399a6266ef35c213f93649e
    • Um patch também está disponível para resolver este problema 0002_clk-pll-s10_L3L4clockFrequencyFix_1.patch

    Além disso, consulte o KDB relacionado: por que o Linux não inicializa no meu soC Intel® Stratix® 10 quando eu uso o f2s_free_clock como o clock de referência do HPS?

     

    Soc FPGA Linux kernels 4.17 antes de junho de 2018 e 4.16 e anteriores:

    Veja Como atualizar a Árvore de Dispositivos Linux para Stratix 10 SX para corresponder às configurações do clock no Designer de plataformas? para obter informações sobre como atualizar a Árvore de Dispositivos Linux para refletir as configurações de clocking em seu design.

    Para trabalhar em torno do erro de matemática, se a frequência de clock MPU não padrão for usada

    - Ajuste manualmente as frequências de clock lento L3,L4 L4 na árvore do dispositivo

    8 Deixe a lógica para descrever a pll

    8 Substituir os clocks do divisor L3

     

    l3_main_free_clk: l3_main_free_clk {

    #clock-células = ;

    #compatible = "altr,socfpga-s10-perip-clk";

    #clocks = ;

    #fixed-divisor = ;

    frequência do clock = ;

    compatível = "clock fixo"

                        

    };

     

    l4_sys_free_clk: l4_sys_free_clk {

    #clock-células = ;

    #compatible = "altr,socfpga-s10-perip-clk";

    #clocks = ;

    #fixed-divisor = ;

    frequência do clock = ;

    compatível = "clock fixo"

    };

     

    l4_main_clk: l4_main_clk {

    #clock-células = ;

    #compatible = "altr,socfpga-s10-gate-clk";

    #clocks = ;

    frequência do clock = ;

    compatível = "clock fixo";

    #div-reg = ;

    #clk-gate = ;

    };

     

    l4_mp_clk: l4_mp_clk {

    #clock-células = ;

    #compatible = "altr,socfpga-s10-gate-clk";

    #clocks = ;

    frequência do clock = ;

    compatível = "clock fixo";

    #div-reg= ;

    #clk-gate = ;

    };

     

    l4_sp_clk: l4_sp_clk {

    #clock-células = ;

    #compatible = "altr,socfpga-s10-gate-clk";

    #clocks = ;

    frequência do clock = ;

    compatível = "clock fixo";

    #div-reg= ;

    #clk-gate = ;

    };

    Produtos relacionados

    Este artigo aplica-se a 1 produtos

    FPGA Intel® Stratix® 10 SX SoC

    O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.