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.

[参考译文] TMS320C6678:C6678 NDK 和 SRIO 示例

Guru**** 2586735 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/567450/tms320c6678-c6678-ndk-and-srio-example

器件型号:TMS320C6678

大家好。
我使用的是 c6678板、NDK 2.21.02.43、MCSDK 2.01.02.06。
我到目前为止所做的就是这里。
首先、我检查了 C6678板上的 NDK"大家好"工作示例、它工作正常。
然后、我检查了工作"SRIO_LoopbackDioIsrexampleProject"、它也可以正常工作。
因此、我认为我的下一步是将 NDK + SRIO 组合在一起。
我需要一个完整的示例、可以一起满足以前的要求。

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

    我已将此内容转发给 SRIO 专家。 他们的反馈应发布在此处。

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

    您可以从合并.cfg 文件开始、然后是器件初始化、SYS/BIOS 任务、以使 NDK + SRIO 正常工作。 如果您有任何问题、请告知我们。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    感谢您的回复、但我是新手。
    您的答案是非常全局的、对我来说用处不大。
    我需要一个详细的答案。
    对我来说、最好的解决方案是一个完整的示例、它向我展示了如何执行您的建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Amir、

    我们目前没有一个将 NDK 和 SRIO 集成到处理器 SDK 中的示例、但我认为这些 e2e 线程应该有助于您快速入门:

    e2e.ti.com/.../198711
    e2e.ti.com/.../332218

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

    我是否可以请求对 C6678的 Core0上的一个项目中运行具有 SRIO 功能的 NDK 的原始问题做出更详细的响应? 我还尝试将 Nimu_emacExample (也称为"Hello World")示例与 SRIO_LpbkDioIsr 示例项目合并,但没有取得很大成功。 这两者之间有很多常用函数、但代码并不相同。 这使得很难知道选择哪一个。 下面我列出了在文件 Nimu_osal.c 和 loopbackDioIsr_osal.c 中分别找到的一些常见函数示例:

    PTR OSAL_cppiCSEnter (空)
    void OSAL_cpipiCsExit (PTR CsHandle)
    ptr OSAL_cppiMalloc (uint32_t num_Bytes)
    void OSAL_cppiFree (PTR dataPtr、uint32_t num_Bytes)
    void OSAL_cppiBeginMemAccess (void *blockPtr、uint32_t 大小)
    void OSAL_cppiEndMemAccess (void *blockPtr、uint32_t size)
    PTR OSAL_qmssscEnter (空)
    void OSAL_qmssscExit (ptr CssHandle)
    PTR OSAL_qmsMtCSEnter (空)
    void OSAL_qmsMtcsExit (PTR Handle)
    PTR OSAL_qmsAcccsEnter (空)
    void OSAL_qmsAcccsExit (PTR_CHandle)
    void OSAL_qmsBeginMemAccess (void *blockPtr、uint32_t size)
    void OSAL_qmssEndMemAccess (void *blockPtr、uint32_t size)

    我还想,文件 nimu_cpi_qms_iface.c 中的 nimu_initQmss()和文件 loopbackDioIsr.c 中的 system_init()都涉及 QMSS 初始化,必须智能地合并。 不幸的是,我不知道如何做到这一点,并希望在这方面得到任何帮助。 我已经查看过您之前的回复中的两篇帖子、但这些帖子涉及我未使用的 MCSDK。

    我使用的封装如下:

    BIOS_6_50_01_12
    CCSv7
    IPC_3_44_00_00
    NDK_2_25_01_11
    pdk_c667x_2_0_4
    xdctools_3_50_01_12_core

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

    Werner、

    对于 CPPI 和 QMSS、在 OSAL 函数中为 SRIO 和 NDK 定义的信标是相同的、因此列出的大多数常用函数本质上是相同的。  

    SRIO:

    #define CPPI_HW_SEM  1

    #define QMSS_HW_SEM  2.

    尼姆:

    #define NIMU_CPPI_HW_SEM       1        /**< CPPI 驱动器-由 OSAL 层使用*/

    #define NIMU_QMSS_HW_SEM       2.        /**< QMSS 驱动程序-由 OSAL 层使用*/

    对于那些在 SRIO 和 NDK 中实现不同的函数,例如 OSAL_qmsBeginMemAccess(),这些函数仅用于多核应用程序,而不用于示例,如果需要,可以从 SRIO 中选择这些函数。 OSAL_qmsBeginMemAccess()在 NDK 中为空。

    对于 QMSS 初始化、尽管  它基于 MCSDK、但您仍可以参考以了解事件编号、累加器和队列配置。

    实际上、SRIO 直接 I/O 操作不需要 CPPI/QMSS、您可以使用此处提供的示例简化集成:

    此致、Garrett