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

如何用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采集处理开发详解

 

 

 

 

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
TMS320C6678是德州仪器(Texas Instruments)的一款多核数字信号处理器(DSP),而EMIF则是该处理器上的通用扩展接口模块(External Memory Interface)。 在TMS320C6678进行多核烧写(programming)涉及将程序或数据加载到处理器的内部或外部存储器中。EMIF作为外部存储器接口模块,为TMS320C6678提供了与外部存储器的连接和控制。 要进行多核烧写,首先需要选择合适的编程工具或软件来支持该处理器。德州仪器提供了一套名为Code Composer Studio(CCS)的开发工具,其中包含了用于多核烧写的工具链。 在使用CCS进行TMS320C6678多核烧写时,首先需要建立与处理器的连接。可以通过JTAG(Joint Test Action Group)接口或通过网络连接TDI(Test Data In)和TDO(Test Data Out)针来实现。接下来,需要通过CCS提供的烧写工具将程序或数据加载到处理器的内存中。 对于EMIF,需要首先配置接口模块来与外部存储器进行通信。可以通过CCS提供的工具或者在程序中进行相应的配置。通过配置EMIF,可以设置存储器的类型(例如DDR3、SRAM等)、存储器的大小以及与处理器的连接方式等。 一旦EMIF和编程工具都准备就绪,可以使用CCS提供的API(Application Programming Interface)来访问和控制EMIF和多核处理器。通过API,可以实现多核烧写的功能,包括将程序或数据加载到EMIF所连接的外部存储器中,以及启动多核处理器执行相应的程序。 总之,TMS320C6678多核烧写涉及到使用适当的编程工具和配置EMIF接口模块,以实现将程序或数据加载到多核处理器的内外存储器中。使用德州仪器提供的开发工具CCS,可以方便地完成这一过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tronlong创龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值