如何用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) 串口、网络远程升级开发案例

案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点http://site.tronlong.com/pfdownload获取。

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评估板进行快速评估,免费哦!

tronlong.com/Product/show/9.html

TMS320C6678 DSP讨论:79635273、332643352

更多推荐

C6678+K7视频采集处理方案

图13

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

如何用TMS320C6678处理器进行TI-IPC多核通信案例相关推荐

  1. SOM-TL665x核心板研发的一款TI C66x多核定点/浮点高性能DSP开发板 处理器/FLASH

    前    言 TL665x-EasyEVM是广州创龙基于SOM-TL665x核心板研发的一款TI C66x多核定点/浮点高性能DSP开发板,采用核心板+底板方式,底板尺寸为200mm*106.65mm ...

  2. SOM-TL665x是TI系列多核架构的定点/浮点TMS320C665x高端DSP核心板

    1.核心板简介 基于TI KeyStone C66x多核定点/浮点DSP TMS320C665x,单核TMS320C6655和双核TMS320C6657管脚pin to pin兼容,同等频率下具有四倍 ...

  3. TI AM5728 DSP+ARM多核通信开发例程

    核间通信方式有MailBox.OpenCL.DCE.IPC.Big Data IPC这几种方式,因为我们要使用SYS/BIOS,所以把MailBox排除了,然后我们不涉及多媒体信号的处理,所以DCE应 ...

  4. TI C6000 TMS320C6678 ZYNQ OpenAMP 双核ARM 通信案例开发手册之echo_test案例

    目录 前  言 1 echo_test案例 1.1 案例功能 1.2 操作说明 <

  5. oracle ipc message,【案例】Oracle RAC IPC send timeout error导致RAC的节点挂起解决办法

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle RAC环境数据库节点挂起,分享日志发现是由于IPC send timeout error导致RAC的节点挂起. 本站文章除注明转载外 ...

  6. 如何用Python操作Excel自动化办公?一个案例教会你openpyxl——公式计算和数据处理

    术业有专攻,每一种工具每一种岗位都会有资深玩家,别说因为人人都会Excel就瞧不起Excel玩的溜的朋友.对于运营场景来说,能够和具体业务结合紧密,轻松实现目的,这就是很强大的玩家,但是如果精于提高技 ...

  7. zynq7000 AMP双核IPC+SharedMem通信

    开始 接着上文,然后做双核通信,参考大佬 driver: /* dbox-ipc-dev.c - The simplest kernel module.* Copyright (C) 2013 - 2 ...

  8. 岩板铺地好吗_铺地的石板如何用出高逼格,三个大师案例来教你!

    [材料在线]致力于建立国内首个建筑材料知识媒体平台--帮设计师看,帮材料商说! 各位设计师 大家好 今天我们今天 先欣赏一个优秀的小案例 附带一个小问题 大家猜猜 这个教堂的外墙是什么材料? 怎么样, ...

  9. 如何用java的程序 计算验证条形码_java 案例之验证商品条形码

    package lifubo.barCodeChecking; //验证码条码(共13位),代表了一件商品编码,前12位("692116851128") //有具体代表含义,第13 ...

最新文章

  1. Activiti 6.x【6】StartEvent(上)
  2. C#中使用 SendMessage 向非顶端窗体发送组合键
  3. less background url相对路径取不到编译报错问题
  4. 第七章 oracle的服务启动顺序、认证方式、
  5. 系统优化方法与智能优化算法
  6. nginx 配置文件nginx.conf结构
  7. Docker框架的使用系列教程(三)
  8. hystrix总结之多返回值命令
  9. Android之java.lang.ClassCastException: *****cannot be cast to*******
  10. python 累积正态分布函数_Python编程基础—Python语句书写规范
  11. vue_过滤器_note
  12. CISCO基础之局域网交换机配置
  13. IOS 在终端( Terminal )开发
  14. 2048游戏 JavaScript实现
  15. 光伏运维将面临行业洗牌?
  16. 5G来临,我们该如何打造自己的家庭数据中心 - 基础篇
  17. 【调剂】河北农业大学2020年硕士研究生招生调剂工作办法
  18. MYSQL数据库到VUE前端架构
  19. 你真以为贪吃蛇是个简单的游戏?
  20. 直面大数据撞击这个时代——畅享网成功举办大数据应用沙龙

热门文章

  1. 7590 xps 拆机_戴尔 Dell XPS 15 7590 详细评测报告
  2. FoolNLTK简介
  3. IOS 11 适配导航栏、状态栏调整
  4. Redis分布式锁相关总结
  5. r5 5600g评测
  6. matlab分块构建矩阵技巧
  7. 微信公众号对接服务器教程,微信公众号开发--服务器配置(傻瓜入门教程)
  8. CAD异常关闭、闪退没保存?通过CAD自动保存抢救你的文件。
  9. Maya建模中疑难杂症,解决笔记。
  10. mac securecrt程序无响应_IT人员必备工具SecureCRT介绍及一些实用小技巧