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.

[参考译文] DRA821U:如何更改 SBL 中的初始 MPU (A72)时钟频率

Guru**** 2422790 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl

器件型号:DRA821U
主题中讨论的其他器件:DRA821SYSBIOS

请问如何更改 SBL 中的初始 MPU (A72)时钟频率?

我们的客户修改了 SBL 源代码以更改初始 MPU (A72)时钟频率、但 MPU 未运行。

他们按如下方式修改了 sbl_soc_cfg.h 以更改初始 MPU 时钟频率。

~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/soc/k3/sbl_soc_cfg.h

#IF 定义(SOC_J7200)


#define SBL_MPU1_CPU0_FREQ_Hz (1500000000)

他们按如下方式修改了 SBL_SLAVE_CORE_BOOT.c、以确保每个内核时钟频率都已更改。

~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/soc/k3/sbl_slave_core_boot.c

void SBL_SlaveCoreBoot (cpu_core_id_t core_id、uint32_t freqHz、sblEntryPoint_t * pAppEntry、uint32_t requestCoresFlag)

uint64_t respFreq、currentFreq;


status = Sciclient_pmQueryModuleClkFreq (
sblSlaveCoreInfoPtr->tisci_dev_id、
sblSlaveCoreInfoPtr->tisci_clk_id、
sblSlaveCoreInfoPtr -> slave_clk_freq_Hz,
重新制造频率(&R)、
SCICLIENT_SERVICE_WAIT_FOREVAL);
if (status!= CSL_PASS)

SBL_log (SBL_LOG_MAX、" Sciclient_pmQueryModuleClkFreq...失败\n");
SblErrLoop (__file__、__line__);

其他

SBL_log (SBL_LOG_MAX、"Sciclient_pmQueryModuleClkFreq、DevID 0x%x @%dHz... \n"、sblSlaveCoreInfoPtr->tisci_dev_id、respFreq);

SBL_Add_profile_point;

SBL_log (SBL_LOG_MAX、"Sciclient_pmSetModuleClkFreq、DevID 0x%x @%dHz... \n"、sblSlaveCoreInfoPtr->tisci_dev_id、sblSlaveCoreInfoPtr->Slave_clk_freq_Hz);
SBL_Add_profile_point;
状态= Sciclient_pmSetModuleClkFreq (sblSlaveCoreInfoPtR->tisci_dev_id、
sblSlaveCoreInfoPtr->tisci_clk_id、
sblSlaveCoreInfoPtr -> slave_clk_freq_Hz,
TISCI_MSG_FLAG_AOP、
SCICLIENT_SERVICE_WAIT_FOREVAL);
if (status!= CSL_PASS)

SBL_log (SBL_LOG_MAX、" Sciclient_pmSetModuleClkFreq...失败\n");
SblErrLoop (__file__、__line__);

SBL_Add_profile_point;

status = Sciclient_pmGetModuleClkFreq (
sblSlaveCoreInfoPtr->tisci_dev_id、
sblSlaveCoreInfoPtr->tisci_clk_id、
当前频率(currentFreq)、
SCICLIENT_SERVICE_WAIT_FOREVAL);
if (status!= CSL_PASS)

SBL_log (SBL_LOG_MAX、" Sciclient_pmGetModuleClkFreq...失败\n");
SblErrLoop (__file__、__line__);

其他

SBL_log (SBL_LOG_MAX、"Sciclient_pmGetModuleClkFreq、DevID 0x%x @%dHz... \n"、sblSlaveCoreInfoPtr->tisci_dev_id、currentFreq);

SBL_Add_profile_point;

8.4.3.设置设备时钟
software-dl.ti.com/.../faq_module_clocking.html

他们使用 SBL 测试应用程序来确保 MPU 正在运行。 在输出消息日志中、MPU 时钟频率设置为1.5GHz、但不输出"MPU1_0 Running"。

~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/example/k3MulticoreApp/binary/j7200/sbl_baremetal_boot_test_j7200_evm_mpu1_0TestApp_release.appimage
e2e.ti.com/.../SBL_5F00_log_5F00_2.0GHz_5F00_debug.txt
e2e.ti.com/.../SBL_5F00_log_5F00_1.5GHz_5F00_debug.txt

5.2.7测试 SBL
software-dl.ti.com/.../boot_k3.html

此致、

Daisuke

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

    尊敬的 TI 支持团队:

    如何更改上述 POST 中所述的初始 MPU (A72)时钟频率是否正确?

    如果我有任何误解、您能告诉我吗?

    请尽快给我一个答案。 如果您能及时回复、我们将不胜感激。

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    [引用 userid="102452" URL"~/support/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl ]#define SBL_MPU1_CPU0_FREQ_Hz (1500000000)

    与此类似、请更改:

    #define SBL_MPU1_CPU1_FREQ_Hz      (1500000000)

    1.5GHz 可能无法直接实现、因此您可以尝试1.2GHz 吗? 即

    #define SBL_MPU1_CPU1_FREQ_Hz      (1200000000)
    #define SBL_MPU1_CPU0_FREQ_Hz      (1200000000)

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    遗憾的是、我们的客户正在日本度假、被称为黄金周、因此他们不能尝试您的建议一周左右。 我们也无法尝试、因为我们没有 DRA821板。

    另一方面、我们的客户已经尝试了下列频率。

    1.9GHz、1.8GHz、1.7GHz、1.6GHz、1.5GHz、 1GHz

    在1.6GHz 及更低频率下、不输出"MPU1_0 Running"。 在1.7GHz 及更高频率下、输出"MPU1_0 Running"、但其针对 MPU 的基准测试应用显示的结果与2GHz 相同。

    此致、

    Daisuke

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

    您好、Keerty-San、

    > 1.5GHz 可能无法直接实现、因此您可以尝试1.2GHz 吗? 即

    您能否告诉我为什么建议尝试1.2GHz?

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    我尝试了1.2GHz、它起作用、因此我建议这么做。

    我认为1.5GHz 尤其存在我在 J721e 上观察到的问题、我也检查了 j7200
    我看到了这个问题。

    我正在 Linux 上尝试、在 SBL 上、您应该将该寄存器地址:0x688040设置为  SBL 中的值0x8000000001。

    以上内容将使您能够正确设置1.5GHz。

    您可以尝试一下、告诉我吗?  如果上述建议解决了问题、请"验证答案"。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    >我正在 Linux 上尝试、在 SBL 上、您应该将该寄存器地址:0x688040设置为 SBL 中的值0x8000000001。

    这会将值设置为 PLL8_SS_CTRL 寄存器。 主 PLL 寄存器在 cslr_main_pll_MMR.h 中定义、但这些定义似乎未在任何源代码中使用。

    我们应该修改哪个源代码来设置它?

    这会将 PLL8_SS_CTRL 寄存器中的 BYPASS_EN 设置为1b 并旁路 SS 调制器。

    为什么禁用展频调制? 扩频调制是否不应用于 PLL8 (MPU 时钟)?

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    默认情况下、寄存器读取0x8000000

    即只需要设置 PLL8_SS_CTRL 位[0]。

    A72 PLL 时钟路径中有一个多路复用器、用于选择 PLL 输出或 HSDIV 输出。 为了将 HSDIV 输出用于 A72 PLL、请将0x688040的位0 (从0)设置为1。

    因此、我建议执行以下操作:

    CSL_REG32_WR (0x688040、0x8000000001);

    然后调用以下函数来设置时钟频率。

    Sciclient_pmSetModuleClkFreq

    它是获取正确时钟频率的一种方法。 您是否可以尝试该操作并返回?

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    > A72 PLL 时钟路径中有一个多路复用器、用于选择 PLL 输出或 HSDIV 输出。 为了将 HSDIV 输出用于 A72 PLL、请将0x688040的位0 (从0)设置为1。

    我在 TRM 的图5-759中确认了这一点。

    我们的客户将尝试您的建议。

    无论时钟频率如何、您的建议是否可用于1.5GHz 以外的频率?

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    我尝试了1.2GHz。 我相信我们也可以尝试其他方法。 如果没有其他问题。 请单击验证答案。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们的客户认为无法更改 MPU 时钟频率是软件问题、他们怀疑当前的 SDK 不完整。

    至少 SDK 应支持所有器件的时钟频率(opps)。

    当前的 SDK 是否仅支持 DRA821xT 的最大时钟频率?

    如果是、是否有计划让未来的 SDK 支持所有器件的时钟频率(opps)?

    此致、

    Daisuke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="102452" URL"~/support/processors-group/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl/3693937 #3693937"]当前 SDK 是否仅支持 DRA821xT 的最大时钟频率?[/quot]

    没错。 它以2GHz 的频率启动。


    [引用 userid="102452" URL"~/support/processors-group/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl/3693937 #3693937"]

    如果是、是否有计划让未来的 SDK 支持所有器件的时钟频率(opps)?

    [/报价]

    我将在听到内部团队的声音后再回复您。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。 很抱歉要问你很多次。

    您在上述帖子中建议将 MPU 子系统中的两个内核定义为相同的频率、以更改 MPU 时钟频率。

    #define SBL_MPU1_CPU1_FREQ_Hz (1200000000)
    #define SBL_MPU1_CPU0_FREQ_Hz (1200000000)

    只有当每个内核有一个有效的应用映像时、才会在 SBL 中设置每个内核时钟频率。

    是否需要为两个 MPU 内核定义、即使只使用一个 MPU 内核?

    即使仅使用一个 MPU 内核、两个 MPU 内核是否都需要应用映像?

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    默认情况下、它在 SMP 模式下工作、即需要设置两个内核时。

    如果 您仅使用 CPU0、则只需尝试:

    #define SBL_MPU1_CPU0_FREQ_Hz (1200000000)

    您能否确认您现在能够以1.2GHz 启动?

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们的客户 能够使用1.2GHz 进行引导、但他们的 MPU 基准测试应用显示的结果与2GHz 相同。

    顺便说一下、在 AM654x 中、基准测试应用会根据频率显示不同的结果。

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    客户能否共享以下命令的输出:

    k3conf dump clock 202

    以上内容将确认 A72是否确实以1.2GHz 运行。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们的客户使用的是 RTOS SDK、而不是 Linux。 由 Sciclient_pmGetModuleClkFreq 读取的时钟显示1.2GHz。

    e2e.ti.com/.../SBL_5F00_log.txt

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    您能否读取寄存器 :0x688040

    根据上述主题中的讨论、检查值是否为0x8000000001?
    正确设置需要上述内容。

    -凯尔西

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

    您好、Keerty-San、

    感谢你的答复。

    如上述日志中所示、该值在寄存器设置后确认。 寄存器设置正确。

    PLL8_SS_CTRL 寄存器值= 0x8000000001

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    以下几点:

    请确保 在设置时钟频率之前设置 PLL8_SS_CTRL 寄存器值= 0x8000000001。
    2.您能否共享用于测试性能的应用程序?

    如果您要测试 A72性能、频率降低应会产生一些影响。 因此、问题就在于此。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢你的答复。

    在 SBL (设置 MPU 时钟后)和 MPU 应用(在主函数中)中检查的 MPU 时钟频率和 PLL8设置不同、SBL 中为1.2GHz、MPU 应用中为2GHz。 因此、MPU 时钟频率可能已被 SBL 以外的其他内容更改。

    SBL 记录:

    Sciclient_pmQueryModuleClkFreq、DevID 0xca @ 1200000000Hz...
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    Sciclient_pmSetModuleClkFreq、DevID 0xca @ 1200000000Hz...
    Sciclient_pmGetModuleClkFreq、DevID 0xca @ 1200000000Hz...
    CTRLMMR_WKUP_MAIN_PLL8_CLKSEL 寄存器值= 0x800000
    BYPASS_SW_OVRD 字段值= 0x0
    BYP_WARM_RST 字段值= 0x1
    CLK_SEL 域值= 0x0
    PLL8_FREQ_CTRL0寄存器值= 0x7d
    FB_DIV_INT 字段值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    FB_DIV_FRAC 域值= 0x0
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    POST_DIV2字段值= 0x1
    POST_DIV1字段值= 0x2
    Ref_DIV 字段值= 0x1
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    BYPASS_EN 字段值= 0x1
    WV_Tble_MAXADDR 域值= 0x0
    复位域值= 0x0
    DOWNSPREAD_EN 域值= 0x0
    Wave_SEL 域值= 0x1
    PLL8_SS_SPread 值= 0x10001
    MOD_DIV 字段值= 0x1
    扩展域值= 0x1
    PLL8_HSDIV_CTRL0寄存器值= 0x8001
    复位域值= 0x0
    CLKOUT_EN 字段值= 0x1
    SYNC_DIS 字段值= 0x0
    HSDIV 域的值= 0x1

    e2e.ti.com/.../6786.SBL_5F00_log.txt

    MPU 应用程序记录:

    Sciclient_pmGetModuleClkFreq、DevID 0xca @ 2000000000Hz...
    CTRLMMR_WKUP_MAIN_PLL8_CLKSEL 寄存器值= 0x800000
    BYPASS_SW_OVRD 字段值= 0x0
    BYP_WARM_RST 字段值= 0x1
    CLK_SEL 域值= 0x0
    PLL8_FREQ_CTRL0寄存器值= 0x68
    FB_DIV_INT 字段值= 0x68
    PLL8_FREQ_CTRL1寄存器值= 0x2aaab
    FB_DIV_FRAC 字段值= 0x2aaaab
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    POST_DIV2字段值= 0x1
    POST_DIV1字段值= 0x2
    Ref_DIV 字段值= 0x1
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    BYPASS_EN 字段值= 0x1
    WV_Tble_MAXADDR 域值= 0x0
    复位域值= 0x0
    DOWNSPREAD_EN 域值= 0x0
    Wave_SEL 域值= 0x1
    PLL8_SS_SPread 值= 0x10001
    MOD_DIV 字段值= 0x1
    扩展域值= 0x1
    PLL8_HSDIV_CTRL0寄存器值= 0x8000
    复位域值= 0x0
    CLKOUT_EN 字段值= 0x1
    SYNC_DIS 字段值= 0x0
    HSDIV 域的值= 0x0

    e2e.ti.com/.../0333.app_5F00_log.txt

    是否可以通过 SysBIOS 初始化(在 main 之前)更改 MPU 时钟频率?

    如果是、在哪个文件中定义了 MPU 时钟频率?

    我会建议我们的客户尝试裸机应用程序、而不是 BIOS 应用程序。

    此致、

    Daisuke

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

    您好、Keerty-San、

    我还有一个问题。

    是否确实需要设置 PLL8_SS_CTRL 寄存器值= 0x8000000001?

    使用 HSDIV 输出时、MPU 时钟频率似乎为600MHz、而不是1.2GHz。

    FOUTP =(FREF/REFDIV)*(FBIV + FRAC)
           =(FREF / REF_DIV)*(FB_DIV_INT + FB_DIV_FRAC / 2^24)
           =(19.2MHz / 1)*(125 + 0 / 16777216)
           = 19.2MHz * 125
           = 2400MHz

    FOUTPOSTDIV = FOUTP /(POSTDIV1 * POSTDIV2)
                  = FOUTP /(POST_DIV1 * POST_DIV2)
                  = 2400MHz /(2 * 1)
                  = 1200MHz

    PLL8_HSDIV0输出= FOUTPOSTDIV/(HSDIV + 1)
                      = 1200MHz/(1 + 1)
                       = 600MHz

    此致、

    Daisuke

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

    Daisuke-San、您好!

    SBL 之后运行什么?

    -凯尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们的客户在 SBL 之后运行了 ex02_BIOS_multicore_echo_test。

    他们将尝试检查 SBL 测试应用(SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release)上的 MPU 时钟频率和 PLL8设置。

    此致、

    Daisuke

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

    您好、Keerty-San、

    我们的客户在 SBL 之后将 board_diag_UART_mpu1_0_release 作为裸机应用运行。

    在 MPU 应用程序(在主函数中)中检查的 MPU 时钟频率表示2GHz。 因此、无论是否使用 SYSBIOS、MPU 时钟频率都将重新配置为2GHz。

    SBL 记录:

    Sciclient_pmQueryModuleClkFreq、DevID 0xca @ 1200000000Hz...
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    Sciclient_pmSetModuleClkFreq、DevID 0xca @ 1200000000Hz...
    Sciclient_pmGetModuleClkFreq、DevID 0xca @ 1200000000Hz...
    CTRLMMR_WKUP_MAIN_PLL8_CLKSEL 寄存器值= 0x800000
    BYPASS_SW_OVRD 字段值= 0x0
    BYP_WARM_RST 字段值= 0x1
    CLK_SEL 域值= 0x0
    PLL8_FREQ_CTRL0寄存器值= 0x7d
    FB_DIV_INT 字段值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    FB_DIV_FRAC 域值= 0x0
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    POST_DIV2字段值= 0x1
    POST_DIV1字段值= 0x2
    Ref_DIV 字段值= 0x1
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    BYPASS_EN 字段值= 0x1
    WV_Tble_MAXADDR 域值= 0x0
    复位域值= 0x0
    DOWNSPREAD_EN 域值= 0x0
    Wave_SEL 域值= 0x1
    PLL8_SS_SPread 值= 0x10001
    MOD_DIV 字段值= 0x1
    扩展域值= 0x1
    PLL8_HSDIV_CTRL0寄存器值= 0x8001
    复位域值= 0x0
    CLKOUT_EN 字段值= 0x1
    SYNC_DIS 字段值= 0x0
    HSDIV 域的值= 0x1

    e2e.ti.com/.../7206.SBL_5F00_log.txt

    MPU 应用程序记录:

    Sciclient_pmGetModuleClkFreq、DevID 0xca @ 2000000000Hz...
    CTRLMMR_WKUP_MAIN_PLL8_CLKSEL 寄存器值= 0x800000
    BYPASS_SW_OVRD 字段值= 0x0
    BYP_WARM_RST 字段值= 0x1
    CLK_SEL 域值= 0x0
    PLL8_FREQ_CTRL0寄存器值= 0x68
    FB_DIV_INT 字段值= 0x68
    PLL8_FREQ_CTRL1寄存器值= 0x2aaab
    FB_DIV_FRAC 字段值= 0x2aaaab
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    POST_DIV2字段值= 0x1
    POST_DIV1字段值= 0x2
    Ref_DIV 字段值= 0x1
    PLL8_SS_CTRL 寄存器值= 0x8000000001
    BYPASS_EN 字段值= 0x1
    WV_Tble_MAXADDR 域值= 0x0
    复位域值= 0x0
    DOWNSPREAD_EN 域值= 0x0
    Wave_SEL 域值= 0x1
    PLL8_SS_SPread 值= 0x10001
    MOD_DIV 字段值= 0x1
    扩展域值= 0x1
    PLL8_HSDIV_CTRL0寄存器值= 0x8000
    复位域值= 0x0
    CLKOUT_EN 字段值= 0x1
    SYNC_DIS 字段值= 0x0
    HSDIV 域的值= 0x0

    e2e.ti.com/.../5460.app_5F00_log.txt

    我们的客户将尝试在 SBL 测试应用(SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release)上检查 MPU 时钟频率和 PLL8设置。

    此致、

    Daisuke

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

    Daisuke-San、是否有客户尝试更新?  您能否在理解最新问题时对其进行总结?

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

    Daisuke-San、您好!

    你想让我从我的角度尝试任何东西吗? 如果您有其他问题、请告诉我。

    -凯尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们的客户正在尝试在 SBL 中设置 MPU 时钟频率后、在何处重新设置 MPU 时钟频率。 因此、他们正在尝试检查 SBL 测试应用(SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release)上的 MPU 时钟频率和 PLL8设置。 他们尝试使用 GEL 文件通过 CCS 调试器而不是 UART 来读取 PLL 寄存 器、因为 SBL 测试应用默认不会链接 UART_stdio API、但读取失败。

    我有关该故障的文章位于 :https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1007775/dra821u-how-to-debug-with-ccs-after-booting

    此外、我们还有另一个问题。

    MPU 时钟频率似乎设置为一半。

    对于1.2GHz:

    FOUTP =(FREF/REFDIV)*(FBIV + FRAC)
           =(FREF / REF_DIV)*(FB_DIV_INT + FB_DIV_FRAC / 2^24)
           =(19.2MHz / 1)*(125 + 0 / 16777216)
           = 19.2MHz * 125
           = 2400MHz

    FOUTPOSTDIV = FOUTP /(POSTDIV1 * POSTDIV2)
                  = FOUTP /(POST_DIV1 * POST_DIV2)
                  = 2400MHz /(2 * 1)
                  = 1200MHz

    PLL8_HSDIV0输出= FOUTPOSTDIV/(HSDIV + 1)
                      = 1200MHz/(1 + 1)
                       = 600MHz

    对于2GHz:

    FOUTP =(FREF/REFDIV)*(FBIV + FRAC)
           =(FREF / REF_DIV)*(FB_DIV_INT + FB_DIV_FRAC / 2^24)
           =(19.2MHz / 1)*(104 + 2796203 / 16777216)
           = 19.2MHz * 104.16666865348816
           = 2000.00000038147MHz

    FOUTPOSTDIV = FOUTP /(POSTDIV1 * POSTDIV2)
                  = FOUTP /(POST_DIV1 * POST_DIV2)
                  = 2000MHz /(2 * 1)
                  = 1000MHz

    PLL8_HSDIV0输出= FOUTPOSTDIV/(HSDIV + 1)
                       = 1000MHz/(0 + 1)
                       = 1000MHz

    我的 MPU 时钟频率计算是否正确?

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    我将在星期一之前进行上述计算、然后再返回给您。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢您的支持。

    您的 MPU 时钟频率计算进度如何?

    我们的客户正在调查在 SBL 中设置 MPU 时钟频率后、在何处重新设置 MPU 时钟频率。

    在 MCU1_0从 SBL 分支到应用之前、MPU 时钟频率在1.2GHz 时保持不变。

    e2e.ti.com/.../1803.SBL_5F00_log.txt

    在 SBL 测试应用程序(SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release)运行后、CCS 上内存浏览器读取的 PLL 寄存器中的设置指示2GHz。

    我怀疑在 MCU1_0上运行的 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)重新设置了 MPU 时钟频率。

    Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)是否设置了 MPU 时钟频率?

    如果是、为 Sciserver 测试应用定义的 MPU 时钟频率在哪里?

    我会建议客户尝试使用其他示例(例如 sciclient_firmware_boot_TestApp)来实现 SCICLIENT 应用。

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    您能否共享 PLL8_DIV_CTRL 寄存器的寄存器值

    devmem2 0x688038
    /dev/mem 已打开。
    映射到地址0xffffff5030000的存储器。
    读取地址0x00688038 (0xffa5038038):0x00000001

     我看到的值为0x1。

    您能否确认您的结尾处的值?

    -凯尔西

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

    您好、Keerty-San、

    感谢你的答复。

    >您能否共享 PLL8_DIV_CTRL 寄存器的寄存器值

    您可以在我之前的帖子中找到它。 在运行 SBL 和运行应用之后、PLL8_DIV_CTRL 寄存器的值均为0x1020001。

    重新配置 PLL 后、PLL8_FREQ_CTRL0寄存器、PLL8_FREQ_CTRL1寄存器和 PLL8_HSDIV_CTRL0寄存器的值发生变化。

    运行 SBL 后:

    PLL8_FREQ_CTRL0寄存器值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    PLL8_HSDIV_CTRL0寄存器值= 0x8001

    运行应用程序后:

    PLL8_FREQ_CTRL0寄存器值= 0x68
    PLL8_FREQ_CTRL1寄存器值= 0x2aaab
    PLL8_DIV_CTRL 寄存器值= 0x1020001
    PLL8_HSDIV_CTRL0寄存器值= 0x8000

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    我与我们的硬件专家讨论了这些结果。

    Refdiv =基准/输入分频器(在 EVM/SVB 上为19.2MHz、因为这是晶体产生的频率)

    Postdiv =输出分频器。

     

    现在、PLL 有多个输出。 具体而言,有 VCO 输出(FoutP 和 FoutN)。 这是从 VCO 直接抽头、然后后分频器可以对时钟进行分频。 这通常是为了驱动高速分频器。

    高速分频器非常简单,OUTPUT = INPUT/(DEADER_VALUE +1)=>注意:这是因为可以在寄存器中将 DEADER_VALUE 设置为“0”,Silicon Creations 不想处理“零分频”问题。 取所需的值并减去“1”,然后将结果编程到 HSDIV 控制 MMR 中。

    至于 A72时钟频率,目前设置为2GHz。 时钟来自连接到 VCO 输出的 HSDIV,如下所示:

    因此在计算中:POSTDIV 计算无关。

    HSDIV_CLKOUT = FOUT/(HSDIV + 1)

    下面是用于1.2GHz 的参数示例表

    参数

    2GHz 时钟的值

    1.2GHz 时钟的值

    输入参考

    1

    1

    整数反馈除法器

    104.

    125 (19.2 * 125 = 2400)

    分数反馈分频器

    2796203.

    0

    POSTDIV1.

    不用担心

    不用担心

    POSTDIV2.

    不用担心

    不用担心

    HSDIV 值*

    0

    1

    整数与分数模式*

    分数模式中的 PLL

    分数模式中的 PLL

    希望这能解答您的问题。

    此致、
    基尔西

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

    您好、Keerty-San、

    感谢您的支持。 我了解 MPU 时钟频率的计算方法。

    我们的另一个问题仍然存在。

    我怀疑在 MCU1_0上运行的 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)会更改 MPU 时钟频率。

    Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)是否更改 MPU 时钟频率?

    如果是、为 Sciserver 测试应用定义的 MPU 时钟频率在哪里?

    在所有内核上运行 SBL 测试应用时、MPU 时钟频率在 SBL 中设置后没有变化。

    [SBL] tiboot3.bin
    MCU1_0:SBL_mmcsd_img_mcu1_0_release.tiimage
    [TIFS] tifs.bin
    DMSC (M3_0):tifs.bin
    [应用程序]应用程序
    所有内核:SBL_BareMetal_boot_test_j7200_evm_all_coresTestApp_release.appimage

    运行 SBL 后:

    PLL8_FREQ_CTRL0寄存器值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    PLL8_HSDIV_CTRL0寄存器值= 0x8001

    e2e.ti.com/.../SBL_5F00_log_5F00_allcores.txt

    运行应用程序后:

    PLL8_FREQ_CTRL0寄存器值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    PLL8_HSDIV_CTRL0寄存器值= 0x8001

    在 MPU 上运行 SBL 测试应用程序、在 MCU1_0上运行 Sciserver 测试应用程序时、MPU 时钟频率在 SBL 中设置后发生变化。

    [SBL] tiboot3.bin
    MCU1_0:SBL_mmcsd_img_mcu1_0_release.tiimage
    [TIFS] tifs.bin
    DMSC (M3_0):tifs.bin
    [应用程序]应用程序
    MPU1_0:SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release.rprc
    MCU1_0:sciserver_testapp_mcu1_0_release.rprc

    运行 SBL 后:

    PLL8_FREQ_CTRL0寄存器值= 0x7d
    PLL8_FREQ_CTRL1寄存器值= 0x0
    PLL8_HSDIV_CTRL0寄存器值= 0x8001

    e2e.ti.com/.../SBL_5F00_log_5F00_mpu1_5F00_0.txt

    运行应用程序后:

    PLL8_FREQ_CTRL0寄存器值= 0x68
    PLL8_FREQ_CTRL1寄存器值= 0x2aaab
    PLL8_HSDIV_CTRL0寄存器值= 0x8000

    此致、

    Daisuke

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

    Daisuke-San、您好!

    您能否 分享 您在使 SBL 频率更改为1.2GHz 方面所做的更改?


    [引用 userid="102452" URL"~/support/processors-group/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl/3740311 #3740311"]我怀疑在 MCU1_0上运行的 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)会更改 MPU 时钟频率。

    sciserver_testapp_mcu1_0_release 是在 mcu1_0上运行的 SCI 的服务器应用程序、这只会更改 MPU 时钟频率
    如果有人请求更改频率。 您能否确认在 SBL 之后运行的确切应用程序?

    我相信它是 SBL_BareMetal_boot_test_j7200_evm_all_coresTestApp_release.appimage。 您可以确认吗?

    -凯尔西

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

    您好、Keerty-San、

    感谢你的答复。

    我们修改了 SBL、但未修改应用程序。

    修改了以下头文件以将初始 MPU 时钟频率更改为1.2GHz。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/soc/k3/sbl_soc_cfg.h

    e2e.ti.com/.../sbl_5F00_soc_5F00_cfg.h

    修改了以下两个源代码以添加调试代码和此线程中建议的权变措施。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/board/k3/sbl_main.c

    e2e.ti.com/.../8686.sbl_5F00_main.c

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/soc/k3/sbl_slave_core_boot.c

    e2e.ti.com/.../2654.sbl_5F00_slave_5F00_core_5F00_boot.c

    以下应用程序映像用于在所有内核上运行 SBL 测试应用程序。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/example/k3MulticoreApp/binary/j7200/sbl_baremetal_boot_test_j7200_evm_all_coresTestApp_release.appimage

    以下应用程序映像用于在 MPU 上运行 SBL 测试应用程序、在 MCU1_0上运行 Sciserver 测试应用程序。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/example/k3MulticoreApp/binary/j7200/sbl_baremetal_boot_test_j7200_evm_mpu1_0TestApp_release.rprc

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/binary/sciserver_testapp/bin/j7200/sciserver_testapp_mcu1_0_release.rprc

    以下固件映像用于在 MCU1_0上运行 SBL、在 DMSC (M3_0)上运行 TIFS 系统固件。

    ~ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/SBL/binary/j7200_evm/mmcsd/bin/sbl_mmcsd_img_mcu1_0_release.tiimage

    ~ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/drv/sciclient/soc/V2/tifs.bin

    SBL 和 SBL 测试应用是使用以下命令构建的。

    CD ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/build
    清洁所有

    Sciserver 测试应用程序是使用以下命令构建的。

    CD ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/build
    使-s sciserver_testapp_clean Board=j7200_EVM core=mcu1_0
    使-s sciserver_testapp Board=j7200_EVM core=mcu1_0

    使用以下命令生成多核映像。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen LE 55 output.appimage 0 SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release.rprc 4 sciserver_testapp_mcu1_0_release.rprc

    此致、

    Daisuke

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

    您好、Keerty-San、

    我已检查 SBL 测试应用程序的源代码。

    ~ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/SBL/example/k3MulticoreApp/
     /SBL_multicore_A53.asm
     /SBL_multicore_R5.asm
     /SBL_amp_multicore.c

    在 SBL 测试应用中、MPU 时钟频率似乎没有设置。

    另一方面、Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)在具有 TI-RTOS 的 MCU1_0上运行。

    MPU 时钟频率是否由 TI-RTOS 初始化设置?

    如果是、为 TI-RTOS 初始化定义的 MPU 时钟频率在哪里?

    此致、

    Daisuke

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

    您好、Keerty-San、

    很抱歉我发布了很多次。

    系统固件会在引导期间将 PLL 设置为默认值。

    J7200 PLL 默认值
    software-dl.ti.com/.../pll_data.html

    DMSC (M3_0)上的系统固件是否会在 MCU1_0上的 SBL 设置 PLL8 (MPU 时钟频率)后将其更改为默认值?

    我们的客户2个月内无法更改 MPU 时钟频率。

    我们是否应该通过 MPU 应用程序中的 Sciclient_pmSetModuleClkFreq()而不是 SBL 来更改 MPU 时钟频率?

    请尽快给我一个答案。 如果您能及时回复、我们将不胜感激。

    此致、

    Daisuke

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

    您好、Keerty-San、

    我在上一篇帖子中的理解不正确。

    > DMSC (M3_0)上的系统固件是否在 MCU1_0上的 SBL 设置 PLL8 (MPU 时钟频率)后将其更改为默认值?

    对于 DRA821、系统固件中的 RM/PM SCI 服务器部件在 MCU R5而不是 DMSC (M3_0)上运行。

    software-dl.ti.com/.../TISCI.html

    如果 RM/PM SCI 服务器在 MCU1_0上与 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)一起运行、并在启动期间将 PLL 设置为默认值、则运行 SBL 后、它会将 MPU 时钟频率更改为默认值(2GHz)。

    software-dl.ti.com/.../pll_data.html

    我的理解是否正确?

    我们是否应该通过 MPU 应用程序中的 Sciclient_pmSetModuleClkFreq()而不是 SBL 来更改 MPU 时钟频率?

    请尽快给我一个答案。 如果您能及时回复、我们将不胜感激。

    此致、

    Daisuke

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

    大家好、Daisuke-San、

    我正在浏览该主题中的上下文、但同时基于您的上一篇帖子:

    [引用 userid="102452" URL"~/support/processors-group/processors/f/processors-forum/997075/dra821u-how-to-change-the-initial-mpu-a72-clock-frequency-in-sbl/3744898 #3744898"]对于 DRA821、系统固件中的 RM/PM SCI 服务器部件在 MCU R5而不是 DMSC (M3_0)上运行。

    没错。 RM/PM 统称为 DM (设备管理器)在 MCU1_0上运行、可满足来自非安全内核的请求。

    当您执行 SciClient 初始化时、将使用默认的 RM 和 PM 配置、并根据 http://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/pll_data.html 将 PLL 重置为默认值 

    您能否尝试在 MCU 应用程序中在这一点之后更改频率、看看情况是否按预期工作?

    此致、

    Karan

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

    您好、Karan-San、

    感谢你的答复。

    >您能否在 MCU 应用程序中尝试在此时之后更改频率、并查看是否按预期工作?

    MPU 时钟频率是否可以通过 MCU1_0上的 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)中的 Sciclient_pmSetModuleClkFreq ()进行更改?

    如果是、将修改以下源代码。

    ~ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/drv/sciclient/examples/sciserver_testapp/sciserver_testapp_main.c

    此致、

    Daisuke

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

    您好、Karan-San、

    MPU 时钟频率在 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)中发生了变化、 并且在 MPU 应用程序中也保持不变。

    在 Sciserver 测试应用程序(sciserver_testapp_mcu1_0_release)中、修改了以下源代码以将 MPU 时钟频率更改为1.2GHz。

    ~ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/drv/sciclient/examples/sciserver_testapp/sciserver_testapp_main.c

    e2e.ti.com/.../3113.sciserver_5F00_testapp_5F00_main.c

    Sciserver 测试应用程序是使用以下命令构建的。

    CD ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/build
    使-s sciserver_testapp_clean Board=j7200_EVM core=mcu1_0
    使-s sciserver_testapp Board=j7200_EVM core=mcu1_0

    以下应用程序映像用于在 MCU1_0上运行 Sciserver 测试应用程序。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/binary/sciserver_testapp/bin/j7200/sciserver_testapp_mcu1_0_release.rprc

    使用以下命令生成多核映像。

    ~/ti/ti-processor-sdk-rtos-j7200-evm-07_02_00_06/pdk_j7200_07_01_05_14/packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen LE 55 output.appimage 0 SBL_BareMetal_boot_test_j7200_evm_mpu1_0TestApp_release.rprc 4 sciserver_testapp_mcu1_0_release.rprc

    此致、

    Daisuke