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.

[参考译文] AM625:在 R5 SPL 中启用额外的 UART 时钟时出现问题

Guru**** 2473270 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1439237/am625-problem-enabling-additional-uart-clocks-in-the-r5-spl

器件型号:AM625

工具与软件:

您好!

我正在尝试切换电路板上的 UART 控制台端口。 我一直在遵循与此处帖子类似的流程:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1345922/am625-console-output-uart0-to-uart2

但我要切换到 UART1而不是 UART2。 我 首先从仅对时钟树进行 R5修改开始。 请参阅我的以下更改以添加所需的其他节点:

diff --git a/arch/arm/mach-k3/am62x/clk-data.c b/arch/arm/mach-k3/am62x/clk-data.c
index c0881778fe..7ba8f2f187 100644
--- a/arch/arm/mach-k3/am62x/clk-data.c
+++ b/arch/arm/mach-k3/am62x/clk-data.c
@@ -125,6 +125,11 @@ static const char * const main_usart0_fclk_sel_out0_parents[] = {
        "hsdiv4_16fft_main_1_hsdivout1_clk",
 };
 
+static const char * const main_usart1_fclk_sel_out0_parents[] = {
+       "usart_programmable_clock_divider_out1",
+       "hsdiv4_16fft_main_1_hsdivout1_clk",
+};
+
 static const struct clk_data clk_list[] = {
        CLK_FIXED_RATE("osc_26_mhz", 26000000, 0),
        CLK_FIXED_RATE("osc_25_mhz", 25000000, 0),
@@ -209,9 +214,11 @@ static const struct clk_data clk_list[] = {
        CLK_MUX("main_gtcclk_sel_out0", main_gtcclk_sel_out0_parents, 8, 0x43008030, 0, 3, 0),
        CLK_MUX("main_ospi_ref_clk_sel_out0", main_ospi_ref_clk_sel_out0_parents, 2, 0x108500, 0, 1, 0),
        CLK_DIV_DEFFREQ("usart_programmable_clock_divider_out0", "hsdiv4_16fft_main_1_hsdivout0_clk", 0x108240, 0, 2, 0, 0, 48000000),
+       CLK_DIV_DEFFREQ("usart_programmable_clock_divider_out1", "hsdiv4_16fft_main_1_hsdivout0_clk", 0x108244, 0, 2, 0, 0, 48000000),
        CLK_MUX("wkup_clkout_sel_out0", wkup_clkout_sel_out0_parents, 8, 0x43008020, 0, 3, 0),
        CLK_MUX("wkup_clksel_out0", wkup_clksel_out0_parents, 2, 0x43008010, 0, 1, 0),
        CLK_MUX("main_usart0_fclk_sel_out0", main_usart0_fclk_sel_out0_parents, 2, 0x108280, 0, 1, 0),
+       CLK_MUX("main_usart1_fclk_sel_out0", main_usart1_fclk_sel_out0_parents, 2, 0x108284, 0, 1, 0),  
        CLK_DIV("hsdiv4_16fft_mcu_0_hsdivout1_clk", "pllfracf_ssmod_16fft_mcu_0_foutvcop_clk", 0x4040084, 0, 7, 0, 0),
        CLK_FIXED_RATE("mshsi2c_wkup_0_porscl", 0, 0),
        CLK_DIV("sam62_pll_ctrl_wrap_main_0_chip_div24_clk_clk", "sam62_pll_ctrl_wrap_main_0_sysclkout_clk", 0x41011c, 0, 5, 0, 0),
@@ -311,6 +318,10 @@ static const struct dev_clk soc_dev_clk_data[] = {
        DEV_CLK(146, 1, "usart_programmable_clock_divider_out0"),
        DEV_CLK(146, 2, "hsdiv4_16fft_main_1_hsdivout1_clk"),
        DEV_CLK(146, 5, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"),
+       DEV_CLK(152, 0, "main_usart1_fclk_sel_out0"),
+       DEV_CLK(152, 1, "usart_programmable_clock_divider_out1"),
+       DEV_CLK(152, 2, "hsdiv4_16fft_main_1_hsdivout1_clk"),
+       DEV_CLK(152, 5, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"),
        DEV_CLK(157, 20, "clkout0_ctrl_out0"),
        DEV_CLK(157, 21, "hsdiv4_16fft_main_2_hsdivout1_clk"),
        DEV_CLK(157, 22, "hsdiv4_16fft_main_2_hsdivout1_clk"),
diff --git a/arch/arm/mach-k3/am62x/dev-data.c b/arch/arm/mach-k3/am62x/dev-data.c
index 140dca4bd1..e8cb8c51b6 100644
--- a/arch/arm/mach-k3/am62x/dev-data.c
+++ b/arch/arm/mach-k3/am62x/dev-data.c
@@ -61,6 +61,7 @@ static struct ti_dev soc_dev_list[] = {
        PSC_DEV(36, &soc_lpsc_list[11]),
        PSC_DEV(102, &soc_lpsc_list[11]),
        PSC_DEV(146, &soc_lpsc_list[11]),
+       PSC_DEV(152, &soc_lpsc_list[11]),
        PSC_DEV(13, &soc_lpsc_list[12]),
        PSC_DEV(166, &soc_lpsc_list[13]),
        PSC_DEV(135, &soc_lpsc_list[14])

在启动 tiboot3.bin 时、我遇到的错误消息与另一个 POST 人收到的错误消息相同(他们从未提供解决方案):

U-Boot SPL 2023.04-ti-g2c09eee5084d (Nov 15 2024 - 14:58:45 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')
k3_ddrss memorycontroller@f300000: clk get failed-2

我已按照建议启用调试打印、并看到其他输出:

U-Boot SPL 2023.04-ti-g2c09eee5084d (Nov 15 2024 - 14:58:45 +0000)                                                                                 
clk_set_defaults(sysctrler)                                                                                                                        
clk_set_default_parents: could not read assigned-clock-parents for 43c345a8                                                                        
clk_set_defaults(secproxy@44880000)                                                                                                                
clk_set_default_parents: could not read assigned-clock-parents for 43c34540                                                                        
SYSFW ABI: 3.1 (firmware rev 0x0009 '9.2.7--v09.02.07 (Kool Koala)')                                                                               
clk_set_defaults(esm@420000)                                                                                                                       
clk_set_default_parents: could not read assigned-clock-parents for 43c34608                                                                        
clk_set_defaults(esm@4100000)                                                                                                                      
clk_set_default_parents: could not read assigned-clock-parents for 43c33a28                                                                        
clk_set_defaults(memorycontroller@f300000)                                                                                                         
clk_set_default_parents: could not read assigned-clock-parents for 43c34670                                                                        
of_xlate() failed: -2                                                                                                                              
k3_ddrss memorycontroller@f300000: clk get failed-2                                                                                                
clk_request(dev=43c33e7c, clk=43c3a048)                                                                                                            
clk_get_rate(clk=43c3a048)                                                                                                                         
clk_get_rate(clk=43c358c0)                                                                                                                         
clk_get_parent_rate(clk=43c358c0)                                                                                                                  
clk_get_parent(clk=43c358c0)                                                                                                                       
clk_set_rate(clk=43c3a028, rate=25000000)                                                                                                          
clk_get_rate(clk=43c358c0)                                                                                                                         
clk_get_parent_rate(clk=43c358c0)                                                                                                                  
clk_get_parent(clk=43c358c0)                                                                                                                       
clk_get_parent(clk=43c358c0)                                                                                                                       
clk_get_rate(clk=43c35740)                                                                                                                         
clk_get_rate(clk=43c35740)                                                                                                                         
clk_get_parent(clk=43c35740)                                                                                                                       
clk_get_rate(clk=ffffffed)

我想知道在我花更多时间进行调试之前、TI 的人是否可以在这里提供指导:

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

    您好!

    MAIN_UART1由 TIFS 保留用于 UART 日志记录。 因此无法从 UART0切换到 UART1
    https://software-dl.ti.com/tisci/esd/latest/4_trace/trace.html#trace-uart-allocation

    但是、您可以使用任何其他 MAIN_UART 端口。 请告诉我、这对您是否可行?

    此致、
    Aparna

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

    感谢您发送编修。

    在构建中默认情况下是否禁用 TIFS 日志记录? 如果禁用了该端口、是否仍可使用该端口?

    仅供参考、我在不同的端口下尝试了相同的过程、例如在另一个 POST (UART0到 UART2)中、结果相同-针对 clk 抛出错误。 因此、手头的错误似乎与使用哪个端口无关。

    请告知、谢谢。

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

    您好!

    是的、看起来 UART0日志可以发送到 UART2端口。 我需要自己做实验来对此进行评论。 请允许我在3个工作日内回复此查询。

    此致、
    Aparna

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

    谢谢你,我期待着你的答复。

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

    尊敬的 Aparna:

    只是一个友好的跟进,看看你是否  取得了任何进展或获得了任何洞察这一点。 谢谢。

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

    尊敬的 Aparna:

    我看到您的回复、但它仅显示在我的电子邮件中、而不在这里。

    关于时钟更改位置、我使用了链接的论坛帖子作为参考、并根据我使用的实例(ID、寄存器偏移等)进行了修改 我在 TI SDK 文档和参考手册中都可以找到。

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

    尊敬的 Apartha:

    只是对此采取后续行动。 您是否能够找到此问题? 我还可以为您提供其他帮助吗?

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

    您好!

    这是几个星期以来,我看到了任何关于这一问题的答复。 TI 人员是否能够提供更新状态?

    谢谢

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

    尊敬的 Aparna:

    我想再次跟进该主题。 我知道事情可能会变得繁忙、但 我仍然希望得到您关于此 UART R5问题的输入。 您是否有机会进一步了解它? 如果 我可以提供任何其他信息来帮助、请告诉我。

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

    可以 TI 的人告知此情况吗? 近 一个月没有得到答复。

    谢谢

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

    大家好、TI 的某人可以就此事告知一下吗? 2个月内没有答复。

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

    尊敬的 Ken:

    很抱歉耽误你的时间。 我将接管此线程的支持、在我清理工作队列后、今天稍后会为您提供详细信息。

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

    尊敬的 Ken:

    以下 U-Boot 会将 U-Boot 控制台从 UART0更改为 UART1。 我使用 SDK10.0对其进行了测试。 如果它对您有用、请告诉我。

    diff --git a/arch/arm/dts/k3-am62x-sk-common.dtsi b/arch/arm/dts/k3-am62x-sk-common.dtsi
    index 59ee49616505..5e8276ced9ca 100644
    --- a/arch/arm/dts/k3-am62x-sk-common.dtsi
    +++ b/arch/arm/dts/k3-am62x-sk-common.dtsi
    @@ -12,7 +12,7 @@
     
     / {
            aliases {
    -               serial2 = &main_uart0;
    +               serial2 = &main_uart1;
                    mmc0 = &sdhci0;
                    mmc1 = &sdhci1;
                    mmc2 = &sdhci2;
    @@ -355,9 +355,10 @@
     &main_uart1 {
            /* Main UART1 is used by TIFS firmware */
            bootph-pre-ram;
    -       status = "reserved";
    +       status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&main_uart1_pins_default>;
    +       clock-frequency = <48000000>;
     };
     
     &main_i2c0 {
    diff --git a/arch/arm/mach-k3/r5/am62x/dev-data.c b/arch/arm/mach-k3/r5/am62x/dev-data.c
    index 59c95df2a887..808a07eb5533 100644
    --- a/arch/arm/mach-k3/r5/am62x/dev-data.c
    +++ b/arch/arm/mach-k3/r5/am62x/dev-data.c
    @@ -60,7 +60,7 @@ static struct ti_dev soc_dev_list[] = {
            PSC_DEV(75, &soc_lpsc_list[10]),
            PSC_DEV(36, &soc_lpsc_list[11]),
            PSC_DEV(102, &soc_lpsc_list[11]),
    -       PSC_DEV(146, &soc_lpsc_list[11]),
    +       PSC_DEV(152, &soc_lpsc_list[11]),
            PSC_DEV(13, &soc_lpsc_list[12]),
            PSC_DEV(166, &soc_lpsc_list[13]),
            PSC_DEV(135, &soc_lpsc_list[14]),

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

    您好、Bin、

    感谢您的回复! 我需要检查一下、给我几天的时间来验证、我将告诉您它是否可以解决问题。

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

    非常感谢你 Bin 这工作就像一个魅力! 我注意到缺少的一项是设备树 clock-frequency =<48000000>;

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

    尊敬的 Ken:

    很高兴听到它对您有用。 感谢您的更新。

    是的、我花了一段时间才确定需要"clock-frequency"的 devicetree"设置、因为我们没有提供所有与时钟相关的数据。