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.

[参考译文] AM2434:如何将 DDR 配置为自刷新模式

Guru**** 2394295 points
Other Parts Discussed in Thread: AM2434, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1438456/am2434-how-to-configure-ddr-to-self-refresh-mode

器件型号:AM2434
主题中讨论的其他器件: SysConfig

工具与软件:

您好、专家。

   我们希望使用 DDR 保存复位期间保留的一些变量。 我们测试过它在默认情况下可以正常工作、但存在两个问题。

     1) 1) DDR 的前16个字节将成为固定数据(00 FF 00 FF 00 FF 00 FF 00 FF)

     2) 2)如果 DDR 未在复位后立即初始化、但在几秒钟后初始化、则 DDR 中的数据将部分异常。

  因此、我们要使用 TRM 支持的 DDR 自刷新模式。 但我们在 TRM 中没有看到任何用于设置 SRE/SRX 命令的寄存器、也没有在 SDK 中看到相关函数。  您能否帮助了解如何通过 AM243X 进入和退出自刷新? 如何  实现软件、以及如何实现硬件?

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

    您在使用哪种 SDK?  我认为 AM24x SDK 目前不支持 DDR 跨复位自刷新。  无论何时执行热复位或冷复位、器件都会经历正常的启动流程、并且 DDR 将重新初始化、因此在此期间、您可能会丢失数据。  您能详细解释一下应用吗?  重置期间您要维护哪些类型的数据。  您可以将该数据放入内部存储器吗?

    此致、

    James

      

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

    尊敬的 James:

      我们使用 SDK9和 SDK10。  

      在复位期间需要保留超过10M 字节、因此 MSRAM 的使用容量是不够的。 此外、我们看到其他客户之前向您提出过这一问题、其回应是 MSRAM 中的变量无法在复位期间保留。 使用闪存或 EEPROM 的时间太长、所以我们希望使用 DDR 自刷新功能。

     我们测试过 AM243X 在复位期间确实会复位 DDR 芯片。 、使用自刷新功能、我们可能需要断开 AM2434和 DDR 芯片之间的复位引脚、不确定这是否会导致任何其他问题。

     我们也希望您能提供自刷新配置的详细过程、并使用更好的代码。 目前、我们只找到了一些可能与之相关的宏、尝试在复位前使这些位生效、 但未起作用。

      

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

    尊敬的 James:

    客户需要在复位期间在 DDR 上保留更大的日志数据(由 MCU SDK API SOC_generateSwWarmResetMainDomain ()或看门狗超时复位)、程序未在 DDR 上运行。 因此、希望不要复位 DDR 并使 DDR 保持自刷新模式、以实现目标。

    #1。 复位期间 DDR0_RESET 引脚的状态是什么? 本文未具体介绍该问题、我假设它在 SOC 复位期间不是被驱动、那么它将取决于外部上拉或下拉?

    #2。 从 TRM 对主要域复位影响的说明中、不知道 DDR 模块寄存器是否将由热复位来复位/清除。 DDR 模块是否可以位于复位隔离模块中?

    #3. 您对此用例有何建议吗?

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

    尊敬的 James、Tony:

    根据 Tony 和 Liang 的问题、您是否有办法在热重启之前禁用 DDR 复位行为? DDR 复位固件行为来自您的硬编码引导代码? 请确认???

    是否有办法禁用它? 如果是、您能否提供禁用它的详细程序?

    通常、对于热重启/软件重启/看门狗重启、我不想复位 DDR、因此对于 AM243X MCU、请告知我们。

    谢谢

    Kelven

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

    您请求的低功耗模式 Kelven 在 AM243x SDK 中不可用。  AM62x 提供深度睡眠(包括自刷新支持)等低功耗模式。   

    此致、

    James

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

    尊敬的 James:

    感谢您的快速响应。

    如果我们使用 AM62x 作为参考、您认为我们是否可以在 AM243X SDK 上实现深度睡眠模式?

    谢谢

    Kelven

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

    尊敬的 James:

    如果是、您能否提供 AM243x 深度睡眠模式的设计参考?

    谢谢

    Kelven

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

    尊敬的 James:

    从 Tony 的以下问题中、您能否提供答案?

    客户需要在复位期间在 DDR 上保留更大的日志数据(由 MCU SDK API SOC_generateSwWarmResetMainDomain ()或看门狗超时复位)、程序未在 DDR 上运行。 因此、希望不要复位 DDR 并使 DDR 保持自刷新模式、以实现目标。

    #1。 复位期间 DDR0_RESET 引脚的状态是什么? 本文未具体介绍该问题、我假设它在 SOC 复位期间不是被驱动、那么它将取决于外部上拉或下拉?

    #2。 从 TRM 对主要域复位影响的说明中、不知道 DDR 模块寄存器是否将由热复位来复位/清除。 DDR 模块是否可以位于复位隔离模块中?

    #3. 您对此用例有何建议吗?

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

    1.在热复位期间、DDR0_RESETn 信号为高阻态。   

    2. AM243x 上的 DDR 模块没有隔离特性。

    如前所述、AM243x 上不提供您请求的低功耗模式。  我们没有这些特性的任何设计参考、因为它们并未针对 AM243x 实现。   

    有什么方法可以避免应用中的热复位。  为什么必须复位处理器?  如果您需要执行一些低功耗模式、我建议您查看 AM62x 或其他支持更复杂低功耗模式的 Sitara 处理器。  是否有使用 AM243x 的要求?

    此致、

    James

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

    尊敬的 James:

    感谢您的答复。

    AM243x EVM 板的 DDR0_RESETn 引脚状态存在以下大问题:

    #1。 我们捕获了 AM243x 引导期间的 DDR0_RESETn 引脚行为、如上图所示、第1阶段是 MCU 初始化和第1个引导周期、DDR0_RESETn 引脚上拉至高电平、如您所述、DDR0_RESETn 引脚在热复位期间应为 Hi-Z、DDR0_RESETn 引脚状态应为高电平、但实际上、MCU 引脚状态为0.24V 电平、如图所示 这不受我们的固件控制、您能否解释一下为什么在第1阶段 DDR0_RESETn 引脚状态为0.24V?

    谢谢

    Kelven

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

    我对拍摄示波器屏幕感到有点困惑。  如果 PHASE1是在引导加载程序运行时的初始化期间、则在执行 DDR 初始化以及 RESETn 信号驱动为低电平时、会有一段时间。  RESETn 信号不应有外部上拉电阻、而应在电路板上拉至低电平。  0.24v 可能是驱动低电平与外部上拉电阻交战的结果。

    此致、

    James

      

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

    尊敬的 James:

        第1阶段在引导加载程序(sbl_ospi)运行之前开始、在引导加载程序运行 Bootloader_runSelfCpu ()之后结束、复位 DDR_RESET 引脚上有一个上拉电阻、因此我们说过"第1阶段是 MCU 行为、不受我们固件控制"。 运行 Bootloader_runSelfCpu()后、阶段2开始。

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

    我建议单步执行代码序列、以确定与 DDR_RESETn 的每个边沿相关的软件事件。  检查 DDR PLL 和 PSC 的状态。   

    此致、

    James

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

    尊敬的 James:

      我来解释一下对应于上述 DDR 复位波形测试的代码策略。

      为了进行测试、我们在 sbl_ospi SysConfig 中删除了 DDR、并将其添加到应用程序 SysConfig 中、因此您可以看到相位1更长、相位2更短。 此外、我们可以通过以下方法确认 phase1不是我们的固件需要的行为:

       1) 1)在 sbl_ospi 开始时添加延迟、相位1将更长。
          

       2) Debug sbl_ospi、DDR RESET 引脚电平在第1阶段下保持、直到调用 Bootloader_runSelfCpu ()来加载应用。

       3) 3)删除应用程序 SysConfig DDR、DDR 复位引脚将保持在第1阶段。

      对于阶段2、我们发现它由 DDR_START 触发。  

        

      

    所以、我们认为 Phase1是您的芯片策略或错误、不能在我们这边修改、而 phase2 alse 还不知道是否有任何寄存器可以被修改为掩码。

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

    所发生的情况与在 Phase1期间出现内部下拉电阻时相同、然后在第2阶段开始时、PHY 进行接管、将 RESET 驱动为低电平(作为 INIT 开始时的一部分)、然后将其驱动为高电平以用于正常运行。  对于冷复位和热复位都能看到这种行为吗?

    此致、

    James

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

    是的、我们检查了代码复位和热复位、行为相同。

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

    好的、谢谢。  因此、如果没有隔离特性、您将无法在器件复位过程中控制 RESET 信号。   

    此致、

    James

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

    感谢您的帮助。 接下来、我们将尝试找到 硬件的解决方案。 验证后、如果有任何问题、我们将在此处进行更新。 如果没有、我们将结束该主题。