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.

[参考译文] TMS320C6748:McBSP0挂起恢复

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668122/tms320c6748-mcbsp0-hang-resume

器件型号:TMS320C6748

在客户系统中、有时 McBSP0发送器挂起:无法发送数据、尽管 XRDY 已置位、但将数据写入 DXR、DX 数据行仍保持为0。 但器件的其他函数看起来仍然正常、例如 UART 仍然输出数据。

因此、希望将 McBSP0复位以恢复到默认状态、从而再次初始化它。 但从 PSC 禁用后系统将挂起。 为了便于调试、我们在 GEL 文件中进行设置。

在挂起之前、使用相同的 GEL 文件、我们可以随时禁用/启用 McBSP0、而不会出现任何问题。

我们

使用 OMAPL1x_debug.gel 在挂起前和挂起后读取器件状态、ROM 状态代码处的差异、挂起前为0xCF、挂起后为0xFF。 我连接了调试 GEL 输出。

它能告诉我们从该代码更改了什么状态吗?

为什么无法从 PSC 禁用 McBSP0? 状态是什么? McBSP 进入此状态的可能原因是什么?e2e.ti.com/.../Gel_5F00_Debug.zip

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

    我们将对此进行研究。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Yordan、我们期待收到您的反馈。 这是一个非常重要的客户项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tony、

    请再次确认他们正在执行表26.2.15所列的整个序列。 McBSP 逻辑(和 EDMA)上没有未决、飞行中、传入事务是很重要的,如果状态机的任何部分处于活动状态,则模块将不会应答时钟停止请求,这可能导致挂起状态。

    您指出"在挂起之前、使用相同的 GEL 文件、我们可以随时禁用/启用 McBSP0、而不会出现任何问题。" 这意味着什么。 这是否意味着只有在某些情况下才会发生挂起、但在其他情况下、可以使用 LPSC 正确启用和禁用模块? 您能否确保在运行 GEL 函数之前关闭存储器浏览器和寄存器视图。 如果仿真器在模块进行此复位时尝试读取存储器/寄存器、则表明我们看到了此类错误。

    如果您正在启用和禁用 McBSP、这与 ROM 状态代码有什么关系。 ROM 状态是一个仅在 BootROM 已完成执行时有效的值、因为它是 DSP 内部存储器中的一个位置、在执行时 ROM 使用它来存储状态。 加载应用程序后、应用程序可以将该区域重新用于其他目的、因此我不确定该值是否反映出对 bootROM 有效的任何内容。

    此致、
    Rahul

    PS:也可查看 Mukul 和 Kawada-San 之间的讨论情况。
    e2e.ti.com/.../1726371
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Rahul Prabhu"]您表示"在挂起之前、使用相同的 GEL 文件、我们可以随时禁用/启用 McBSP0、而不会出现任何问题。" 这意味着什么。 这是否意味着只有在某些情况下才会发生挂起、但在其他情况下、可以使用 LPSC 正确启用和禁用模块? 您能否确保在运行 GEL 函数之前关闭存储器浏览器和寄存器视图。 如果仿真器在模块进行此复位时尝试读取存储器/寄存器、则表明我们看到了此类错误。 [/报价]

    我的意思是、在 McBSP 被卡住之前、我们可以随意启用/禁用 PSC。 无论是否关闭内存浏览器并注册。  

    [引用 USER="Rahul Prabhu">如果您启用和禁用 McBSP,这与 ROM 状态代码有什么关系。 ROM 状态是一个仅在 BootROM 已完成执行时有效的值、因为它是 DSP 内部存储器中的一个位置、在执行时 ROM 使用它来存储状态。 加载应用程序后、应用程序可以将该区域重新用于其他目的、因此我不确定该值是否反映出对 bootROM 有效的任何内容。

    只需使用调试 GEL 来检查器件状态、仅发现此差异、不打算读取 ROM 状态。

    Kawada-San 帖子没有结论、不确定他的问题是否得到解决。 无论如何、我们将按照 26.2.15再次尝试、并将让您知道结果。

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

    Tony

    您还在继续关注此主题、对了、Kawada-San 主题未显示任何结论。  

    >>我的意思是,在 McBSP 被卡住之前,我们可以任意启用/禁用 PSC。 无论是否关闭内存浏览器并注册。  

    您能进一步澄清这一陈述吗? 如果 McBSP 被卡住,PSC 是否无法始终从该状态复位或恢复 McBSP? 如果是、这是预期结果  

    也许仍然值得一看的是、为什么 McBSP 首先处于不良状态。

    如果 McBSP 状态机挂起、除非您使用 MDCTL 寄存器(位31)中的 FORCE 位、否则我不希望 PSC 正常允许时钟禁用或本地复位等。  

    你也试过吗?

    此致

    Mukul  

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

    Mukul、

    [引用 user="Mukul Bhatnagar">如果 McBSP 被卡住,PSC 无法始终从该状态复位或恢复 McBSP? 如果是这样、则应进行 

    是的、当 McBSP 被卡住时、无法始终复位或恢复 McBSP。

    [引用用户="Mukul Bhatnagar"]从一开始就可能仍然值得了解为什么 McBSP 处于不良状态。

    不确定进入停滞状态的原因、由于无法通过 McBSP0发送数据、XRDY 始终保持置位、将数据写入 DXR、数据线路始终保持0、FSX 和 CLKX 仍处于活动状态(它是主控模式)。

    由于不确定原因、客户尝试了许多方法来重现此现象、最终在 PRU 和 DSP 同时访问 McBSP 时发现、它可能会触发 McBSP 卡住。 但是客户检查了软件、代码中没有这样的操作。

    今天、客户尝试强制禁用/启用 McBSP0、仍然无法恢复 McBSP0。 强制禁用后、McBSP 寄存器值变为0、但再次从 PSC 启用 McBSP0、McBSP0寄存器恢复到之前的值、因此 McBSP0实际上不会复位。

    是否有在强制后复位 McBSP0的进一步程序?

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

    你(们)好,Tony

    今天、客户尝试强制禁用/启用 McBSP0、仍然无法恢复 McBSP0。 强制禁用后、McBSP 寄存器值变为0、但再次从 PSC 启用 McBSP0、McBSP0寄存器恢复到之前的值、因此 McBSP0实际上不会复位。

    您能否分享他们尝试过的顺序?

    如果他们尝试禁用状态(MDCTLn.NEXT = 2h)可能不够,他们是否可以尝试 syncdreset 或 swrstdisable,如果不起作用,则尝试 LRST (MDCTL 位8)  

    当他们尝试通过 PSC 复位 McBSP 时、只需启用强制位、当他们重新启用时钟时、不需要对该位进行编程(NEXT =启用)

    我假设 RRDY 没有问题? 最近在 C5517 McBSP Hang 上发布了一篇文章(两个处理器的 McBSP 沿袭相同)

    e2e.ti.com/.../2445936

    此致

    Mukul  

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

    在写入 DXR 寄存器之前、您能否确认客户代码始终轮询 XRDY 位是否被置位? 轮询 XRDY 或等待中断/DMA 事件。

    当 DX 数据线将所有 F 与全0写入 DXR 寄存器时、它们是否有差异? 还是始终保持低电平(0)?

    McBSP 寄存器中是否设置了任何其他错误标志? 如 XSYNCERR 或 XEMPTY?
    自由和软仿真模式位的状态是什么?

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

    Mukul、

    [引用 USER="Mukul Bhatnagar"]如果他们尝试禁用状态(MDCTLn.NEXT = 2h),但该状态可能不够,他们是否可以尝试 syncsRESET 或 swrstdisable,如果不起作用,则尝试 LRST (MDCTL 位8) [/QUERPLET]

    强制+禁用不起作用。  

    FORCE+SwRstDisable 工作。

    谢谢你。 此问题已解决。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    标记
    感谢您在螺纹上听到蜂鸣声。

    Tony
    有关 swrstdisable 工作原理的信息,请记住 disable 只是启用/禁用时钟,syncsreset“复位”模块,swrstdisable 复位和禁用模块。 在大多数情况下、我们不希望客户使用 syncreset 或 swrstdisable、但这将使他们能够"本地"重置外设。


    如果我们想重新参与尝试了解挂起情况,请打开一个新的主题,并帮助澄清 Mark 在这里提出的问题。

    TI 建议确定挂起的来源、Force 位是执行局部复位的蛮力方法、文档鼓励用户不要依赖它、 但是、如果这足以满足您的客户现在想要实现的目标、我会将这一判断留给他们。

    此致
    Mukul