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.

[参考译文] RTOS/TMS320C6678:MessageQ 和通知模块是否使用 IPCGRx 寄存器生成中断?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657069/rtos-tms320c6678-does-the-messageq-and-notify-module-use-ipcgrx-registers-to-generate-interrupts

器件型号:TMS320C6678

工具/软件:TI-RTOS

您好!

我阅读了 IPC 培训文档、即 http://processors.wiki.ti.com/images/6/69/IPC_Training_2_21.pdf

第42页显示了通知模块使用"IPC"生成到其他 DSP 内核的中断、"IPC"是指 IPCGRx 寄存器吗?

如果是、如何知道 SYS/BIOS 已使用哪些 SRCRx 位?

我的开发环境是 C6678 + MCSDK。

谢谢、

Snaku

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

    您好、Snaku、

    以下主题中回答了类似的问题。

    如果您仍有任何疑问、请查看并告知我们。

    最棒的

    Sahin

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

    您好、Sahin、

    感谢您的回复、我阅读了帖子、我很感兴趣的是"位0设置为生成中断"的语句。  位4-7被置位来指定中断的产生源。 惯例是位4 (SRC0)用于内核0、位5 (SRC1)用于内核1等。 "、在哪里可以看到 SYS/BIOS 源代码或文档中的约定?

    我发现 Notify 模块可以在.cfg 文件中配置保留事件、例如 Notife.reservedEvents = 8;它是否限制了 SYS/BIOS 中的 IPCGR 字段使用位?

    Snaku

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

    请参阅芯片中断控制器用户指南的第2.4.1节"处理器间中断寄存器":
    www.ti.com/.../sprugw4a.pdf

    我相信、它只是为其他模块保留它们、因此如果您尝试使用它们、它将会提出断言、但我需要向开发团队询问这一点、并返回给您。

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

    我从开发团队收到反馈、只是想确认您对储备事件和 IPCGR 位的初步了解是否正确。

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

    您好、Sahin、

    感谢您的支持。

    但我需要知道 SYS/BIOS 使用哪些 IPCGR 字段、哪些 IPCGR 字段仍可供我的应用程序免费使用? 我可以使用'Notife.reservedEvents '来实现此目的吗?

    此致、

    Snaku

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

    IPC 为您处理寄存器和中断。 您是否计划通过直接写入 IPCGR 寄存器来生成自己的中断?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sahin、

    是的、我希望使用以下函数中的 IPCGRx 字段进行同步。

    我的应用程序在 SYS/BIOS 上运行、因此我想确保此函数 与 MessageQ 模块没有冲突。

    /**

    *\brief 所有内核都运行此函数,让 core0等待其他内核
    *
    void wait_Other_Cores()

      u32* msgFlag =(U32*) 0x02620240;         // IPCGR0寄存器地址
      u32* msgFlagAK = msgFlag + 0x10;         // IPCAR0寄存器地址
      u32 releaseConter;
      I32 I;

      msgFlag[DNUM]= 0x10;               //设置 SRC0位进行指示

      while (msgFlag[DNUM])
      {
        if (!DNUM)
        {
          releaseConter = 0;
          for (i=0;i
            releaseConter +=(msgFlagAK[i]& 0x10);
          }

          if (releaseConter =(0x10 * core_numbers)){
            for (i=0;i
              msgFlagak[i]= 0x10;       //内核0清除所有 IPCARx SRC0位
            }
          }
        }
      }

    谢谢、

    Snaku

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

    您好、Snaku、

    我关于 Notify.reservedEvents 与 IPCGRx 寄存器相关的评论不正确。 中断驱动程序在源 DSP 侧使用 DNUM 来确定使用的是哪个 IPCGRx 位。

    IPCGRx 位数= 4 + DNUM

    例如、如果有4个 DSP、则使用第4-7位。 此外、位31用于来自主机的中断。

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

    感谢您的支持。

    Snaku