DVSDK/EZSDK软件框架简介
from: http://code.61ic.com.cn/Article/DaVinci/TMS320DM81x/201203/41583.html
下面对DVSDK的软件架构,各个软件模块的功能等做简要介绍。
DVSDK是多个软件模块的集成,包括纯DSP端的软件模块,ARM的软件模块和双核交互的软件模块。
DVSDK的软件包都是基于实时软件模块(Real-Time-Software-Component:RTSC)的,
还需要安装RTSC的工具XDC,XDC是TI开源的一个工具,可以支持跨平台的开发,能够最大程度的代码重用;
如果需要进行纯ARM的开发,还需要ARM的编译工具以及Linux内核或者Wince的BSP;
如果需要进行DSP的算法开发或者DSP端开执行代码生成,还需要安装DSP的编译器cgtools和DSP/BIOS;
为了便于配置生成DSP端的可执行代码,通过向导生成Codec的RTSC包和可执行代码,还可以选装ceutils和cg_xml。
DVSDK的核心是Codec Engine,所有的其他软件模块基本都是围绕Codec Engine的。
Codec Engine是连接ARM和DSP的桥梁,是介于应用层(ARM侧的应用程序)和信号处理层(DSP侧的算法)之间的软件模块,
在编译DSP端可执行代码和ARM端应用程序时,都需要Codec Engine的支持。
Codec Engine主要有两部分:
ARM端应用适配层,提供了精简的API和对应的库给应用层使用。
DSP的算法调用层,提供了DSP算法的接口封装规范,是的所有的算法通过简单的配置就可以编译到DSP的可执行程序中。
最终的应用程序需要通过Codec Engine的API接口来下载DSP代码,调用DSP端的封装好的算法,以及进行ARM和DSP的通信。
关于Codec Engine的介绍,可以参考《帮您快速入门Codec Engine》。
Codec Engine底层ARM和DSP的通信是建立在DSP/BIOS Link之上的,DSP/BIOS Link真正实现ARM和DSP交互的软件模块。
由于DSP/BIOS Link是跨平台的,也是有ARM部分和DSP部分组成,其中在ARM端,包括基于OS的驱动和供应用调用的库文件,
DSP端,必须要用DSP/BIOS,DSP的可执行代码需要包含DSP/BIOS Link的库文件。DSP/BIOS Link常用的主要有如下几部分的软件模块:
PROC相关的,主要是用来做DSP芯片的控制,比如启动,停止等,下载DSP的可执行代码,以及直接读写DSP端的memory空间等
MSGQ相关,ARM和DSP的通信是基于MSGQ的,MSGQ有轮询等待的方式或者中断的方式,
MSG是基于共享内存池的方式。Codec Engine通过MSGQ交互一些关键数据,
比如控制,和一些大块数据的地址指针等。大量的数据交互需要通过cmem实现。
在ARM端,配合Codec Engine使用的软件模块有LinuxUtils或者WinceUtils,包含cmem,SDMA等,
cmem是用来在OS之外分配连续物理内存空间,进行物理地址到虚地址,以及虚地址到物理地址空间转化的。为了避免数据的多次复制,需要开辟一块ARM和DSP共享的数据空间,ARM和DSP都可以直接访问,
这部分空间需要通过CMEM管理。对ARM来说,CMEM是OS上的一个驱动程序,需要通过IOCTL来实现内存分配或者地址空间转化。
由于DSP可以访问任何物理地址空间,通过ARM传给DSP的指针必须是物理地址。
为了适配一些播放器的接口,DVSDK还提供了DMAI(Digital Media Application Interface),
DMAI提供了更为精简的媒体接口和基于OS的音视频捕捉、回放等接口,
在Linux下的gstreamer和Wince下的dshow filter都是基于DMAI的。
并且DMAI也提供了最基本的测试应用例子,可以很方便的进行修改和测试。
如果只是调用现成的或者第三方的算法库,可以只了解ARM端的软件模块,Codec Engine或者DMAI已经提供了丰富的应用接口,
DSP可以认为是个单纯的媒体加速器,把ARM+DSP的芯片当作ASIC一样使用。如果要充分发挥DSP的性能,就需要对DSP进行开发了。Codec Engine对DSP的算法只是规范了接口,以便于和Codec Engine一起生成DSP的可执行程序。
开发DSP算法的工程师,和传统的单核的DSP开发模式类似,只需要操作DSP核,基于CCS进行算法开发,最后封装成xDM的接口就可以了。
DVSDK/EZSDK软件框架简介相关推荐
- Perfect:Swift 语言服务器端软件框架简介
Perfect:Swift 语言服务器端软件框架 Perfect 开源项目 参与 Perfect 开发 Slack 在线协同 Perfect:Swift 语言服务器端软件框架 Perfect是一组完整 ...
- 服务器框架语言,Perfect:Swift 语言服务器端软件框架简介
Perfect:Swift 语言服务器端软件框架 Perfect:Swift 语言服务器端软件框架 Perfect是一组完整.强大的工具箱.软件框架体系和Web应用服务器,可以在Linux.iOS和m ...
- 《HiWind企业快速开发框架实战》(0)目录及框架简介
<HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...
- Java开源——常见J2EE框架简介
Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...
- 【转】.NET框架简介
.NET 框架是由微软开发的软件开发平台,其最主要的两个组成部分是公共语言运行时 (CLR) 和框架类库 (FCL),基础类库 (BCL)是框架类库的一个子集. .NET 框架简介 下图展示了 .NE ...
- freecplus框架简介
文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...
- 【UE4】GamePlay框架简介(蓝图)
文章目录 GamePlay框架简介 定义 设计者的规则 Game Mode Game State Default Pawn Player Controller Player State HUD Gam ...
- Vue.js框架简介(1)
1.Vue.js框架简介 Vue(读音 /vju:/,发音类似于 view)是一套用于构建用户界面的渐进式的JavaScript框架. 1.1.为什么要学习Vue.js 什么是Vue.js Vue.j ...
- 软件框架技术1(MyBatis)
目录 1.软件框架技术概述: 1.1为什么会出现软件框架技术? 1.2框架概述 1.3框架的优势 2.Maven 2.1.maven是什么 2.2maven依赖管理 2.3仓库 编辑2.4maven ...
最新文章
- (转)Python rsa 签名与验证 sign and verify
- ubuntu下安装nagios
- 计算机考研我该如何准备,计算机考研该如何准备呢-考研初试
- Thread Group(线程组)
- Python处理正则表达式超时的办法
- Java 三大特性 —— 多态
- AngularJS中的过滤器(filter)
- 专业修改数据库服务器,专业修改数据库服务器
- MyBatis缓存结构
- THUSC2019:Illusory World
- Python时间序列建模基础
- C++ 小游戏 视频及资料集(3)
- iphone怎么投屏到三星电视?这样操作即可实现
- matlab怎么画loess拟合,matlab smooth loess
- 网络兼职正规网站,做兼职的来看看,防止被骗!
- 探索云原生技术之基石-Docker容器入门篇(3)
- NodeMcu(ESP8266)控制SG90
- 我的大学生活-2-14- 王海鹏
- pytorch学习(一)pytorch中的断点续训
- 天地劫幽城再临服务器维护,天地劫幽城再临开服时间是什么时候_天地劫幽城再临开服时间一览_3DM手游...