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.

[参考译文] TCI6636K2H:MessageQ_open 在 ARM-DSP 通信期间进入无限循环

Guru**** 2553450 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/567042/tci6636k2h-messageq_open-going-into-infinite-loop-during-arm-dsp-communication

器件型号:TCI6636K2H
Thread 中讨论的其他器件:SYSBIOS

BIOS - BIOS_6_46_01_38

IPC - IPC_3_44_00_00

PDK - pdk_k2hk _4_0_4

似乎 ARM 的 DSP 之间没有发生中断。 尝试使用 KICK 寄存器仍然播放问题未解决。  

在 ARM 端、我在 AMP 模式下运行 TI RTOS、而 DSP 正在运行 SYSBIOS。

我使用 ex02作为 MessageQ 的参考。

请提供一些指针、以便我可以快速解决此问题。

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

    我已通知设计团队。 他们的反馈将在此处发布。

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

    你好、Ranjit

    我们需要进行一些调试以找出问题所在。

    第一个事实是 MessageQ 是 Notify 的顶层、因此中断实际上来自 Notify。

    尝试后退并从 DSP 开始、并了解 ARM 发送消息时为什么它不会获得中断。

    要了解中断的结构、请查看并阅读 e2e 上的 https://e2e.ti.com/support/embedded/tirtos/f/355/t/271521  

    它讨论的是6678、但来自 K2H 的 DSP 内核中断是类似的。  查看您是否了解从 IPC 寄存器生成中断到 DSP ISR 的事件流、但会返回-

    阅读上面的布置、 找到 K2H 器件的 IPC 本地、按照内核寄存器查看是否已记录中断。 如果是、则问题出在 DSP 内核内部。 如果没有、我们必须后退。

    明白了吗?  返回我们、了解您的观察结果

    已运行

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 RAN、
    我的方向似乎不对、问题在其他地方。 我使 SharedRegion 的 ownerProId 在 DSP core0配置中具有1、在 ARM SMP 配置中具有0。 由于发生了此连接,但随后陷入 MessageQ_Open()中。

    但是、当我纠正此问题并使 DSP core0成为两个配置中 SharedRegion 的所有者时、我会看到连接本身失败。

    ARM 内核卡在 syncCore 中。

    DSP 卡在 IPC_procSyncStart()中。



    当我在两个配置文件中将 ARM 设置为 SharedRegion 的所有者时

    ARM 正卡在 procSyncFinish()中。 DSP 进入了一些堆内部错误。 请参见下面的

    "TI.sdo.ipc.堆.HeapMemMP:第404行:e_internal:An internal error occurred (发生了内部错误)"


    因此看起来像内存问题(在 SharedRegion 中)、而不是中断问题。 将进一步调试并向您报告。

    共享存储器配置如下所示

    SharedRegion.setEntryMeta(0、
    {base:0x90000000、
    Len:0x100000、
    ownerProId:0、
    IsValid:true、
    名称:"sharemm"、
    });
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ran、

    我将 sharedRegion.translate 更改为 false、然后它开始工作。 这是基地址0x90000000 (DDR3A 中的地址)时的地址。

    但是、如果我创建这个 MSMC RAM 地址(即基址:0x0c00 0000)、则不会再次进行连接。 请告诉我使用时需要进行哪些更改

    MSMC RAM 中的 sharedRegion。

    此致

    Ranjit  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前、我还转移到 ARM 端的 SMP SYSBIOS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Ranjit
    很抱歉耽误您的回答。 是否有任何进展或仍有问题?

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

    您好、Ran、

    如果我们使用0x9000 0000作为 sharedRegion 基础、一切都正常、我们将继续这样做。

    将基址更改为0x0c00 0000不起作用、并且 ARM 提供了异常。

    ThreadType_Main 中发生异常。
    主句柄:0x0。
    主堆栈基地址:0x8004edd0。
    主堆栈大小:0x1000。
    R0 = 0x0c000000 R8 = 0x00000004
    R1 = 0x00000000 R9 = 0x00000000
    R2 = 0x00000500 R10 = 0x00000000
    R3 = 0x0c000000 R11 = 0x8004fd3c
    R4 = 0x00000000 R12 = 0x0c000000
    R5 = 0x000004f0 SP (R13)= 0x8002d5cc
    R6 = 0x00000001 LR (R14)= 0x800410ec
    R7 = 0x8003b378 PC (R15)= 0x8002d5cc
    PSR = 0x00000000
    DFSR = 0x00000a06 IFSR = 0x00000000
    DFAR = 0x0c000000 IFAR = 0x00000000
    TI.SYSBIOS.family.ARM.exc.exception:第205行:E_dataAbort:PC = 0x8002d5cc、LR = 0x800410ec。
    xdc.runtime.Error.raise:终止执行



    请提供建议。
    此致
    Ranjit