OMAPL138的DSPLINK开发入门

本文介绍了OMAPL138平台的DSPLINK开发,包括GPP端和DSP端的关键组件及功能。GPP端涉及OS ADAPTATION LAYER、LINK DRIVER和PROCESSOR MANAGER等组件,DSP端则基于DSP/BIOSTM。DSPLINK组件如PROC、CHNL、MSGQ、POOL、NOTIFY、MPCS、MPLIST和RINGIO在GPP和DSP间实现数据传输、消息队列、共享内存管理和事件通知等功能。详细讲述了DSPLINK的配置、源码编译以及各种例程的演示,如LOOP、MESSAGE、SCALE、READWRITE、RING IO和MPCSXFER等。
摘要由CSDN通过智能技术生成


1、DSPLINK介绍

1.1GPP端

GPP(General Purpose Processor)是指和DSP端通信的通用处理器,在本文特指OMAPL138平台的ARM端。

GPP OS:指通用处理器上的操作系统,本文特指OMAPL138平台ARM端Linux操作系统。

OS ADAPTATION LAYER:指操作系统抽象层,包含了DSPLINK需要的一些通用的OS服务部件,提供了一套通用的API接口,与OS的其他组件隔离。其他组件通过API访问,而不直接访问DSPLINK,此特性使DSPLINK可以方便的被移植到不同操作系统中。

LINK DRIVER:指连接驱动层,包含了基于GPP与DSP的物理连接的底层控制操作,负责GPP与DSP之间的数据传输和DSP的运行等操作。

PROCESSOR MANAGER:指进程管理层,它维护一个针对所有模块的Book-Keeping信息,通过 API给用户提供通过LINKDRIVER的控制操作。

DSP/BIOSTM LINK API:指提供给GPP端的接口,是非常轻小型的组件,API层可以认为是基于PROCESSOR MANAGER和 LINK DRIVER之上的层。


1.2 DSP端

       DSP端在本文特指OMAPL138平台的DSP端。

DSP/BIOS:指DSP端的BIOS轻量级操作系统,同时它是一个实时操作系统。本文提到的DSPlink在ARM端是基于Linux系统,而在DSP端时基于DSP/BIOSTM。也就是说,如果使用DSPlink调用DSP,那么编写DSP程序时必须要选择操作DSP/BIOSTM支持。

LINK DRIVER:LINK DRIVER是DSP/BIOS中驱动的一部分,该部分驱动只负责基于物理连接之上与GPP之间的交互。DSP端没有DSPLINKAPI,和GPP之间的通信是基于DSP/BIOS中的SIO、GIO、MSGQ模块来实现的。

OTHER DRIVERS:指DSP端其他驱动程序。


1.3DSPLINK关键组件

        GPP端的DSPLINK关键组件有PROC、CHNL、MSGQ、POOL、NOTIFY、MPCS、MPLIST、RINGIO。

1.3.1 PROC

    PROC表述应用空间的DSP处理器,提供以下服务:

   初始化DSP,使之能从GPP端进行访问

   从GPP端加载DSP的代码至DSP处理器

   从DSP代码制定的地址运行DSP程序

   读写DSP端的地址空间

   停止DSP端程序的运行

   其他一些平台专有的控制操作

1.3.2 CHNL

CHNL是channel的缩写,该组件表述应用空间的一个逻辑数据传输通道,负责GPP与DSP之间的数据传输。通道channel的概念如下述:

   一种GPP端与DSP端传输数据的方式

   一个基于GPP与DSP的物理连接上的逻辑实体映射

   唯一的数字标识,标记连接到DSP的一组channel中的某个channel

   无方向性,通道方向可以配置

        DSP端与GPP端的一条物理连接被多通道复用,被传输的数据中不包含目的地和源地址的任何信息,数据发送与接收端的数据通路需要在应用前进行显式的建立,采用issue-reclaim模式进行数据传输。

1.3.3 MSGQ

         MSGQ是message queue的缩写,表述基于message的消息队列,负责GPP与DSP端的可变长度的短消息交互,基于DSP/BIOSTM的MSGQ模块实现。

         message的发送接收都通过消息队列实现,消息接收者从消息队列接收信息,而消息发送者将数据写入到消息队列中,一个消息队列只可以有一个接收者,但可以有多个发送者。一个任务可以读写多个消息队列。

1.3.4 POOL

         此模块提供了API 用于配置共享内存区域,同时还提供两个CPU间的缓存数据同步的API 接口。此模块提供如下功能:

   通过调用打开(open)和关闭(close)配置共享内存区域

   在共享内存区域内分配或释放缓存

   分配的内存地址可以在不同的地址空间内转换

   在不同CPU核之间实现内存数据的同步

1.3.5 NOTIFY

此组件允许应用程序为发生在远程处理器上的事件通知(Notification )注册,并发送事件通知给远程的处理器。允许应用程序为远程处理器上的事件注册一个带事件回调函数;使能应用程序发送事件通知到远程处理器;同时,应用程序也可以发送一个事件处理的选项值。

         Notify组件为事件通知定义了优先级,优先级通过事件编号来实现,低编号的事件享有更高的优先级。如果事件通知不再需要使用,应用程序也可以实时注销其相应的回调函数。

1.3.6 MPCS

        应用程序MPCS 实现GPP和DSP(Multi-ProcessorCritical Section)互斥访问共享

的数据结构。应用程序有时候需要定义属于自己的,并能够被多个处理器访问的数据结构,

用于多个处理器之间信息的通信。但是,应用程序必须保证多个处理器,或者每个处理上的各个任务之

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值