查看: 2227|回复: 0

[原创] 【经验分享】TMS320C6678处理器如何进行TI-IPC多核通信案例

[复制链接]
  • TA的每日心情
    开心
    2021-2-20 09:01
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2021-1-28 19:22:20 | 显示全部楼层 |阅读模式
    分享到:
    【经验分享】TMS320C6678处理器如何进行TI-IPC多核通信案例



    本文基于创龙科技TL6678-EasyEVM评估板进行演示。



    图1TL6678-EasyEVM评估板


    TL6678-EasyEVM是一款基于TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点高性能处理器设计的高端多核DSP评估板,由核心板与底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。


    评估板接口资源丰富,引出双路千兆网口、SRIO、PCIe等高速通信接口,方便用户快速进行产品方案评估与技术预研。


    开发案例主要包括:Ø
    (1) 裸机开发案例
    (2) RTOS(SYS/BIOS)开发案例
    (3) IPC、OpenMP多核开发案例
    (4) SRIO、PCIe、双千兆网口开发案例
    (5) 图像处理开发案例
    (6) DSP算法开发案例
    (7) 串口、网络远程升级开发案例
    案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点
    游客,如果您要查看本帖隐藏内容请回复
    获取。



    1.1 TI-IPC简介

    TI-IPC(Inter-Processor Communication)是组件提供与处理器硬件无关的API,可用于多核处理器核间通信、同一处理器进程间通信和设备间通信。API支持消息传递、流和链接列表,它们在单处理器和多处理器中配置均可兼容。
    TI-IPC被设计在运行SYS/BIOS应用程序的处理器上使用,一般为DSP处理器(如TMS320C6678、TMS320C6657),但在某些情况下亦可能是ARM处理器。







    图2




    IPC常见的通信模块如下:


    表1
    Ipc
    提供Ipc_start()函数,并允许配置启动顺序
    MessageQ
    大小可变的消息传递模块
    Notify
    以中断方式实现轻量数据传输的模块
    ListMp
    用于实现对链接列表的互斥访问
    GateMp
    用于实现对共享资源的互斥访问
    HeapBufMp
    大小固定的共享内存堆
    HeapMenMp
    大小可变的共享内存堆
    SharedRegion
    用于维护共享内存区域
    List
    用于创建双向链接列表
    MultiProc
    用于管理多核处理器核心ID
    NameServer
    用于应用程序基于本地名称检索,以及存储变量值







    图3


    1.2 常用模块

    1.2.1 MessageQ

    该模块具有如下特点:


    (1) 兼容性强,可在不更改运行代码的情况移植至另一个支持TI-IPC MessageQ的处理器或其他传输层(如Shared Memory、Multicore Navigator、SRIO)。
    (2) 支持可变长度消息的结构化发送与接收。
    (3) 单个MessageQ队列支持单个reader和多个writer。
    (4) 消息接收支持超时机制。
    (5) reader可根据消息头部信息对writer进行确认后再回复。
    (6) Ipc_start()会帮助用户完成下图中灰色框内的功能,用户仅需关注红色框中的内容即可。





    图4




    MessageQ通过消息队列发送和接收消息。reader是一个从消息队列中读取消息的线程,writer是一个将消息写入消息队列的线程。每个消息队列都有一个reader,但可有多个writer。


    n reader:调用MessageQ_create()、MessageQ_get()、MessageQ_free()和MessageQ_delete()。
    n writer:调用MessageQ_open()、MessageQ_alloc()、MessageQ_put()和MessageQ_close()。
    MessageQ常见的工作流程如下所示。

    图5



    下面以多核IPC通信的shmIpcBenchmark案例为例,分析代码中MessageQ的使用,见图中注释。



    图6

    图7




    1.2.2 Notify

    该模块具有如下特点:


    (1) 可独立于MessageQ模块进行使用。
    (2) 着重于多核通知功能,是更为简单的多核通信形式。

    图8


    (3) 仅可基于Shared Memroy方式进行使用。

    图9




    Notify通过硬件中断传输消息,Receiver注册Notify事件中断,Sender通过Notify发送事件中断,从而实现通知并携带小量消息的目的。


    n Receiver:调用Notify_registerEvent()注册事件中断服务函数。
    n Sender:调用Notify_sendEvent()发送事件中断。
    Notify常见的工作流程如下所示。





    图10


    1.3 物理传输方式

    TI-IPC的数据传输需结合特定物理硬件与底层驱动,方可实现两个线程在同一个设备或跨设备间进行通信。常用三种的物理传输方式包括Shared Memory、Multicore Navigator和SRIO,具体说明如下。


    表2
    传输方式
    优点
    缺点
    Shared Memory
    使用简单,速率较高
    仅可用于单个设备IPC通信,可能与其他使用Shared Memory的任务存在竞争
    Multicore Navigator
    速率最高,消耗CPU周期最少
    仅可用于单个设备IPC通信
    SRIO
    可用于跨设备IPC通信
    速率最低


    下图为使用Multicore Navigator、SRIO的API调用流程,用户仅需关注MessageQ部分操作即可,其他模块均由系统自动调用。

    图11



    图12


    免费试用现可向厂家免费申请TL6678-EasyEVM评估板进行快速评估,免费哦!




    更多推荐C6678+K7视频采集处理方案



    图13


    FPGA+DSP的高速AD采集处理开发详解



    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-23 19:18 , Processed in 0.118085 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.