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.

[参考译文] AM3359:CM3在 DeepSlep1转换时未接收 INTR2

Guru**** 2611705 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580743/am3359-cm3-not-receiving-intr2-on-deepsleep1-transition

器件型号:AM3359

尊敬的所有人:

我目前正在尝试通过裸机程序将 BeagleBone Black 置于 DS1状态、但我似乎缺少一些东西。 我在 cm3上运行固件、我可以从 A8与 M3进行通信并发送用于进入 DS1的命令、我可以看到正在通过 JTAG 在 cm3上接收到的命令。 但是、当我在 A8上执行 WFI 时、cm3不会接收 extint34中断、睡眠转换也不会完成。 我可以通过 cm3检查 PRM 和 CM 寄存器、我得到以下结果:

PRM_MPU:PM_MPU_PWRSTST:(0x44e00e04):0x000003f7 <- Cortex A8完全在线
CM_MPU:CM_MPU_CLKSTCTRL:(0x44e00600):0x00000002 <- SW_WKUP 编程(?)
CM_MPU:CM_MPU_MPU_CLKCTRL:(0x44e00604):0x00070000 <- MPU 编程为 MODULEMODE=禁用、MPU 待机和禁用
CM_WKUP:CM_DIV_M2_DPLL_MPU:(0x44e004a8):0x00000201
CM_WKUP:CM_IDLEST_DPLL_MPU:(0x44e00420):0x00000000 <- MPU DPLL 处于旁路或停止状态
 

对我来说、这看起来不错、我还应该寻找什么呢?

此致、

Matthias

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

    您可以在参考网站 processors.wiki.ti.com/.../AM335x_StarterWare_Power_management 上使用 Starterware 电源管理示例 请注意、Starterware 在其他论坛上受支持: e2e.ti.com/.../790
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您提供指向文档的指针。 我实际上能够解决这个问题(有一些帮助)、文档中有一个注释提示调试器连接阻止到 M3的中断。

    原因确实是 JTAG 调试器在 ICEPICK 路由器中配置了一个寄存器(0x60)来强制请求 MPU 时钟、从而防止 PRCM 门控时钟并将中断发送到 M3。 更改后、中断被正确发送、睡眠转换完成。 现在我有一个新问题、可能需要一些时间进行调试、M3在唤醒并尝试重新锁定 DPLL 时捕获到硬故障异常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Matthias Welwarsky"]
    现在我有一个新问题、可能需要一些时间进行调试、M3在唤醒并尝试重新锁定 DPLL 时捕获到硬故障异常。

    [/报价]

    我也能够解决这个问题、原因似乎是 cm3固件中的时序相关:唤醒 CLKDM_WKUP 后、您需要等待控制模块再次联机、然后再为 DPLL 上电。 这是 CM3 DS1唤醒路径中缺少的一个步骤。 我想知道控制模块中是否有阻止其关闭的配置? 但是、由于我能够修改 cm3固件、这并不是真正的问题。

    最后、恢复时 A8内核的行为为奇数:当 MPU 时钟域被唤醒并且 MPU hwmod 被重新启用时、A8将不会开始执行代码、并且 DBGDSCR 寄存器指示内核被一个"外部调试请求"暂停。 实际上、DBGDRCR 设置了 HCRR 位、这会在热复位时使内核停止、但清零该位将不允许其重新启动。 我发现最终恢复 MPU 的唯一操作是清除 Icepick 内核控制寄存器(0x60)中的位13。 这会使 MPU 运行、但也会清除 DBGEN 信号、因此无法再调试内核。 再次将此位13设置为"1"会暂停 MPU、但无法对其进行调试、这意味着仍会启用外部调试请求。 我现在不知道如何解决这个状态、这是很不幸的、因为现在我无法再使用 JTAG 来调试唤醒序列的其余部分。


    此致、

    Matthias