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.

[参考译文] TDA2EVM5777:如何更改 TDA2XX 中 A15内核的 CPU 频率?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/566843/tda2evm5777-how-to-change-the-cpu-frequency-of-a15-core-in-tda2xx

器件型号:TDA2EVM5777

你(们)好

下面列出了一些问题、
    1) 1)如何更改 A15内核的 CPU 频率?
    2) 2)我们如何检查频率变化?
    2) 2)默认频率是否设置为750MHz?
   
谢谢、此致  
Jithin daggy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jitin、您好!

    如果您使用的是 Vision SDK、则可以使用 Starterware 电源管理 API (PMHALCMDpllConfigure)来更改 A15内核的频率。 您可以在以下文件中看到当前的实现:
    starterware_XX_XX_XX\bootloader\SBL_utils\src\SBL_utils_tda2xx.c ->函数:SBLUutilsConfigDpll
    starterware_XX_XX_XX_XX\bootloader\SBL_lib\src\SBL_lib_tda2xx_prcm_DPLL.c -> pDpllMpuCfg 结构

    您可以通过查看 Vision SDK PRCM 统计信息来检查频率。 启动 Vision SDK 后,您可以选择选项"S":系统设置->'5':打印 PRCM 统计信息-> 5:显示 CPU 频率

    或者、如果您具有 CCS 连接、则可以使用 GEL 脚本 TDA2xx PRCM 时钟配置-公共-> TDA2xx_PRCM_Clock_getconfig。

    默认值为 OPP_NOM、对应于750MHz。 您可以使用 OPP_OD 或 OPP_HIGH 构建 SBL、以便也获得支持的1176MHz A15频率。

    谢谢、此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    感谢您的回复,我没有使用 VISION SDK。 我有一个定制的应用代码。 我可以从应用程序代码或引导加载程序更改 CPU 频率吗? 是否有任何 API 可从应用程序/引导加载程序设置频率?

    如何单独构建 Starterware?
    可以在 A15上设置1176MHz 的最大频率吗?

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

    Jibin、您好!

    您可以使用 Starterware PMHAL API 更改 A15频率。 下面是一个示例(API 以黄色突出显示)。 有关更多详细信息、您可以查看我在上一帖子中共享的两个引导加载程序文件。

    #include "pmhal_cm.h"

    pmhalPrcmPllPostDivValue_t dpllMpuPostDivCfgOppOd_20[]=

      {PMHAL_PRCM_DPLL_POST_DIV_M2、1}、/* DIV_m2_clkcfg *

    };

    pmhalPrcmDpllConfig_t dpllParams ={

      294、            /*乘法器*/

      4、             /*分频器*/

      0、             /* DutyCycleCorrector */

      dpllMpuPostDivCfgOppod_20、

      (sizeof (dpllMpuPostDivCfgOppod_20)/sizeof (phalPrcmPlllPostDivValue_t))、

      0

    };

    RetVal = PMHALCMDpllConfigure (PMHAL_PRCM_DPLL_MPU、

                     dpllParams (&D)、

                     PM_TIMEOUT_INALEVINLETON_)

    如何单独构建 Starterware?

    您可以参阅 starterware_XX_XX_XX_XX\docs\StarterWare_UserGuide.pdf 第6节。 构建步骤以了解单独构建 Starterware 的确切步骤。

    可以在 A15上设置1176MHz 的最大频率吗?

    是的。 TDA2xx 23x23封装数据手册提到了 A15 MPU_CLK 的 OPP_HIGH (最大频率)为1176MHz。

    希望这对您有所帮助。

    谢谢、此致、

    Piyali

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

    我想在这里再添加一个详细信息。 更改 A15频率时、还应注意与频率变化相关的必要电压变化。 TDA2xx 器件支持自适应电压调节(AVS) 0类。 要对相应的电压值进行编程、可以参阅 API:PMMHALVMSetOpp 及其在 starterware_XX_XX_XX_XX\bootloader\SBL_utils\src\SBL_utils_tda2xx.c 文件中的函数 SBLUtilsConfigAllVoltageRails 中引导加载程序上下文中的用法

    谢谢、此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    感谢您的回复。 我正在研究您的建议、一旦频率变化得到确认、我将更新您的建议。
    我还有一个查询,我们可以使用 BIOS_setfrequency API 来设置频率吗?

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

    我猜您是指 BIOS_setCpuFreq。 此函数设置 CPU 频率的软件结构值、而不是实际拨号 PLL 以更改频率。

    /*
    *==== BIOS_setCpuFreq ===
    *
    void BIOS_setCpuFreq (Types_FreqHz *频率)

    bios_module->cpufreq =* freq;


    谢谢、此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    是的、您的猜测是正确的。 那么、该 API 是否会正确设置频率?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jibin、您好!

    否 此 API 只会更改软件变量、而不会物理更改 CPU 的频率。 当然、一旦你实际改变了 CPU 频率(通过锁定 PLL 来提供一个特定的时钟频率)、应该为 BIOS 软件组件设置这个 API 来跟踪 CPU 时间。

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

    此致
    Jithin daggy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    我还有一个查询,即上面的注释中提到的乘法器和除法器,在函数 pmhalPrcmDpllConfig_t dpllParams()中,它是否会设置为1176MHz?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    劫持线程。 对于各种时钟设置、也会使用 DPLL 乘法器和分频器来根据需要调整频率、我建议检查此处提供的时钟树工具 :www.ti.com/.../clocktreetool

    谢谢、
    Alex

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

    是的、没错。

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

    你(们)好、皮亚利

    根据 TDA2xx 的 TRM、可以看到最大 CPU 频率为1.5GHz、但从上面的注释可以看到、1.176GHz 是可以在 A15上设置的最大频率。 这似乎是矛盾的。 您能否分享您有关此内容的信息?

    此致

    Jithin daggy  

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

    Jibin、您好!

    有关给定器件型号支持的确切频率、请参阅 TDA2xx 数据手册。 TRM 更通用、并介绍了器件系列。  

    此外、如果您可以分享您提到的 TRM 版本、那会很棒? 只需确保您的版本是最新版本和最佳版本...

    谢谢、此致、

    Piyali

     

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

    我使用的是 TDA2x SOC 器件版本2.0、1.x。 此版本是否正确参考? 如果不是、您可以共享版本号和描述 A15上最大频率的部分?

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

    Jibin、您好!

    TRM 的版本在 TRM 的第一页上指定、如下所示:

    示例:

    TDA2x
    用于高级驾驶员辅助的 SoC
    系统(ADAS)
    器件修订版本2.0、1.x
    德州仪器 ADAS 产品系列
    版本 XX

    在任何情况下、数据手册(DM)都与 TRM 不同、TRM 将指定支持的最大频率。 我随附了 DM (TDA2x_ABC_SR1.1_DM_vR.pdf -版本 R)提供的 TDA2x 23x23器件支持的最大频率供您参考:

    如果您需要进一步澄清、请告诉我。

    谢谢、此致、

    Piyali

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

    你(们)好、皮亚利

    您能否分享详细信息、为在 A15 (1176MHz)上实现最大 CPU 频率而设置的电压应该在哪里以及应该在哪里设置什么?  

    此致

    Jithin daggy  

     

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

    Jibin、您好!

    特定 OPP 上的电压使用 AVS (自适应电压调节) 0类进行设置。 这通常与 TDA2x 启动时的启动电压不同。 AVS 0类机制主要涉及读取器件 EFUSE 寄存器值、以找出适合给定 OPP 的电压。 (在 MPU 电压域的 OPP_HIGH 情况下)。 找到该值后、会在 PMIC 中对其进行编程以更改电压。

    STW PM 库提供用于读取 EFUSE 和对 PMIC 进行编程的 API (当然要视所使用的 PMIC 而定)。 API 是  PMMHALVMSetOpp。

    您可以参阅函数  SBLUtilsConfigAllVoltageRails (文件 starterware_01_07_00_19\bootloader\SBL_utils\src\SBL_utils_tda2xx.c)中的用法、以了解如何注册 PMIC 以及如何使用  PMHALVMSetOpp 配置 AVS 电压。

    如果您需要更多信息、请告诉我。

    此致、

    Piyali  

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

    你(们)好、皮亚利

    我已根据您在上述链中的评论对 CPU 频率进行了更改。 但我看不到 CPU 频率的变化。 它仍然保持不变。

    此致

    Jithin daggy  

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

    您能告诉我您所做的确切更改是什么、您如何检查最终频率? 我们可以一起使用一个有效的调试会话来加快频率变化。

    谢谢、此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    请注意,我们有一个由我们的应用程序使用的定制 Starterware,因此我要说的 API 将是 TI 提供的原始 API 的包装程序,下面是我所做的更改

    -在函数 get_current_opp ()中将 opp 从 OPP_norm 更改为 OPP_HIGH。 这是我们从中获取的函数 OPPID。
    -更改了 MPU 函数 getDpllStructure()中的乘法器(294)和除法器(4)值。
    -使用新的更改重建 Starterware,然后编译我的应用程序
    关于电压变化,我已经过代码,但我没有做太多更改。 如果可能、在调试会话中、您可以帮助我解决所需的任何更改、这些更改肯定会反映出来。

    我用于检查频率变化的方法如下

    我们有一个用于显示统计数据的模块,它是 Vision SDK PRCM 统计数据的包装程序,在该模块中,它使用 BIOS_getfreq()函数来检索内核的频率,然后显示它。

    是的、我们可以有一个正常工作的调试会话、这样我们就可以在今天/明天结束该会话。

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

    更改的顶级描述看起来很好。

    BIOS_getCpuFreq 不会真正读取 DPLL 寄存器来为您提供 CPU 的实际时钟频率。 它是应用程序需要根据 DPLL 的实际配置方式设置的 BIOS 输入值。 当您读取 BIOS_getCpuFreq 的输出时、它将反映 VISION_SDK/src_MAIN_APP/tda2xx/a15_0/a15_0.cfg 中提到的软件值、或者已将结构变量 BIOS_module->cpufreq 设置为使用 BIOS_setCpuFreq 的最后一个值。

    为了获得通过 SBL 更改实际实现的实际时钟频率、除了任何进一步的代码更改之外、您可以尝试以下操作:

    1.运行 SBL 后通过 CCS 连接到 A15。 确保在连接 A15时未加载任何 GEL 文件。
    2.加载 GEL 文件 \ccs_base\emulation\gel\TDA2x\TDA2xx_prcm_config.gel
    3.运行脚本 TDA2xx PRCM 时钟配置-通用-> TDA2xx_PRCM_Clock_getconfig。

    此 GEL 函数将读取 PRCM 寄存器、并为您提供 DPLL 中配置的 MPU 的实际频率。 在 BIOS 应用程序中,您应该使用 BIOS_setCpuFreq 将 BIOS_module->cpufreq 变量的值更改为1176MHz,以便 BIOS 知道您已经从 SBL 将 PLL 配置为1176MHz。

    如果您可以向我发送您的电子邮件 ID、我可以设置调试会话来澄清您可能对此产生的任何困惑。

    谢谢、此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、皮亚利

    感谢您提供的信息。 我将尝试通过 CCS 加载 GEL 文件来检查频率变化、并告知您。
    这是我的电子邮件 ID jithin.daggy@valeo.com。

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

    你(们)好、皮亚利

    我已连接 CCS,但无法看到频率。 请找到显示 CCS 控制台输出的附件、并找到相同的快照。

    e2e.ti.com/.../frequency.txt

    此致

    Jithin daggy

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

    Jibin、您好!

    看起来您正在加载 TDA2xx_PRCM_GET_Config.gel、而不是 TDA2xx_prcm_config.gel。(请注意文件名和 GEL 函数之间的差异)

    TDA2xx_PRCM_GET_Config.gel -提供 PRCM 模块配置状态(开/关状态)(GEL 函数:TDA2xx PRCM 获取配置)

    TDA2xx_prcm_config.gel -对 DPLL 进行编程并读取 PLL 频率。 (GEL 函数:TDA2xx_PRCM_Clock_getconfig)


    您可以尝试  TDA2xx_prcm_config.gel 并尝试 TDA2xx PRCM 时钟配置-通用-> TDA2xx_PRCM_Clock_getconfig 吗?

    谢谢、此致、

    Piyali

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

    是的、您回答正确、我加载了 TDA2xx_PRCM_GET_Config.gel、而不是 TDA2xx_prcm_config.gel。 我将尝试使用 TDA2xx_prcm_config.gel、并将尽快更新结果。

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

    你(们)好、皮亚利

    我 已加载 TDA2xx_PRCM_GET_Config.gel、我可以看到 A15 CPU 频率与750 (MHz)保持不变。 请找到相同的附件。

    此致

    Jithin daggy

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

    让我们在调试会话期间查看您的代码更改。 然后、我们可以将我们的调查结果发布到该论坛。

    此致、
    Piyali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    发布调试会话的结果:

    对代码所做的更改已被审查为正确。 检查了编程到 DPLL MPU 的值。 发现代码更改由于库/闪存映像过时而未生效。
    重新编译和闪存显示 MPU 正以所需的频率计时。

    Jithin、

    请随意关闭此主题。

    谢谢、此致、
    Piyali