두 가지 다른 문제로 인해 UART, I2C 및 SPI IP의 인텔® Stratix® 10 SoC FPGA 하드 프로세서 시스템(HPS) 장치는 이전 커널 버전에서 잘못된 속도로 실행될 수 있습니다.
기본값이 아닌 MPU 클럭 주파수가 사용되는 경우 SoC FPGA Linux Kernels 4.17 이상(2018년 6월 이후): 23d4f7b2c6000e09539a6266ef35c213f93649e를 커밋하기 https://github.com/altera-opensource/linux-socfpga 고정 및 패치 업로드
- SoC FPGA Linux 4.17 커널 이상에서는 Stratix 10 클럭 관리자 드라이버가 FPGA 비트스트림에서 클럭 정보를 추출합니다. 장치 트리에는 참조 클럭 주파수만 지정됩니다.
- 문제로 인해 MPU 주파수가 기본값이 아닌 값으로 설정된 경우 일부 주파수가 올바르지 않을 수 있습니다.
SoC FPGA Linux Kernels 2018년 6월 이전 4.17 및 4.16 이전:
- Linux Device Tree에는 인텔® Stratix® 10 SoC FPGA 하드 프로세서 시스템(HPS)의 클럭 구조에 대한 정보가 포함되어 있습니다. 인텔® Quartus® Prime Pro 플랫폼 디자이너 시스템에서 하드 프로세서 시스템 인텔 Stratix 10 FPGA IP의 클럭 설정을 반영해야 합니다. 보드와 디자인을 반영하도록 클럭 구조가 업데이트되지 않은 경우, 주변 장치는 Linux에서 잘못 작동할 수 있습니다. 일반적인 문제는 UART 또는 I2C 인터페이스가 u-boot에서 작동하지만 Linux에서 작동하지 않는 것입니다.
- 문제로 인해 MPU 주파수가 기본값이 아닌 값으로 설정된 경우 일부 주파수가 올바르지 않을 수 있습니다(아래 해결 방법).
이 문제는 최신 커널 버전에 대해 해결되었습니다. 클럭 정보는 FPGA 구성 비트스트림 및 업데이트된 클럭 드라이버에서 읽습니다.
기본값이 아닌 MPU 클럭 주파수가 사용되는 경우 SoC FPGA Linux Kernels 4.17 이상(2018년 6월 이후)
- 이 문제는 커밋된 23d4f7b7b2c6000e09539a6266ef35c213f93649e와 함께 https://github.com/altera-opensource/linux-socfpga 4.18 커널에 대해 해결됩니다.
- 이 문제 0002_clk-pll-s10_L3L4clockFrequencyFix_1.patch를 해결할 수 있는 패치 도 제공됩니다.
또한 관련 KDB: HPS 참조 클럭으로 f2s_free_clock 사용할 때 인텔® Stratix® 10 SoC에서 Linux가 부팅되지 않는 이유는 무엇입니까?
Soc FPGA Linux Kernels 4.17 2018년 6월 이전 및 4.16 이전 :
디자인의 클럭 설정을 반영하기 위해 Linux Device Tree를 업데이트하는 방법에 대한 자세한 내용은 플랫폼 디자이너의 클럭 설정과 일치하도록 Stratix 10 SX용 Linux Device Tree를 업데이트하는 방법을 참조하십시오.
기본 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 게이트 = ;
};