请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C6678 Thread 中讨论的其他器件:SYSBIOS
您好!
我的客户正在使用具有 OpenMP 运行时的 NDK、这些在 ProcSDK 版本03.03.00中提供。
他们使用 NIMU_emacExample_EVMC6678C66BiosExampleProject 作为代码库来集成 OpenMP 运行时(及其应用代码)、 默认情况下使用 NIMU_osal.c。
您可以在以下路径中找到该文件。
C:\ti\pdk_c667x_2_0_5\packages/ti\transport \ndk\Nimu\examples\HelloWorld\src\Nimu_osal.c
他们现在正在研究 NIMU osal 集成,如果真的可以将 OSAL_qmss/cppiBeginMemAccess()和 OSAL_qmss/cppiEndMemAccess()留空,他们就在徘徊。
/** *@b 说明 *@n * 该函数用于指示存储器块为 * 即将访问的内容。 如果内存块已缓存、则* 表示应用程序需要确保 * 高速缓存使用实际存储器中的数据进行更新。 * *@param[in] blockPtr * 要失效的块的地址 * *@param[in] size * 要失效的块的大小 *@retval * 不适用 */ void OSAL_cppiBeginMemAccess (void *blockPtr、uint32_t size) { /*仅多核应用程序需要缓存一致性保护*/ return; } //** *@b Description *@n * 该函数用于指示存储器块具有 * 已完成访问。 如果内存块被缓存、则* 应用程序需要确保缓存的内容 * 会立即更新到实际存储器。 * *@param[in] blockPtr * 要写回的块的地址 * *@param[in] size * 要回写的块的大小 *@retval * 不适用 */ void OSAL_cppiEndMemAccess (void * blockPtr、uint32_t size) { /*仅多核应用程序需要缓存一致性保护*/ 返回; } 。。 … /** *@b 说明 *@n * 该函数用于指示存储器块为 * 即将访问的内容。 如果内存块已缓存、则* 表示应用程序需要确保 * 高速缓存使用实际存储器中的数据进行更新。 * *@param[in] blockPtr * 要失效的块的地址 * *@param[in] size * 要失效的块的大小 *@retval * 不适用 */ void OSAL_qmsBeginMemAccess (void *blockPtr、uint32_t size) { /*仅多核应用程序需要缓存一致性保护*/ return; } //** *@b Description *@n * 该函数用于指示存储器块具有 * 已完成访问。 如果内存块被缓存、则* 应用程序需要确保缓存的内容 * 会立即更新到实际存储器。 * *@param[in] blockPtr * 要写回的块的地址 * *@param[in] size * 要回写的块的大小 *@retval * 不适用 */ void OSAL_qmssEndMemAccess (void * blockPtr、uint32_t size) { /*仅多核应用程序需要缓存一致性保护*/ 返回; }
这些函数中的注释建议将这些函数用作栅极、以保持内核之间的高速缓存一致性。
由于 OpenMP 主线程仅在 core0上运行、其他从内核适用于从 core0派送的 OpenMP 并行区域、因此 NDK 栈仅在 core0上运行。
在此用例中,它们是否可以将函数保留为空?
此致、
Naoki