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软件框架简介相关推荐

  1. Perfect:Swift 语言服务器端软件框架简介

    Perfect:Swift 语言服务器端软件框架 Perfect 开源项目 参与 Perfect 开发 Slack 在线协同 Perfect:Swift 语言服务器端软件框架 Perfect是一组完整 ...

  2. 服务器框架语言,Perfect:Swift 语言服务器端软件框架简介

    Perfect:Swift 语言服务器端软件框架 Perfect:Swift 语言服务器端软件框架 Perfect是一组完整.强大的工具箱.软件框架体系和Web应用服务器,可以在Linux.iOS和m ...

  3. 《HiWind企业快速开发框架实战》(0)目录及框架简介

    <HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...

  4. Java开源——常见J2EE框架简介

    Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...

  5. 【转】.NET框架简介

    .NET 框架是由微软开发的软件开发平台,其最主要的两个组成部分是公共语言运行时 (CLR) 和框架类库 (FCL),基础类库 (BCL)是框架类库的一个子集. .NET 框架简介 下图展示了 .NE ...

  6. freecplus框架简介

    文章目录 一.freecplus框架简介 二.freecplus开源许可协议 三.freecplus框架内容 字符串操作 2.xml解析 3.日期时间 4.目录操作 5.文件操作 6.日志文件 7.参 ...

  7. 【UE4】GamePlay框架简介(蓝图)

    文章目录 GamePlay框架简介 定义 设计者的规则 Game Mode Game State Default Pawn Player Controller Player State HUD Gam ...

  8. Vue.js框架简介(1)

    1.Vue.js框架简介 Vue(读音 /vju:/,发音类似于 view)是一套用于构建用户界面的渐进式的JavaScript框架. 1.1.为什么要学习Vue.js 什么是Vue.js Vue.j ...

  9. 软件框架技术1(MyBatis)

    目录 1.软件框架技术概述: 1.1为什么会出现软件框架技术? 1.2框架概述 1.3框架的优势 2.Maven 2.1.maven是什么 2.2maven依赖管理 2.3仓库 ​编辑2.4maven ...

最新文章

  1. (转)Python rsa 签名与验证 sign and verify
  2. ubuntu下安装nagios
  3. 计算机考研我该如何准备,计算机考研该如何准备呢-考研初试
  4. Thread Group(线程组)
  5. Python处理正则表达式超时的办法
  6. Java 三大特性 —— 多态
  7. AngularJS中的过滤器(filter)
  8. 专业修改数据库服务器,专业修改数据库服务器
  9. MyBatis缓存结构
  10. THUSC2019:Illusory World
  11. Python时间序列建模基础
  12. C++ 小游戏 视频及资料集(3)
  13. iphone怎么投屏到三星电视?这样操作即可实现
  14. matlab怎么画loess拟合,matlab smooth loess
  15. 网络兼职正规网站,做兼职的来看看,防止被骗!
  16. 探索云原生技术之基石-Docker容器入门篇(3)
  17. NodeMcu(ESP8266)控制SG90
  18. 我的大学生活-2-14- 王海鹏
  19. pytorch学习(一)pytorch中的断点续训
  20. 天地劫幽城再临服务器维护,天地劫幽城再临开服时间是什么时候_天地劫幽城再临开服时间一览_3DM手游...

热门文章

  1. oracle学习-PL SQL 存储过程中循环
  2. Vue 路由知识三(过渡动画及路由钩子函数)
  3. Codeforces Round #315 (Div. 2)
  4. HibernateBaseDAO
  5. 关于git提交的自己的理解
  6. 2015山东信息学夏令营 Day4T3 生产
  7. Webstorm 10.0.4 配置
  8. 吴恩达 coursera AI 第三课总结+作业答案
  9. Python学习笔记:web开发1
  10. Madagascar环境下编程