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.
大家好、我有一个多核应用、需要访问器件生成的事件以在内核1上生成适当的中断。 位于(0x0180 0000)的内部生成的事件在内核1上未实现。 如何将事件路由到特定内核?
我的应用利用 EDMA 和 TSIP 处理以及生成适当中断所需的相关事件。 在 Core 0上运行事件存在。 在 Core 1上运行事件仍会报告给 Core 0。
当 TSIP 初始化并从内核1运行时、内核0上报告内部生成的 TSIP 事件(0x0180 0000)。 内部生成的事件到特定内核的映射在何处完成?
TSIP 事件是内部生成的、而不是芯片级的、并指定为 TSIP0_RFSINT[n](5)、其中注5 = CorePac [n]将接收 TSIPx_xxx[n]。 不确定如何解释?
每个内核在0x01800 0000处都有自己的地址空间。 这些内部生成的事件用于路由中断。 由于事件在内核0上报告、内核1不会看到事件、并且无法生成中断。
谢谢、
Steve
您好、Steve、
在 CCS 中、可以通过在第二个内核上加载符号来"对内核进行分组"并同步第二个内核。
让我检查内核分组和内核同步。 我将对我的 EVM 进行实验并给出我的响应。
谢谢、
Rajarajan U
您好、Rajarajan U、
我不确定 CCS 设置如何确定处理哪些内核事件?
该文件指出:
您能详细说明一下这意味着什么吗?
Steve
您好、Steve、
我对延迟回复表示歉意。
[~ userid="323260" url="/support/processors-group/processors/f/processors-forum/1104453/tmdsevm6678-core-1-events are sense-or-lect-or-lem-0-how-to-route-events-to-specific-cores/4094207#4094207"]我不确定 CCS 设置如何确定处理哪些内核事件?
[/报价]有关此内容、请参阅此链接、
此示例说明了如何在唤醒内核时使用引导魔法地址。 提供了视频示例和代码参考。 尽管这不是 TSIP 示例、但我们可以使用此代码作为参考来修改 TSIP 代码。
请发表您的反馈和疑问。
谢谢、
Rajarajan U
您好、Rajarajan U、
我将介绍引导魔术示例代码和视频、实现方法是在多个内核上唤醒并执行代码。 我看不到它与无法在0以外的内核上查看全局事件寄存器的关系。 引导魔术寄存器是否记录在包含此信息的某个位置?
目前、我的应用在6个内核上运行。 所有6个内核都在运行并通过 IPC 进行通信。 需要在整个系统中分配负载。 分布式功能包括网络堆栈、TSIP、EDMA 等。 目标是在不同的内核上运行 TSIP 和 EDMA、然后在网络接口上运行。 在0以外的内核上执行代码时、包含全局事件的0x01800000处的全局地址空间不活动。
是否有特定的引导魔法或其他命令可用于从在特定内核上运行的代码激活此区域?
Steve
您好、Rajarajan U、
我将介绍引导魔术示例代码和视频、实现方法是在多个内核上唤醒并执行代码。 我看不到它与无法在0以外的内核上查看全局事件寄存器的关系。 引导魔术寄存器是否记录在包含此信息的某个位置?
目前、我的应用在6个内核上运行。 所有6个内核都在运行并通过 IPC 进行通信。 需要在整个系统中分配负载。 分布式功能包括网络堆栈、TSIP、EDMA 等。 目标是在不同的内核上运行 TSIP 和 EDMA、然后在网络接口上运行。 在0以外的内核上执行代码时、包含全局事件的0x01800000处的全局地址空间不活动。
是否有特定的引导魔法或其他命令可用于从在特定内核上运行的代码激活此区域?
Steve
您好、Steve、
我了解您的查询。 让我运行文章中提到的示例项目以及 IPC 示例。 我将分析它对您的场景有何帮助。
谢谢、
Rajarajan U
您好、Rajarajan U、
我添加了 IPC 示例代码以启动内核1、但它无效。
附加的存储器视图代表一个2核配置。 两个内核正在运行并彼此通信。 所有 TSIP 配置都在内核2上完成。 下面的第一个图像显示了内核0全局事件寄存器(0x0180 0000)。 TSIP 事件存在。
下一个图像是内核1全局事件寄存器(0x0180 0000)的存储器位置。 TSIP 事件不存在。 有一个来自 A 侧的 EFI 中断事件不在内核0上。 该文档似乎表明所有 TSIP 事件都将在所有内核上实现。
将这些事件从内核0映射到内核1的过程是什么?
出发地:TMS320C6678 SPRS691E
TSIP0_RFSINT[n](5)
5 CorePac n 将接收 TSIPx_xxx[n]
您能否澄清 TSIPx_xxx[n]?
不同内核上的全局事件寄存器不同。
将事件路由到特定内核的机制是什么?
Steve
Steve、
我不是 TSIP 领域的专家、只是想通知您、通过 IPCGR 寄存器、我们可以从第一个内核向第二个内核发送信号。
/* IPC 中断其他内核*/
DEVICE_REG32_W (IPCGR (CORE)、1);
此致
Shankari G
Sankari G、您好!
TSIP 似乎工作正常。 问题在于全局事件寄存器以及如何在0以外的内核上报告 TSIP 和任何其他事件。 中断架构从6472更改为6678。 在6472上、每个单独的内核可通过 CIC 映射中断。 在6678上、中断相对于全局事件寄存器映射。
如果我对所提供的建议有误解、请更正我、这些建议表示 TSIP 事件仅在核心0上实现、应通过 IPC 处理并报告给后续核心。
TI 文档指出、这些事件应映射到所有内核。 在内核0上执行所有中断处理会显著降低系统性能。
此致、
Steve
尊敬的 TI 支持:
感谢您提供的所有有用的见解。 我们能够解决这个问题。 为了进一步参考、可在对其进行初始化的任何内核上使用 TSIP 全局事件寄存器。 在我们的应用程序中、编译器问题涉及强制内核0执行部分初始化的全局初始化变量。 校正后、内核1正常工作。
再次感谢、
Steve