我已从 PDK (pdk_keystone2_3_01_03_06)中获取 K2K 的 FFTC 多核示例工程。 我修改了项目、如下所示:
我将项目拆分为2个部分。 一个用于内核0、另一个用于内核3。 每个项目都有自己的"test_main.c"、"test_multicore.c"和"fftc_test.cfg "副本。
2.内核0项目执行 FFTC POWER_ON、SYSTEM_INIT、QMSS desc 存储器插入、QMSS_INIT、QMSS_START、CPPI_Init、并通过调用 multicore_test 来执行10个数据包的 FFTC。 我将代码更改为仅使用 RxQue 712、以便 Core 0仅处理 Core 0发布的作业的输出(而不是实际测试项目、其中 core0的输出由 core1处理、core1由 core 2处理、依此类推)。
3.核心3项目仅执行 QMSS_START ,并通过其自己的 multicore_test 副本对10个数据包执行 FFTC。 这里使用 RxQue 715。
4..fftc、.cppi 和.qmss 全部被移动到 MSMCSRAM。
5.两个项目都将执行,并通过了对各自内核(内核0和内核3)上10个 fftc 数据包的测试。 无论我是在 DSP-no-Boot 模式还是 ARM-SPI 引导模式下引导电路板。
6.然后我尝试引入客户经理(资源经理)。 我在核心0中使用 rmGlobalResourceList 和 rmDspPlusArmPolicy 启动了一个 RM 服务器实例。 已使用 RM 服务器服务句柄注册 QMSS 和 CPPI LLD。 根据调用 cpi_startCfg (&startCfg) 
7.在 Core 3中,我启动了一个 RM 客户端实例,并使用客户端服务句柄注册了 QMSS LLD,并调用了 qms_startCfg()。
执行时、内核0运行至完成、但内核3在 Fftc_setup 中抛出 CPPI_Queue_open_error (-137)-> fftc_open->Fftc_setupCppiDesc -> Cppi_initDescriptor->Cppi_initDescriptionorSubSys -> Qms_queueOpenSubSys。
现在我的问题是:
1.要在 ARM-SPI 引导模式下的多核环境中使用 FFTC (&&或 BCP)、必须包含 RM 吗? 如果是这样、为什么没有 RM 代码在两个内核中都正常运行、如上所述。。。?
2.如果 RM 是必须的、那么采取的步骤是否正确...? 是否缺少任何东西?
3.为什么它不工作? 如何继续...?
我已将与 RM 相关的所有更改置于预定义的编译时间标志下、如果我禁用该标志、则两个项目都将运行至完成。 但启用了 RM 更改后、Core 3抛出错误。
感谢您提供一些指导帮助。
谢谢、此致、
Ashok