This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3351:CPU 频率

Guru**** 2005520 points
Other Parts Discussed in Thread: AM3352, TPS65910
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/565715/am3351-cpu-frequency

器件型号:AM3351
主题中讨论的其他器件:AM3352TPS65910

我们有一个使用 AM3351的板。 我们已成功配置 u-boot 和 Arago Linux。 我们将使用 03.00.00.04 SDK。

我们正在寻找 CPU 频率的确认方法、以及设置频率的方法。

 我在其他论坛帖子中发现、您可以在此处看到 CPU 频率:

/sys/devices/system/cpu/cpu0/cpufreq

但我们的系统上没有该目录。

我曾:
CAT /proc/cpuinfo

返回:

处理器:0型号名称:
ARMv7处理器修订版2 (v7l)
茂物剪:298.59
功能:半拇指 fastmult VFP EDSP thumbee neon vfpv3 TLS vfpd32
CPU 实现者:0x41
CPU 架构:7.
CPU 型号:0x3.
CPU 部件:0xc08
CPU 版本:2.
硬件:通用 AM33XX (平展设备树)
修订版: 0000
串行:000000000000

我知道 BogoMips 应该大致等于 MHz、对吗?

根据内核配置、cpufreq 看起来被启用:

[*] CPU 频率缩放││  

││<*> CPU 频率转换统计信息││  
││[*] CPU 频率转换统计信息详细信息││  
││默认 cpufreq 调节器(按需)-->││  
││-*-“性能”调速器││  
││<*>"powersave"调节器││  
││<*>用于用户空间频率缩放的'userspace'调节器││  
││-*-“点播”cpufreq 政策总监││  
││<*>“保守”cpufreq 调节器││  
││*** CPU 频率调节驱动器***││  
││<*>基于通用 DT 的 cpufreq 驱动程序││  
││[] TI OMAP2+││  
││<*>德州仪器(TI) cpufreq 支持││  
││<>用于 Freescale QorIQ SoC 的 CPU 频率调节驱动器

但我看不到  

/sys/devices/system/cpu/cpu0/cpufreq/

文件夹。

有什么建议吗? 我们是否需要在器件树中提供特定的功能才能使其正常工作?

谢谢、

Tim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这将转发给软件团队。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tim、

    默认情况下应启用 cpufreq。 确保您创建了正确的配置文件、即 tisdk_AM335x-evm_defconfig。 有关更多信息、请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../Linux_Kernel_Users_Guide
    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.1)

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复、我们正在使用该配置、我之前已经查看过这些链接。 从原始帖子中可以看出、在内核配置中启用了 cpufreq、但由于某种原因、路径不存在。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、


    检查您的 Linux-4.4.4.12/.config 文件、确保它具有以下选项:

    编号
    # CPU 频率缩放
    编号
    CONFIG_CPU_FREQ=y
    CONFIG_CPU_FREQ_GOV_common=y
    CONFIG_CPU_FREQ_STAT=y
    CONFIG_CPU_FREQ_STAT_Details=y
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_performance
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_userspace
    CONFIG_CPU_FREQ_DEFAULT_GOV_OnDemand=y
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSTICATION
    CONFIG_CPU_FREQ_GOV_performance=y
    CONFIG_CPU_FREQ_GOV_POWERSAVe=y
    CONFIG_CPU_FREQ_GOV_userspace=y
    CONFIG_CPU_FREQ_GOV_OnDemand=y
    CONFIG_CPU_FREQ_GOV_保守= y

    编号
    #个 CPU 频率调节驱动器
    编号
    CONFIG_cpufreq_DT=y
    未设置# CONFIG_ARM_Kirkwood_cpufreq
    未设置# CONFIG_ARM_OMAP2PLUS_cpufreq
    CONFIG_ARM_TI_cpufreq=y
    未设置# CONFIG_QorIQ_cpufreq

    此外、在 DTS 文件中、请确保您具有 AM335x TI EVM DTS 文件 am33xx.dtsi 中定义的 opp 表

    CPU{
          #address-cells =<1>;
          #size-cells =<0>;
          CPU@0{
             兼容="arm、cortex-A8";
             enable-method ="ti、am3352";
             DEVICE_TYPE ="CPU";
             reg =<0>;

             运行点-v2 =<&CPU0_opp_table>;
             TI、SYSCON-efuse =<&SCM_conf 0x7fc 0x1fff 0>;
             TI、SYSCON-rev =<&SCM_conf 0x600>;

             时钟=<&DPLL_MPU_ck >;
             时钟名称="cpu";

             时钟延迟=<300000>;/*来自 OMAP-cpufreq 驱动程序*/
             CPU 空闲状态=<&MPU_GATE;
          };

          空闲状态{
             MPU_GATE:MPU_GATE{
                兼容="arm、idle-state";
                entry-latere-us =<40>;
                exit-latite-us =<90>;
                最小居住时间-us =<300>;
                ti、idle-wkup-m3;
             };
          };
       };

    CPU0_opp_table:opp_table0{
          兼容="操作点-v2";

          /*
          *以下三个节点标有 opp-suspend
          因为不能在上同时启用
          *单个 SoC。
          *
          50@300000000{
             opp-Hz =/bits/64 <300000000>;
             op-microvolt =<950000 931000 96900000>;
             opp-supported-HW =<0x06 0x0010>;
             opp-suspend;
          };

          opp100@275000000{
             opp-Hz =/bits/64 <275000000>;
             op-microvolt =<1100000 1078000 1122000>;
             opp-supported-HW =<0x01 0x00FF>;
             opp-suspend;
          };

          opp100@300000000{
             opp-Hz =/bits/64 <300000000>;
             op-microvolt =<1100000 1078000 1122000>;
             opp-supported-HW =<0x06 0x0020>;
             opp-suspend;
          };

          opp100@500000000{
             opp-Hz =/bits/64 <500000000>;
             op-microvolt =<1100000 1078000 1122000>;
             opp-supported-HW =<0x01 0xFFF>;
          };

          opp100@600000000{
             opp-Hz =/bits/64 <6000000000000>;
             op-microvolt =<1100000 1078000 1122000>;
             opp-supported-HW =<0x06 0x0040>;
          };

          opp120@600000000{
             opp-Hz =/bits/64 <6000000000000>;
             op-microvolt =<1200000 1176000 1224000>;
             opp-supported-HW =<0x01 0xFFF>;
          };

          120@720000000{
             opp-Hz =/bits/64 <720000000>;
             op-microvolt =<1200000 1176000 1224000>;
             opp-supported-HW =<0x06 0x0080>;
          };

          涡轮增压器@720000000{
             opp-Hz =/bits/64 <720000000>;
             op-microvolt =<1260000 1234800 1285200>;
             opp-supported-HW =<0x01 0xFFF>;
          };

          涡轮增压器@800000000{
             opp-Hz =/bits/64 <80000000000>;
             op-microvolt =<1260000 1234800 1285200>;
             opp-supported-HW =<0x06 0x0100>;
          };

          硝基平@1000000000{
             opp-Hz =/bits/64 <1000000000>;
             op-microvolt =<1325000 1298500 1351500>;
             opp-supported-HW =<0x04 0x0200>;
          };
       };

       PMU{
          兼容="arm、cortex-A8-PMU";
          中断=<3>;
       };

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好。

    感谢您的回复。 以下是 dtsi 文件的相关部分:

    CPU{
    #address-cells =<1>;
    #size-cells =<0>;
    CPU@0{
    兼容="arm、cortex-A8";
    enable-method ="ti、am3352";
    DEVICE_TYPE ="CPU";
    reg =<0>;
    运行点-v2 =<&CPU0_opp_table>;
    TI、SYSCON-efuse =<&SCM_conf 0x7fc 0x1fff 0>;
    TI、SYSCON-rev =<&SCM_conf 0x600>;
    时钟=<&DPLL_MPU_ck >;
    时钟名称="cpu";
    时钟延迟=<300000>;/*来自 OMAP-cpufreq 驱动程序*/
    CPU 空闲状态=<&MPU_GATE;
    };
    空闲状态{
    MPU_GATE:MPU_GATE{
    兼容="arm、idle-state";
    entry-latere-us =<40>;
    exit-latite-us =<90>;
    最小居住时间-us =<300>;
    ti、idle-wkup-m3;
    };
    };
    };
    CPU0_opp_table:opp_table0{
    兼容="操作点-v2";
    /*
    *以下三个节点标有 opp-suspend
    因为不能在上同时启用
    *单个 SoC。
    *
    50@300000000{
    opp-Hz =/bits/64 <300000000>;
    op-microvolt =<950000 931000 96900000>;
    opp-supported-HW =<0x06 0x0010>;
    opp-suspend;
    };
    opp100@275000000{
    opp-Hz =/bits/64 <275000000>;
    op-microvolt =<1100000 1078000 1122000>;
    opp-supported-HW =<0x01 0x00FF>;
    opp-suspend;
    };
    opp100@300000000{
    opp-Hz =/bits/64 <300000000>;
    op-microvolt =<1100000 1078000 1122000>;
    opp-supported-HW =<0x06 0x0020>;
    opp-suspend;
    };
    opp100@500000000{
    opp-Hz =/bits/64 <500000000>;
    op-microvolt =<1100000 1078000 1122000>;
    opp-supported-HW =<0x01 0xFFF>;
    };
    opp100@600000000{
    opp-Hz =/bits/64 <6000000000000>;
    op-microvolt =<1100000 1078000 1122000>;
    opp-supported-HW =<0x06 0x0040>;
    };
    opp120@600000000{
    opp-Hz =/bits/64 <6000000000000>;
    op-microvolt =<1200000 1176000 1224000>;
    opp-supported-HW =<0x01 0xFFF>;
    };
    120@720000000{
    opp-Hz =/bits/64 <720000000>;
    op-microvolt =<1200000 1176000 1224000>;
    opp-supported-HW =<0x06 0x0080>;
    };
    涡轮增压器@720000000{
    opp-Hz =/bits/64 <720000000>;
    op-microvolt =<1260000 1234800 1285200>;
    opp-supported-HW =<0x01 0xFFF>;
    };
    涡轮增压器@800000000{
    opp-Hz =/bits/64 <80000000000>;
    op-microvolt =<1260000 1234800 1285200>;
    opp-supported-HW =<0x06 0x0100>;
    };
    硝基平@1000000000{
    opp-Hz =/bits/64 <1000000000>;
    op-microvolt =<1325000 1298500 1351500>;
    opp-supported-HW =<0x04 0x0200>;
    };
    };

    这似乎与您建议的内容相同。 它也包含在我们的 DTS 文件中:"#include "am33xx.dtsi"

    下面是我们配置文件的相关部分:

    编号
    # CPU 频率缩放
    编号
    CONFIG_CPU_FREQ=y
    CONFIG_CPU_FREQ_GOV_common=y
    CONFIG_CPU_FREQ_STAT=y
    CONFIG_CPU_FREQ_STAT_Details=y
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_performance
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_userspace
    CONFIG_CPU_FREQ_DEFAULT_GOV_OnDemand=y
    未设置# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSTICATION
    CONFIG_CPU_FREQ_GOV_performance=y
    CONFIG_CPU_FREQ_GOV_POWERSAVe=y
    CONFIG_CPU_FREQ_GOV_userspace=y
    CONFIG_CPU_FREQ_GOV_OnDemand=y
    CONFIG_CPU_FREQ_GOV_保守= y
    编号
    #个 CPU 频率调节驱动器
    编号
    CONFIG_cpufreq_DT=y
    未设置# CONFIG_ARM_Kirkwood_cpufreq
    未设置# CONFIG_ARM_OMAP2PLUS_cpufreq
    CONFIG_ARM_TI_cpufreq=y
    未设置# CONFIG_QorIQ_cpufreq

    这似乎也是您建议的。

    还有其他想法/建议吗? 提前感谢您的参与。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tim、

    您使用的是 AM335x 定制板与 PROCESSOR-SDK-LINUX-AM335X 03_00_00_04、对吧? 您的定制板是基于 EVM、SK 还是 BBB? 您的定制板与 EVM/SK/BBB 在电源/时钟管理方面有何区别?

    请从一开始尝试全新构建。 同时向我发送完整的控制台日志(u-boot、Linux 内核启动)。

    另请参阅以下 e2e 线程:

    e2e.ti.com/.../506041
    e2e.ti.com/.../481294
    e2e.ti.com/.../302570

    此致、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢您的回复。 我已经查看了主题帖。 在第二个线程中、请注意应存在以下选项:

    CONFIG_generic_cpufreq_cpu0=y

    但您之前的答复中没有这种情况。 您能否确认我在几篇文章之前发布的内核配置选项都是必需的?

    在第三个线程中、我发现:

    "cpufreq"依赖于稳压器框架来改变电压。  反过来、稳压器框架使用 I2C0与 PMIC 通信。  在电路板上、您是否将 I2C0连接到 PMIC?  内核配置中是否启用了 I2C0、以及引脚多路复用是否正确?

    我不确定我们是否有 PMIC。 我将与硬件工程师核实这一点。

    我已附加请求的引导日志。

    编辑:我们使用 的是 AM3351BZCE60、哪一个应该能够处理600Mhz?

    e2e.ti.com/.../bootlog.rtf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、我拉了 CM_CLKSEL_DPLL_MPU 寄存器(0x44E0042c)

    它产生了:

    0x00012C17

    它乘以300、除数为24、输入时钟为24、因此时钟速度为300MHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Tim Elmore "]

    感谢您的回复。 我已经查看了主题帖。 在第二个线程中、请注意应存在以下选项:

    CONFIG_generic_cpufreq_cpu0=y

    但您之前的答复中没有这种情况。 您能否确认我在几篇文章之前发布的内核配置选项都是必需的?

    [/报价]

    此选项对旧版内核(3.x)和 SDK 有效。 内核4.4.4.12没有此类选项。 您的内核配置选项看起来是正确的。

    [引用用户="Tim Elmore "]

    "cpufreq"依赖于稳压器框架来改变电压。  反过来、稳压器框架使用 I2C0与 PMIC 通信。  在电路板上、您是否将 I2C0连接到 PMIC?  内核配置中是否启用了 I2C0、以及引脚多路复用是否正确?

    我不确定我们是否有 PMIC。 我将与硬件工程师核实这一点。

    [/报价]

    是的、问题可能出在 PMIC (或缺少 PMIC)。 在 TPS65910随附的 AM335x EVM 上、我们具有以下引导日志以及 PSDK 3.00.00.04中预构建的 zImage

    [1.959123]   tps65910 0-002D:无中断支持、无内核 IRQ
    [1.988005]   OMAP-i2c 44e0b000。i2c:400kHz 时的总线0 rev0.11
    [1.995859]   omap_i2c 4802a000.i2c:100kHz 时的总线1 rev0.11
    [2.002424]   omap_hsmmc 48060000.mmc:获得 CD GPIO
    [2.007508]   VMMC:由 VBAT 供电
    [2.049688]   VDD_MPU:由 VBAT 供电

    启动后、我们将:

    AM335x-EVM 登录:root
    根目录@AM335x-EVM:~# CD /sys/devices/system/cpu/cpu0/cpufreq
    root@AM335x-EVM:/sys/devices/system/cpu/cpu0/cpufreq ls
    受影响的 CPU                 cpuinfo_min_freq              scaling_available 频率 scaling_driver                scaling_min_freq
    cpuinfo_cur_freq              cpuinfo_translation_lency    scaling_available 调节   器 scaling_governor              scaling_setspeed
    cpuinfo_max_freq              相关 CPU                  scaling_cur_freq              scaling_max_freq              统计信息
    root@AM335x-EVM:/sys/devices/system/cpu/cpu0/cpufreq

    [报价用户="Tim Elmore "]我们使用 的是 AM3351BZCE60、它应该能够达到600Mhz?[/quot]

    是的、此器件支持600MHz Cortex-A8

    确保您的电路板上还安装了 sysfs。


    此致、
    摊铺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。 因此、在我们的当前电路板上、cpufreq 似乎不是一个选项。

    CPU 频率在哪里设置? 我在 u-boot 中看到电子保险丝被检查的位置:

    AM335X_ZCE_600案例:
    返回 MPUPLL_M_600;
    不应该将 CPU 设置为600Mhz? 我还检查了电子保险丝寄存器、确认了600Mhz 的性能。 如果您能让我知道300MHz 设置可能来自哪里、我将不得不这么做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的文件系统中是否有 omapconf? 您能否尝试运行一些命令:

    omapconf show DPLL
    omapconf show opp
    omapconf 导出 CTT

    最后一个文件会转储一个*。RD1文件、该文件可导入到时钟树工具中进行检查。 但是、我认为第一个命令应该有用、就像对 CPU 时钟配置进行完整性检查一样。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Tim Elmore ]*因此我拉了 CM_CLKSEL_DPLL_MPU 寄存器(0x44E0042c)

    它产生了:

    0x00012C17

    它乘以300、除数为24、输入时钟为24、因此时钟速度为300MHz。[/引用]

    Tim、

    您能否提供以下寄存器值:

    DEVICE_ID/0x44E10600

    CONTRAL_STATUS/0x44E10040

    CM_IDLEST_DPLL_MPU/0x44E00420

    CM_CLKMODE_DPLL_MPU/0x44E00488

    CM_DIV_M2_DPLL_MPU/0x44E004A8

    您可以使用 MD 命令从 u-boot 提示符中获取这些值、例如:

    按空格键可在2秒钟内中止自动引导
    => MD 0x44E10600 1
    44e10600:0b94402e                              @……

    在 AM335x EVM 1.4a 版本上、我具有以下值:

    DEVICE_ID[31:28] DEVREV = 0 -器件版本1.0
    CONTRAL_STATUS[23:22] sysboot1 = 0x1 - 24MHz CLK_M_OSC
    CM_CLKSEL_DPLL_MPU = 0x0002D017
    CM_IDLEST_DPLL_MPU = 0x00000001
    CM_CLKMODE_DPLL_MPU = 0x00000007
    CM_DIV_M2_DPLL_MPU = 0x00000201 (M2 = 1)

    因此、Cortex-A8具有720MHz。

    AM335x_get_efuse_mpu_max_freq ()返回 MPUPLL_M_720、因为我在 AM335x EVM 1.4a 版:XAM3359ZCZ 上有 PG 1.0 (器件修订版1.0)器件

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Tim Elmore "]

    CPU 频率在哪里设置? 我在 u-boot 中看到电子保险丝被检查的位置:

    AM335X_ZCE_600案例:
    返回 MPUPLL_M_600;
    不应该将 CPU 设置为600Mhz? 我还检查了电子保险丝寄存器、确认了600Mhz 的性能。 如果您能让我知道300MHz 设置可能来自哪里、我将不得不这么做。

    [/报价]

    因此 AM335x_get_efuse_mpu_max_freq ()返回 MPUPLL_M_600、这在您的情况下是正确的- AM3351BZCE60器件。 然后、我认为由于缺少 PMIC、u-boot 无法设置这个600MHz。

    您的板级配置文件是什么? 在 AM335x EVM 上、板级配置文件为:

    u-boot-2016.05/board/ti/AM335x/board.c

    /*获取频率*/
       DPLL_MPU_opp100.m = AM335x_get_efuse_MPU_max_freq (cdev);//此处为 MPUPLL_M_600

    .

    否则{
          int sil_rev;

          /*
          * GP EVM、IDK 和 EVM SK 使用 TPS65910 PMIC。  为所有人提供服务
          *我们支持的 MPU 频率我们使用的内核电压
          * 1.1375V。  对于 MPU 电压、我们需要根据进行切换
          *运行频率。
          *
          IF (i2c_probe (TPS65910_CTRL_I2C_ADDR))
             返回;

    /*
          *根据 MPU 时钟和 PG 的不同、我们将需要不同的时钟
          * VDD 以该速度驱动。
          *
          SIL_rev = readl (&cdev->deviceid)>> 28;
          MPU_VDD = AM335x_get_tps65910_MPU_VDD (sil_rev、
                           DPLL_MPU_opp100.m);

          /*告诉 TPS65910使用 i2c */
          tps65910_set_i2c_control();

          /*首次更新 MPU 电压。 *
          IF (tps65910_VOLTAGE_UPDATE (MPU、MPU_VDD))
             返回;

          /*第二,更新内核电压。 *
          IF (tps65910_VOLTAGE_UPDATE (内核、TPS65910_OP_REG_SEL_1_1_3))
             返回;

          /*将核心频率设置为 OPP100 */
          do_setup_DPLL (&DPLL_CORE_reg、&DPLL_CORE_opp100);
       }

       /*将 MPU 频率设置为我们现在检测到的值,此时电压已设置*/
       do_setup_DPLL (&DPLL_MPU_regs、&DPLL_MPU_opp100);

    如您所见、设置这些600MHz 的代码取决于 PMIC。 另请注意、要设置600MHz (OPP100)、VDD_MPU 和 VDD_CORE 应处于1.1V、而对于300MHz (OPP50)、它们应处于0.95V。 您也可以检查那里的电压。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Brad、您好、感谢您的回复。 我已连接这些命令的输出、它似乎也指示300MHz。

    e2e.ti.com/.../Clock-Diags.rtf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    下面是我为这些寄存器看到的内容:

    => MD 0x44E10600 1
    44e10600:2b94402e @μ..+
    => MD 0x44E10040
    44e10040:004003f7 @……………………
    => MD 0x44E00420
    44e00420:00000001 …
    => MD 0x44E00488
    44e00488:00000007 …
    => MD 0x44E004A8
    44e004a8:00000201 …
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复-这很有帮助!

    我们使用 u-boot-2016.05/board/ti/AM335x/board.c

    我已确认我们将为 VDD_CORE 提供1.1V 电压。 在不使用 PMIC 的情况下、修改 board.c 以设置600Mhz 的建议方法是什么?

    或者、如果有一种方法可以在引导后更改时钟速度、这也是可以接受的。 启动后只需要600Mhz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、

    您是否还可以在 u-boot 提示符下(使用 MD 命令获取)确认 CM_CLKSEL_DPLL_MPU 中具有0x00012C17值?

    [报价用户="Tim Elmore "]我已确认、我们将为 VDD_CORE 提供1.1V 电压[/quot]

    确保您符合 AM335x 数据表中有关上电序列的要求、请参阅第6.1节"电源"

    [引用 user="Tim Elmore "]我们使用的是 u-boot-2016.05/board/ti/AM335x/board.c.

    [引用用户="Tim Elmore "]修改 board.c 以在不使用 PMIC 的情况下设置600Mhz 的建议方法是什么?[/quot]

    您的定制板基于哪个板(EVM、SK、BBB)? 在 am33xx_spl_board_init()中,在哪种情况下,您的流程会发生,在(board_is_Bone ()|board_is_Bon_lt())或"else"中?

    TI EVM 属于"其他"情况、因此我假设您也是如此。 您能否检查(使用 printf 或 CCS 断点) i2c_probe (TPS65910_CTRL_I2C_ADDR)函数的结果。 您可能会返回那里、因此未使用正确的设置配置 MPU DPLL。 确保执行 do_setup_DPLL (&DPLL_MPU_regs、&DPLL_MPU_opp100);

    另请注意、我们还有两个用于设置 MPU DPLL 的函数:

    u-boot-2016.05/arch/arm/cpU/armv7/am33xx/board.c

    am33xx_spl_board_init ()-> do_setup_DPLL (&DPLL_MPU_reg、&DPLL_MPU_opp100);

    u-boot-2016.05/arch/arm/cpU/armv7/am33xx/clock.c

    setup_dplls ()-> DO_setup_DPLL (&DPLL_MPU_regs、params);

    您能否检查这两个 do_setup_DPLL()函数是否也是在您的一侧以及按哪个顺序执行的? 其中一些函数可能会覆盖 u-boot-2016.05/board/ti/AM335x/board.c 文件中的 do_setup_DPLL()函数

    [引用 USER="Tim Elmore ]或者、如果有一种方法可以在启动后更改时钟速度、这也是可以接受的。 启动后仅需要600Mhz。

    在用户空间中、您可以尝试使用 devmem2工具、该工具可用于在 DPLL_MPU 寄存器中进行读取/写入。 首先解锁 MPU PLL、然后写入新设置、然后再次锁定。 我没有尝试过这种方法、但这可能是您的选择。 检查 TRM 的解锁/锁定顺序是否正确。

    您还可以尝试使用时钟框架从 Linux 内核更改 MPU 时钟频率:

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢所有的帮助-解决了这个问题。 由于在对 PMIC 进行 i2c 检查后返回、未设置时钟。 因此、我修改了代码以在返回之前设置时钟、因为在我们的情况下、我们始终以600Mhz 运行、并提供正确的电压。

    IF (i2c_probe (TPS65910_CTRL_I2C_ADDR))
    do_setup_DPLL (&DPLL_CORE_reg、&DPLL_CORE_opp100);
    do_setup_DPLL (&DPLL_MPU_regs、&DPLL_MPU_opp100);
     
    返回;

    再次感谢您的帮助。