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/AM3351:DDR 自刷新问题

Guru**** 2616675 points

Other Parts Discussed in Thread: AM3351, TPS65217

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657261/linux-am3351-ddr-self-refresh-issues

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

工具/软件:Linux

您好、TI、

当我们将处理器置于低功耗模式并通过更改将 DDR 置于自动刷新模式时、我们有一个采用 TI 处理器 AM3351的定制板
EMIF 寄存器0x4C000038到这个值0x2A0、我们看到随机内核/存储器异常。 您能就此提出建议吗?

短日志:

1月16日11:44:59 Might-B6服务器[207]:[BLE_MCM]正在等待 BLE RX -内存
1月16日11:44:59 Might-B6服务器[207]:[BLE_GAT]移动数据发送:好的
1月16日11:44:59 Might-B6服务器[207]:[BLE_GAT]
1月16日11:45:14 Might-B6服务器[207]:[THR_MON] Mighty Heart Beat
1月16日11:45:44 Might-B6服务器[207]:[THR_MON] Mighty Heart Beat
1月16日11:45:48 Might-B6服务器[207]:[MTY_SYS]退出等待状态
1月16日11:45:48 Might-B6服务器[207]:[SON_DWL] Spotify Prefetch 等待超时
1月16日11:45:48 Might-B6 server[207]:[SON_DWL]更新播放列表:90 smash Hits:DB_playlist_offline_error
1月16日11:45:48 Might-B6内核:无法处理虚拟地址00000000处的内核 NULL 指针解除引用
1月16日11:45:48 Might-B6内核:PgD = cc7d8000
1月16日11:45:48 Might-B6内核:[000000000000]* PgD=8c5d1831、* Pte=00000000、* Ppte=00000000
1月16日11:45:48 Might-B6内核:内部错误:Oops:817 [#1]抢占 ARM
1月16日11:45:48 Might-B6内核:链接的模块:brcmfmac cfg80211 brcmutil
1月16日11:45:48 Might-B6内核:CPU:0 PID:247 Comm:服务器未被污染4.1.18-gbbe8cfc #1
1月16日11:45:48 Might-B6内核:硬件名称:通用 AM33XX (平展设备树)
1月16日11:45:48 Might-B6内核:任务:cdde0000 ti:cde52000 task.ti:cde52000
1月16日11:45:48 Might-B6内核:PC 位于__kstrtab_netdev_set_default_ethtool_ops+0x13/0x1f
1月16日11:45:48 Might-B6内核:LR 位于__kstrtab_netdev_set_default_ethtool_ops+0x13/0x1f
1月16日11:45:48 Might-B6内核: PC :[ ] LR:[ ] PSR:600f0013
SP:cde53e08 IP:cde53d90 FP:cde53ec4
1月16日11:45:48 Might-B6内核:R10:000d0d18 R9:00000001 R8:00000000
1月16日11:45:48 Might-B6内核:R7:00000000 R6:cde52000 R5:cde53e28 R4:cde52000
1月16日11:45:48 Might-B6内核:r3:00000000 r2:cde52000 r1:cdde0000 r0:fffffffffffc
1月16日11:45:48 Might-B6内核:标志:模式 SVC_32 ISA ARM 段用户上 FIQ 上的 nZCv IRQ
1月16日11:45:48 Might-B6内核:控制:10c5387d 表:8c7d8019 DAC:00000015
1月16日11:45:48 Might-B6内核:进程服务器(pid:247、栈限制= 0xcde52210)

完整日志:
log_lpm_crash.txt

谢谢、
anikete2e.ti.com/.../log_5F00_lpm_5F00_crash.txt

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

    您的 Linux 版本是什么? 您能否布置原理图的 DDR 部分?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Biser、

    以下是 Linux 版本的详细信息:

    4.1.18-gbbe8cfc #1挤占 Tue 12月5日17:22:08 IST 2017 armv7l GNU/Linux

    原理图的 DDR 部分作为参考。

    谢谢、

    Aniket

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    原理图似乎正常。 关于 Linux 版本、这是 Linux-RT 处理器 SDK 还是您从其他来源获取?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们通过以下 TI 链接获得了 Linux 源文件: software-dl.ti.com/.../index_FDS.html

    这是 TI 的 Linux 处理器 SDK、而不是 Linux-RT。

    我们构建了这个分支:Processor-SDK-Linux-02.00.02使用 Yocto 使用 Arago-tmp-extern-linaro-toolchain 进行构建。

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

    根据我的理解、首先将 AM335x 器件置于低功耗模式、然后将 DDR 置于自刷新模式。 是否可以使用这些命令提供控制台日志?

    请注意、在 Linux 4.1.x 中、您可以从用户空间中将 AM335x 器件置于低功耗模式、请参阅以下 wiki:

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

    当您将 AM335x 置于低功耗状态时、DDR 将自动设置为自刷新、无需手动执行此操作。 有关更多信息、请参阅以下指针:

    AM335x 数据表、表5-11。 AM335x 低功耗模式功耗汇总

    www.ti.com/.../sprac74a.pdf

    processors.wiki.ti.com/.../Processor_SDK_Linux_Kernel_Performance_Guide

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

    低功耗模式意味着不是睡眠/待机模式。

    为了实现电池优化、我们尝试以尽可能低的工作模式运行 AM3351以进行音频回放。
    为此,我们将执行以下步骤:

    1.将 CPU 降低至100MHz (使用省电调节器,并在 DTS 中添加100Mhz)
    2.将内核时钟降低到25MHz (使用 devmem2 0x44E00480 w 0x228)
    3.将 DDR3设置为 DDR3自动自刷新(使用 devmem2 0x4C000038 w 0x2A0)
    4.将 VDD_CORE 阶跃从1.15V 逐步降低到0.975V。

    仅在启用 DDR 自动自刷新时发生 Linux 崩溃。 因此,如果我们跳过步骤3,
    然后、对于其余步骤、不会发生崩溃。

    您能就此提出建议吗?

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

    Aniket、

    [引用 USER="Aniket Jesu">为了优化电池、我们尝试 以尽可能低的工作模式运行 AM3351以进行音频回放。 [/报价]

    是否确定在此音频回放用例中不使用频繁 DDR? DDR 自动自刷新的主要用途是长时间不使用 DDR。

    [引用 user="Aniket Jesu"]3. 将 DDR3设置为 DDR3自动自刷新(使用 devmem2 0x4C000038 w 0x2A0)
    4.将 VDD_CORE 阶跃从1.15伏降至0.975伏。[/引述]

    VDD_CORE 支持的最大电压为1.144V (OPP100)。

    您似乎正在从 OPP100 (VDD_CORE 为1.1V)切换到 OPP50 (0.975)、并且 OPP50不支持 DDR3。

    此致、
    帕维尔

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

    Pavel、

    是否确定在此音频回放用例中不使用频繁 DDR?
    DDR 自动自刷新的主要用途是长时间不使用 DDR。

    是的

    ----

    VDD_CORE 支持的最大电压为1.144V (OPP100)。

    您似乎正在从 OPP100 (VDD_CORE 为1.1V)切换到 OPP50 (0.975)、并且 OPP50不支持 DDR3。

    实际上、我们使用 PMIC (tps65217)芯片来满足不同的电压轨要求、因此我们将 VDDS_DDR 保持在1.35伏。
    您能否澄清 VDD_CORE 和 VDDS_DDR 与 OPP100和 OPP50有何关联?

    以及我之前的帖子中提到的低功耗模式技术、我们一直在10k +单位使用该技术、没有任何问题。
    在这些10k 设备中、我们发现上述问题仅在100个设备中出现。

    无论 OPP100还是 OPP50如何, 只有在我们将 DDR3设置为自动自刷新模式时,才会出现此问题,您能否对此进行澄清?

    我们使用的是 DDR3L、只是为了清零。


    谢谢、

    Aniket jesu

     

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

    Aniket、

    [引用 USER="Aniket Jesu">实际上、我们使用 PMIC (tps65217)芯片来满足不同的电压轨要求、因此我们将 VDDS_DDR 保持在1.35伏。
    您能否说明 VDD_CORE 和 VDDS_DDR 与 OPP100和 OPP50的共同关系?[/QUERP]

    在 AM335x 器件中、我们只有 VDD_CORE 和 VDD_MPU 域。 VDDS_DDR 用于 DDR3L IO 域。

    这是数据表 SPRS717J 中记录的 AM335x 要求。 请参阅以下章节:

    5.4运行性能点(opps)

    7.3 OPP50支持

    您将在这些部分中发现 DDR3/DDR3L 未在 OPP50模式下运行(电压低于0.988)

    [引用 user="Aniket Jesu">此外、我在前面的文章中提到的低功耗模式技术、我们一直在10k plus 器件中使用该技术、没有任何问题。
    在这些10k 个器件中、我们发现上述问题仅以100个器件为单位。

    根据我的理解、这些10K+电路板是完全相同的、而且很少有(大约100个)电路板报告此问题。

    这似乎是这几块电路板的硬件故障、因此您需要仔细检查这些电路板的硬件/ PCB 设计。

    [引用 user="Aniket Jesu"]无论 OPP100或 OPP50如何, 只有将 DDR3设置为自动自刷新模式时才会出现此问题,您能否对此进行澄清?

    我假设您已为所有电路板成功实现 DDR3的软件调平。 另请验证您的 DDR3是否正常工作、您可以使用 CCS EDMA 测试、请参阅下面的 wiki:

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的支持。 两个问题。


    (1)内核电压降低是否会对处理器的 DDR 接口造成一些内部损坏?
    (2)是否还有其他需要检查的东西(例如、在 LPM 模式期间内部时钟发生变化)?

    关于 DDR3的软件调平、这是在投入生产之前完成的。

    谢谢、此致、

    Paul

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

    Paul、

    [引用 user="Paul Chacko"](1)内核电压降低是否可能会对处理器的 DDR 接口造成一些内部损坏?[/引用]

    当内核电压低于0.988V (OPP50)时、DDR3L 将无法正常工作、但我认为 DDR 接口不会损坏。 数据表第5.1节"绝对最大额定值"中列出了可能损坏 AM335x 器件的电压值。 本节中指出、低于-0.5V 的内核电压可能会损坏 AM335x 器件。

    [引用 user="Paul Chacko"](2)是否要检查其他任何内容(例如、在 LPM 模式下内部时钟发生变化)?

    请查看以下 Wiki:

    此致、
    帕维尔

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

    (1)所以最后的答案是 DDR3L 不支持 OPP50模式。 对吧?

    (2)如果是、您能否指定 DDR3L 正常工作时可能的最低内核电压是多少?

    (3)内核电压如何影响 DDR3L 运行?

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

    Paul、

    [引用 user="Paul Chacko"](1)、因此最后答案是 DDR3L 不支持 OPP50模式。 正确?[/报价]

    是的、正确

    [引用 user="Paul Chacko"](2)如果是,您能否指定 DDR3L 正常运行时可能的最低内核电压是多少?[/引用]

    OPP100最小值、即1.056V

    [引用 user="Paul Chacko"](3)内核电压如何影响 DDR3L 运行?[/引用]

    DDR3器件的最低工作频率303MHZ 要求 VDD_CORE 为 OPP100。  当 VDD_CORE 的供电 电压范围为 OPP50定义的电压范围时、不能以303MHz 的频率运行 AM335x DDR 接口。

    对于 DDR3器件、JEDEC 规范仅降至303MHz。  如果您看一下 DDR3内存规格、他们说不保证在303MHz 以下运行。 我们无法在核心电压为0.95V 时支持303MHz、这就是为什么我们不列出具有 DDR3的 OPP50的原因。

    此致、
    帕维尔