How to set CPU frequency on u-boot?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How to set CPU frequency on u-boot?

4,169件の閲覧回数
LiLinfei
Contributor I

Hi,

How to set CPU frequency on u-boot?

Our machine must keep working at 800Mhz.But I see the frequency under U-boot is 396Mhz.

U-boot version : 2016.03

SOC:IMX6ULL 

Thanks!

ラベル(1)
0 件の賞賛
返信
4 返答(返信)

114件の閲覧回数
tomas-paukrt
Contributor I

I dealt with the same issue on U-Boot 2025.10 and ended up with this solution:

#include <asm/io.h>
#include <asm/arch/crm_regs.h>
#include <asm/arch/sys_proto.h>

int board_early_init_f(void)
{
  struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;

  /* exit if the CPU does not support 792 MHz */
  if (get_cpu_speed_grade_hz() < 792000000)
    return 0;

  /* increase VDD_SOC from 1.150 V to 1.175 V */
  set_ldo_voltage(LDO_SOC, 1175);

  /* increase VDD_ARM from 1.150 V to 1.225 V */
  set_ldo_voltage(LDO_ARM, 1225);

  /* increase ARM clock from 396 MHz to 792 MHz */
  writel(0, &imx_ccm->cacrr);

  return 0;
}

 

0 件の賞賛
返信

4,140件の閲覧回数
joanxie
NXP TechSupport
NXP TechSupport

you can find the cpu frequency settings in the dtsi file as below:

"https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/dts/imx6ull.dtsi?h=imx_v2019.04_4..."

0 件の賞賛
返信

4,006件の閲覧回数
avijitnsec
Contributor III

How to change the default frequency in the dts file? If I set it in the uboot, does it persist when kernel boots up? Or kernel overwrite the value? 

0 件の賞賛
返信

2,800件の閲覧回数
AlfTeleco
Contributor III

On the U-boot version U-Boot 2021.04-lf_v2021.04 write the CCM Arm Clock Root Register (CCM_CACRR) at the function get_mcu_main_clk() on the file /arch/arm/mach-imx/mx6/clock.c. The content of the function must be like this:

=====================================================================

u32 reg, freq;

reg = __raw_readl(&imx_ccm->cacrr);
reg &= ~MXC_CCM_CACRR_ARM_PODF_MASK;
__raw_writel(reg, &imx_ccm->cacrr);

reg = __raw_readl(&imx_ccm->cacrr);
reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
freq = decode_pll(PLL_SYS, MXC_HCLK);

return freq / (reg + 1);

=====================================================================

We are setting the register CCM_CACRR to have NO divider, like it is said in the datasheet:

AlfTeleco_0-1707405319109.png

Also boost the LDO_SOC voltage from 1.175 to 1.225 at the function /arch/arm/mach-imx/mx6/soc.c: board_postclk_init()

set_ldo_voltage(LDO_SOC, 1225); /* Set VDDSOC to 1.225V */

 

BR

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Eu-boot%20%E3%81%A7%20CPU%20%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3Eu-boot%20%E3%81%A7%20CPU%20%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AE%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AF%20800Mhz%20%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81U-boot%20%E3%81%A7%E3%81%AE%E5%91%A8%E6%B3%A2%E6%95%B0%E3%81%AF%20396Mhz%20%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EU-boot%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%3A%202016.03%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3ESOC%3AIMX6ULL%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%EF%BC%81%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1400721%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX6UL%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2251513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2251513%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E7%A7%81%E3%81%AF%3CSTRONG%3EU-Boot%202025.10%3C%2FSTRONG%3E%E3%81%A7%E3%82%82%E5%90%8C%E3%81%98%E5%95%8F%E9%A1%8C%E3%81%AB%E5%AF%BE%E5%87%A6%E3%81%97%E3%80%81%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AB%E6%AC%A1%E3%81%AE%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%81%AB%E3%81%9F%E3%81%A9%E3%82%8A%E7%9D%80%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%23include%20%3CASM%3E%0A%23include%20%3CASM%3E%0A%23include%20%3CASM%3E%0A%0Aint%20board_early_init_f(void)%0A%7B%0A%20%20struct%20mxc_ccm_reg%20*imx_ccm%20%3D%20(struct%20mxc_ccm_reg%20*)CCM_BASE_ADDR%3B%0A%0A%20%20%2F*%20exit%20if%20the%20CPU%20does%20not%20support%20792%20MHz%20*%2F%0A%20%20if%20(get_cpu_speed_grade_hz()%20%26lt%3B%20792000000)%0A%20%20%20%20return%200%3B%0A%0A%20%20%2F*%20increase%20VDD_SOC%20from%201.150%20V%20to%201.175%20V%20*%2F%0A%20%20set_ldo_voltage(LDO_SOC%2C%201175)%3B%0A%0A%20%20%2F*%20increase%20VDD_ARM%20from%201.150%20V%20to%201.225%20V%20*%2F%0A%20%20set_ldo_voltage(LDO_ARM%2C%201225)%3B%0A%0A%20%20%2F*%20increase%20ARM%20clock%20from%20396%20MHz%20to%20792%20MHz%20*%2F%0A%20%20writel(0%2C%20%26amp%3Bimx_ccm-%26gt%3Bcacrr)%3B%0A%0A%20%20return%200%3B%0A%7D%3C%2FASM%3E%3C%2FASM%3E%3C%2FASM%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1804195%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1804195%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EU-Boot%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%20U-Boot%202021.04-lf_v2021.04%20%E3%81%A7%E3%81%AF%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%20%2Farch%2Farm%2Fmach-imx%2Fmx6%2Fclock.c%20%E3%81%AE%E9%96%A2%E6%95%B0%20get_mcu_main_clk()%20%E3%81%A7%20CCM%20Arm%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%20%E3%83%AB%E3%83%BC%E3%83%88%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20(CCM_CACRR)%20%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82%E9%96%A2%E6%95%B0%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3Eu32%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%80%81%E5%91%A8%E6%B3%A2%E6%95%B0%3B%3C%2FP%3E%3CP%3E%3CEM%3E%3CSTRONG%3Ereg%20%3D%20__raw_readl(%26amp%3Bimx_ccm-%26gt%3Bcacrr)%3B%3C%2FSTRONG%3E%3C%2FEM%3E%3CBR%20%2F%3E%20%3CEM%3E%3CSTRONG%3Ereg%20%26amp%3B%3D%20~MXC_CCM_CACRR_ARM_PODF_MASK%3B%3C%2FSTRONG%3E%3C%2FEM%3E%3CBR%20%2F%3E%20%3CEM%3E%3CSTRONG%3E__raw_writel(reg%2C%20%26amp%3Bimx_ccm-%26gt%3Bcacrr)%3B%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3Ereg%20%3D%20__raw_readl(%26amp%3Bimx_ccm-%26gt%3Bcacrr)%3B%3CBR%20%2F%3E%20reg%20%26amp%3B%3D%20MXC_CCM_CACRR_ARM_PODF_MASK%3B%3CBR%20%2F%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%26gt%3B%26gt%3B%3D%20MXC_CCM_CACRR_ARM_PODF_OFFSET%3B%3CBR%20%2F%3E%20freq%20%3D%20decode_pll(PLL_SYS%E3%80%81MXC_HCLK)%3B%3C%2FP%3E%3CP%3Efreq%20%2F%20(reg%20%2B%201)%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3C%2FP%3E%3CP%3E%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E8%A8%98%E8%BC%89%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%80%81%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20CCM_CACRR%20%E3%82%92%E5%88%86%E5%91%A8%E5%99%A8%E3%81%AA%E3%81%97%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22AlfTeleco_0-1707405319109.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22AlfTeleco_0-1707405319109.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F262549i21BB8E66A7503F6A%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22AlfTeleco_0-1707405319109.png%22%20alt%3D%22AlfTeleco_0-1707405319109.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81%E9%96%A2%E6%95%B0%2Farch%2Farm%2Fmach-imx%2Fmx6%2Fsoc.c%3A%20board_postclk_init()%E3%81%A7LDO_SOC%E9%9B%BB%E5%9C%A7%E3%82%921.175%E3%81%8B%E3%82%891.225%E3%81%AB%E3%83%96%E3%83%BC%E3%82%B9%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3Eset_ldo_voltage(LDO_SOC%2C%201225)%3B%20%2F*%20VDDSOC%E3%82%921.225V%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%20*%2F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EBR%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1502804%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1502804%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3Edts%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%86%85%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E9%A0%BB%E5%BA%A6%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3Fuboot%20%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%9F%E5%A0%B4%E5%90%88%E3%80%81%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AB%E3%81%9D%E3%82%8C%E3%81%8C%E7%B6%AD%E6%8C%81%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8B%3F%E3%81%9D%E3%82%8C%E3%81%A8%E3%82%82%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%8C%E5%80%A4%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8D%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1414906%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20set%20CPU%20frequency%20on%20u-boot%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1414906%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ECPU%20%E5%91%A8%E6%B3%A2%E6%95%B0%E8%A8%AD%E5%AE%9A%E3%81%AF%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%20dtsi%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%20CAN%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%80%8C%20%3CA%20href%3D%22https%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fuboot-imx%2Ftree%2Farch%2Farm%2Fdts%2Fimx6ull.dtsi%3Fh%3Dimx_v2019.04_4.19.35_1.1.0%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fuboot-imx%2Ftree%2Farch%2Farm%2Fdts%2Fimx6ull.dtsi%3Fh%3Dimx_v2019.04_4.19.35_1.1.0%3C%2FA%3E%20%E3%80%8D%3C%2FP%3E%3C%2FLINGO-BODY%3E