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.

[参考译文] Linux/AM3352:U-Boot 中的 AM335x RTC Kick 寄存器写入问题

Guru**** 2581345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630411/linux-am3352-am335x-rtc-kick-register-write-issue-in-u-boot

器件型号:AM3352

工具/软件:Linux

您好!

我们有一个新的定制板、但无法启动(调试控制台上的空白屏幕)。 使用 JTAG 进行详细检查后、我们发现 CPU 将挂起  

在 中的 rtc32k_unlock ()函数(下图)中 /\arch\arm\cpu\armv7\am33xx\board.c.

RTC_KICK0R_WE 和 RTC_KICK1R_WE 的值为 0x83E7 0B13和0x95A4F1E0 (与 TRM 20.3.5.23中描述的值匹配、

因为我们不修改原始 u-boot 代码)

 

如果删除 调用 rtc32k_unlock()的 rtc32k_enable(),u-boot 可以继续执行并在调试控制台上打印字符。

但我们不想删除 RTC、因为 u-boot 使用许多与时间相关的函数。   

CPU 为 AM3352BZCZA100、处理器 SDK 为2.00.02.11。

任何建议均可获得采纳。 谢谢。

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

    附加 RTC 原理图。

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

    我会向您介绍并返回。

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

    我怀疑您的 RTCSS 时钟源有问题。 能否在 rtc32k_unlock()函数调用之前检查以下两个寄存器中的值?

    CM_RTC_RTC_CLKCTRL
    CM_RTC_CLKSTCTRL

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

    你好,Pavel

    很抱歉迟到了。 寄存器值如下图所示。

    谢谢。

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

    Robert、

    在调用 rtc32k_unlock ()之前,是否可以尝试读取 rtc32k_enable()函数内的 RTC_CTRL_REG、RTC_OSC_REG、RTC_STATUS_REG 和 KICK 回声?

    #IF 定义(CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC)
    静态空 rtc32k_enable (空)

    struct DaVinci_RTC * RTC =(struct DaVinci_RTC *) RTC_BASE;



    printf ("RTC_CTRL_REG =%x/n"、readl (&rtc->ctrl));
    printf ("RTC_STATUS_REG =%x/n"、readl (&RTC->status));
    printf ("RTC_OSC_REG =%x/n"、readl (&rtc->osc));
    printf ("KICK0R =%x/n"、readl (&rtc->kick0r));
    printf ("KICK1R =%x/n"、readl (&rtc->kick1r));

    rtc32k_unlock (RTC);

    /*通过设置位3和6启用 RTC 32K OSC。 *
    writel(1 <<3)|(1 <<6),&RTC->osc);

    #endif


    您可以进行的另一项检查是 RTC_XTALOUT/A4和 RTC_XTALM/A6引脚上的信号电平。 您可以使用示波器测量这些值、并将电平与 AM335x EVM 和/或 Starterkit 进行比较。

    另请查看以下 wiki 页面:

    processors.wiki.ti.com/.../AM335x_Schematic_Checklist

    此致、
    帕维尔

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

    您好、Pavel、

    检查 RTC 原理图后、 RTC_PWRONRSTn 引脚未正确连接。  

    连接此引脚后、问题就会得到解决。

    感谢你的帮助。