您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > DSPLINK-简介
DSPLINK简介DSPLINK的软件架构如下图示:DSPLINKGPP端从上图看,在GPP端,一般运行一个操作系统,基于GPP上还有以下模块:OS抽象层:该层包含了DSPLINK需要的一些通用的OS服务部件,提供一套通用的API与OS的其他组件隔离,其他组件通过API访问不进行直接的访问。而此特性也使DSPLINK可以方便的移植到不同操作系统中。15SEED-DVS6467DevelopmentSoftwareUser'sGuideLINKDriver:该层包含了基于GPP与DSP的物理连接的底层控制操作,负责GPP与DSP之间的数据传输和DSP的运行等操作。ProcessorManager:该层维护一个针对所有模块的Book-Keeping信息,通过API给用户提供通过LINKDriver的控制操作。DSP/BIOSLINKAPI:该层是提供给GPP端的接口,是非常轻小型的组件,API层可以认为是基于PROCESSORMANAGER和LINKDRIVER之上的层。DSPLINKDSP端LINKDRIVER是DSP/BIOS中驱动的一部分,该部分驱动只负责基于物理连接之上与GPP之间的交互。DSP端没有DSPLINK的API,通信是基于DSP/BIOSTM模块上的SIO、GIO、MSGQ模块实现。6.2.2DSPLINK关键组件6.2.2.1PROCPROC组件表述应用空间的DSP处理器,PROC是处理器的缩写。该组件提供以下服务:初始化DSP,使之能从GPP端进行访问;加载DSP的代码至DSP处理器;从DSP代码制定的地址运行DSP程序;读写DSP端的地址空间;停止DSP端程序的运行;其他一些平台专有的控制操作;目前版本只支持一个处理器,而API设计支持多个DSP处理器,因此为提供了一个processorId参数以支持以后的多处理器功能。6.2.2.2CHNLCHNL是channel的缩写,该组件表述应用空间的一个逻辑数据传输通道,负责GPP与DSP之间的数据传输。通道channel的概念如下述:一种GPP与DSP端传输数据方式一个基于GPP与DSP的物理连接上的逻辑实体映射唯一的一个数字标识一个专用连接到DSP的一组channel中的某个channel无方向性,通道方向可以在运行时进行配置;多通道复用在DSP端与GPP端的一条物理连接上,物理连接基于link和相关link驱动的特性。被传输的数据中不包含目的和源地址的任何信息,数据发送与接收端的数据通路需16GetDSPaddressforgivensymbolSEED-DVS6467DevelopmentSoftwareUser'sGuide要应用前进行显式的建立。该组件采用issue-reclaim模式进行数据传输,基于DSP/BIOSTM的SIO模块模仿issue-reclaim行为模式。6.2.2.3MSGQMSGQ是messagequeue的缩写,表述基于message的队列,负责GPP与DSP端的可变长度的短消息交互,基于DSP/BIOSTM的MSGQ模块实现。message的发送接收都通过消息队列实现,消息接收者从消息队列接收信息,而消息发送者将数据写入到消息队列中,一个消息队列只可以有一个接收者,但可以有多个发送者。一个任务可以读写多个消息队列。6.2.2.4POOL此模块提供了API用于配置共享内存区域,同时还提供两个CPU间的缓存数据同步的API接口。此模块提供如下功能:通过调用打开(open)和关闭(close)配置共享内存区域;在共享内存区域内分配或释放缓存;分配的内存地址可以在不同的地址空间内转换;在不同CPU核之间实现内存数据的同步。6.2.2.5NOTIFY此组件允许应用程序为发生在远程处理器上的事件通知(Notification)注册,并发送事件通知给远程的处理器。允许应用程序为远程处理器上的事件注册一个带事件回调函数;使能应用程序发送事件通知到远程处理器;同时,应用程序也可以发送一个事件处理的选项值。Notify组件为事件通知定义了优先级,优先级通过事件编号来实现,低编号的事件享有更高的优先级。如果事件通知不再需要使用,应用程序也可以实时注销其相应的回调函数。6.2.2.6MPCS应用程序MPCS实现GPP和DSP(Multi-ProcessorCriticalSection)互斥访问共享的数据结构。应用程序有时候需要定义属于自己的,并能够被多个处理器访问的数据结构,用于多个处理器之间信息的通信。但是,应用程序必须保证多个处理器,或者每个处理上的各个任务之间互斥的访问这些数据结构,从来保证数据的连贯性。为了实现这个设想,MPCS被用来支持这个功能。在拥有可以共同访问的内存区域的多处理器系统中,可以实现GPP和DPS之间的MPCS。为了防止没有共享存储区域的情况出现,该模块内部实现了MPCS组件要求的带保护的同步。MPCS组件提供了APIs接口来创建和删除MPCS的实体。每个MPCS实体通过一个系统唯一的字符串名字来标识。每一个需要使用MPCS的客户端都需要调用API打开函数来获取句柄。当不再需要使用MPCS时,通过相应的API函数来关闭句柄。同时也提供了17SEED-DVS6467DevelopmentSoftwareUser'sGuide进入和离开MPCS对象句柄指定的临界区域的API函数。如果MPCS对象要求的存储空间由用户提供的话,它必须位于所有处理器都可以访问到的池(Pool)中;如果在创建对象的时候不提供存储空间,则指定池的ID号将被MPCS对象用来内部分配空间。6.2.2.7MPLIST此组件提供给予GPP和DSP之间传输机制的双重循环连接列表。在GPP和DSP之间存在共享存储空间的设备上,该模块实现共享存储空间的连接列表。对于不存在共享存储空间的设备,该模块内部保持远程处理器上连接列表的一致。该组件提供了创建和删除MPLIST实体的APIs函数。每个MPLIST实体通过一个系统宽唯一的字符串名字来标识。每一个需要使用MPLIST的客户端都需要调用API打开函数来获取句柄。当不再需要使用MPLIST时,通过相应的API函数来关闭句柄。MPLIST组件提供的API函数,可以在列表中最后加入一个新的元素,或者删除列表前面的一个元素。也允许应用程序在某个已有的列表元素前插入一个缓冲,删除列表中任意一个指定的元素。并提供了检查列表是否为空的API函数。另外,还有API函数,通过获取列表首元素的指针和指定元素后的一个元素,横断列表。6.2.2.8RINGIO该组件提供基于数据流的循环缓冲区。该组件允许在共享存储空间创建循环缓冲区。不同的处理都能够读取或者写入循环缓冲区。RINGIO组件允许写指针获取数据缓冲区的空存储空间,当该存储空间被释放之后,相应存储空间可以再次写入。RINGIO组件允许读指针获取缓冲区中读取空间的有效数据。当被释放之后,相应存储空间的数据被标记为无效。每个RINGIO实体拥有一个读指针和一个写指针。RINGIO组件也有API函数,可以使能数据属性的同步传输。如:EOS(EndOfStream)、事件戳、流偏移地址等,也可能伴随着循环缓冲区的偏移值。6.2.3DSPLINK源码SEED-SDK安装后,DSPLINK的源码位于安装目录下的如下目录下:/opt/dvsdk_1_40_02_33/dsplink-davinci-v1.50-prebuilt/packages/dsplink,目录下的源码架构如下图示:18SEED-DVS6467DevelopmentSoftwareUser'sGuide6.2.3.1GPP端源码GPP端的源码目录结构如下如示:其中:inc目录下为相关的头文件src目录下为源码和一些sample例程源码,用户可以编译测试19SEED-DVS6467DevelopmentSoftwareUser'sGuide6.2.3.2DSP端源码DSP端的源码目录结构如下如示:其中:inc目录下为相关的头文件20SEED-DVS6467DevelopmentSoftwareUser'sGuidesrc目录下为源码和一些sample例程源码,用户可以编译测试21
本文标题:DSPLINK-简介
链接地址:https://www.777doc.com/doc-5112751 .html