达芬奇软件架构及开发流程重要.ppt
《达芬奇软件架构及开发流程重要.ppt》由会员分享,可在线阅读,更多相关《达芬奇软件架构及开发流程重要.ppt(58页珍藏版)》请在三一办公上搜索。
1、达芬奇(DaVinci)软件开发李 亮13581737214,一、达芬奇软件架构 及开发流程二、Codec创建DSP Server三、Codec Engine概述,达芬奇(DaVinci)软件开发-什么是达芬奇技术?TI的DaVinci技术是一组专门为高效和引人注目的数字视频而设计的基于DSP的系统解决方案-适用于数码摄像机、视频安全设备、高级医疗成像设备、便携式视频播放器或任何其它您能想象得到的视频应用。成功实现数字视频需要四大要素的最新进步,即:处理器、开发工具、软件以及系统专业技术。由于能够在集成这四种要素的平台中实现数字视频、音频、语音与话音技术,因此达芬奇技术可以为数字视频的当前变革
2、打下基础。达芬奇技术充分利用了TI25年的数字信号处理与集成电路专业技术来提供系统级芯片(SoC),这种系统针对灵活的数字视频实施而进行了精心优化,拥有业界领先的性能并集成了可编程数字信号处理器(DSP)内核、ARM处理器以及视频加速协处理器。凭借高效的处理能力、存储器、I/O带宽、平衡的内部互连以及专用外设组合,基于达芬奇技术的SoC能够以最低的成本为视频应用提供理想的核心动力。处理器自身只能用作数字视频解决方案的基础。管理数字视频系统的所有组件是极其复杂的工程难题。对于许多应用来说,数字视频只是更为庞杂的系统的众多组件之一。工程师随意地在自视为基础技术方面投入大把时间和资金的好日子已经一去
3、不复返了。,达芬奇(DaVinci)软件开发-为了真正意义上地让开发人员克服最初的障碍并且加快产品上市进程,仅仅开发实施数字视频的基础芯片和软件已经远远不够。开发人员不仅需要处理器,他们还需要 能够直接投入生产的理想代码。换句话说,为了满足其应用的特定需求,开发人员还需要已经集成到可配置或轻松编程的数字视频子系统的硬件和软件。正像汇编语言向C语言的过渡使开发人员能够全力开发更高级功能性那样,达芬奇技术使开发人员能够摆脱数字视频的具体技术细节。现在,开发人员不再需要了 解其视频应用中实施具体CODEC引擎(如:MPEG-2、H.263、WMA9)的细节。利用允许开发人员无需修改上层应用代码即可以
4、使用理 想CODEC的API,我们可以显著简化视频CODEC处理的具体低层次细节。摆 脱CODEC的困扰是数字视频广泛普及的重要一步。当开发人员可以立足于以前开发的功能性,创新就已经来到他们眼前。例如,在过去开发电子器件时,即使是最基本的功能,工程师们也需要进行栅极布局。许多年来,TI等公司始终致力于在硅芯片中集成功能,为超越自身功能期望的器件打下了基础,同时也降低了实现预期目标所需要的工程量。例如,由于提供了显著加快信号处理任务的计算引擎,DSP的问世已经推动了数十载的技术创新。利用达芬奇技术,TI可以再度实现全新的创新水平。正是DSP的问世带来了计算加速,因此达芬奇技术会以TI的DSP为基
5、础来提供应用加速。开发人员不再需要了解各种音频、视频、影像以及语音CODEC背后的机制。,一、达芬奇软件架构 及开发流程,Davinci 软件平台概述,用户软件用户程序,框架,GUI,设备驱动,Codec APIs,ARM/DSP 通信,Linux操作系统,ARM RISC,Video,Image,Speech,Audio,Socket Nodes,DSPLink,DSP/BIOS,DSP,外设,Codec Engine 2.30,Engine,Algorithm API,A-Node,Task,S-Node,Task,xDM API,Codec/算法,xDM API,Codec/算法,OMA
6、P-L137 Software Architecture,ARM 子系统,DSP 子系统,Linux 用户空间,Linux 内核空间,Transport,I/O,I/O,I/O,USB 2.0 Driver,CMEM Driver,McASPDriver,EMAC Driver,MMC/SD Driver,SPI Driver,Link Driver,UART Driver,DSP/BIOS Link v1.6x,DSP/BIOS 5.3x,应用程序,OSAL,Server,CCS 3.3/CGT,MontaVista Pro 5.0 Toolchain,LCD Driver,I2C Driv
7、er,GPIO Driver,PSL,Codec Engine 2.30,Engine,Algorithm API,DMAN3,Framework Components 2.30,C6747 Software Architecture,DSP 系统,USB 2.0 Driver,McASP,I2C Driver,CMEM Driver,EDMADriver,GPIO Driver,EMAC Driver,MMC/SD Driver,SPI Driver,UART Driver,应用程序,ACPY3,DSK2,DMAN,DSP/BIOS 5.32,LCD Driver,NANDDriver,ER
8、TFS Driver,CCS 3.3/CGT,xDM API,Codec/算法,xDM API,Codec/算法,功耗管理Power Manager(PWRM),PSL,达芬奇DMSoC软件概述-达芬奇DMSoC软件概述 一般来讲,软件系统分为应用层、信号处理层和I/O层三部分,TI提供的达芬奇参考软件框架就是基于这样的结构,如下图所示。,图1,达芬奇DMSoC软件概述-,应用层:工程师可以在系统的用户空间在系统功能性上添加和发挥自己的特色。信号处理层:通常都运行在DSP一侧负责信号处理,包括Video/Audio编解码算法、Codec Engine、DSP的实时操作系统DSP/BIOS及和A
9、RM通信的模块。信号处 理层(SPL)一方面通过VISA API接口与应用层(APL)连接,另一方面则通过DSP/BIOS与底层内核沟通。I/O层:就是我们通常所说的驱动,是针对Davinci外设模块的驱动程序。其中应用层通过Codec Engine的VISA API来调用DSP侧的算法,通过EPSI(Easy Peripheral Software Interface)API来访问和操作Davinci的外设。这三个部分通常对应三个Davinci软件开发小组。当然还需要一个系统集成工程师把这三个部分集成起来,不过VISA API和EPSI API的存在已经大大简化了集成工作的复杂程度。,Cod
10、ec Engine概述-下图给出了这种框架的结构示意图。共享DDR2存储器-ARM与DSP之间共享内存,进行物理数据交换。DSPLink-双核通信的基础软件,为开发人员提供通用的API,用于描述ARM 与DSP之间通信的物理链路的特征。引擎功能层-用于管理算法对象的实例,例如创建一个对象的具体过程等。VISA层-面向引擎功能层的一个接口,用于定义创建、删除和使用一个特定符合XDM标准的算法的进程。由于Codec Engine的主要任务是为从ARM发起的VISA命令控制远程的XDM算法起到一个管道的作用,因此VISA层实际上就代表了XDM接口层。,达芬奇软件架构 及开发流程-下面就是一个完整的应
11、用程序开发步骤:,xDM,Non-xDM,可发布使用的Codec包,VISA,Stub,DSP算法工程师,运行在DSP上的可执行程序:.cfg,.tcf,main(),Codec Server集成工程师,可执行应用程序,ARM应用工程师,各种引擎配置,Codec Engine集成工程师,*.cfg,DSP/BIOS,FrameWork Component,DSPLink,xDC,Server 名称,Codec列表,各种不同的Codec包:*.x64P,*.cfg,*.a64P即*.lib,*.x64P即*.out,达芬奇软件架构 及开发流程-一个完整的应用程序开发步骤:,xDM,Non-xDM
12、,可发布使用的Codec包,VISA,Stub,DSP算法工程师,*.a64P,第一步:需要基于DSP利用CCS开发自己的音视频编解码算法,编译生成一个编解码算法的库文件*.lib(等同于Linux环境下的*.a64P,直接在Linux环境下修改文件后缀名即可)。由于需要确保算法可被Codec Engine使用和配置,所以要确保这些算法实现需要符合xDM(xDAIS(eXpress DSP Algorithm Interface Standard)for Digital Media)标准。Codec主要完成音视频的核心算法,应用程序运行时被调用,并不参与其他功能。如果算法与XDM标准兼容,则可
13、不经修改而直接被Codec Engine的VISA API远程执行;如不兼容,则需为其提供Codec Engine的框架和终端接口(具体请参考spraae7.pdf)。,达芬奇软件架构 及开发流程-一个完整的应用程序开发步骤:,第二步:将Codec集成到CodecEngine中。将第一步开发完成的Codec或已有的符合xDM的Codec集成到CodecEngine中,这一步需要配置两个JavaScript的脚本文件:*.cfg-表明Codec的使用和配置信息,*.tcf-描述Codec在达芬奇上的内存分配的配置.配置好这两个文件后,使用make命令即可生成CodecEngine,其文件名一般为
14、*.X64P(即.out文件).*.x64P(即.out文件)DSP端可执行程序,即DSP Server,可被ARM端的应用程序直接调用。对达芬奇的软件来说,DSP Server也叫Codec Server,运行在DSP上的可执行程序:.cfg,.tcf,main(),Codec Server集成工程师,*.x64P,DSP/BIOS,FrameWork Component,DSPLink,xDC,达芬奇软件架构 及开发流程-一个完整的应用程序开发步骤:,由于在双核环境中,Codec Engine是在DSP上执行,而操作系统是由ARM通过VISA API控制Codec Engine,所以必须先
15、在远程的DSP生成一个Codec Server。Codec Server是后缀为.x64P的文件,是一个集成了编解码器、框架元件和系统代码的二进制库。Codec Server包含了一个为相应客户端(ARM)生成编解码器、提供系统运行信息(包括指令和内存使用情况)的DSPBIOS任务线程;客户端(ARM)的应用程序通过使用VISA API与在远程DSP上的编解码器联系。,运行在DSP上的可执行程序:.cfg,.tcf,main(),Codec Server集成工程师,*.x64P,DSP/BIOS,FrameWork Component,DSPLink,xDC,达芬奇软件架构 及开发流程-一个完
16、整的应用程序开发步骤:,第三步:开发音视频应用程序(ARM),并在其中调用Codec Engine 在Linux下开发音视频应用程序,包括用户界面,音视频的采集、播放、同步等,其中完成对CodecEngine的调用,应用程序也要完成一个扩展名为.cfg的脚本配置文件,以表明对CodecEngine的使用状况.引擎配置(通过配置工具),写入到.cfg文件 引擎配置的工作,包括引擎的名字、每个引擎中包含什么编解码器、编解码器是本地执行还是远程执行等,如果这些编解码器在远程执行的,则还需配置相应的Codec Server。一般将所有的配置写到一个.cfg文件里面(具体说明,请参考sprue67.pd
17、f的第5章Integrating an Engine).,各种引擎配置,Codec Engine集成工程师,Server 名称,Codec列表,*.cfg,达芬奇软件架构 及开发流程-一个完整的应用程序开发步骤:,第四步:ARM应用工程师利用Coedc Engine的应用编程接口createdelete配置好的引擎实例,进而createdelete和控制编解码器。ARM应用工程师收到不同的codec包、DSP Server和Engine配置文件*.cfg,把自己的应用程序通过编译、链接,最终生成ARM端可执行代码。ARM应用工程师可使用以下资源:a.从算法开发工程师得到的大量的编解码器软件包(
18、*.lib);b.从服务集成工程师得到一个可以在DSP上运行的Codec Server二进制文件,一般为.x64P文件;c.从引擎集成工程师得到一个引擎配置文件,一般为.cfg文件。,可执行应用程序,ARM应用工程师,*.cfg,*.lib,*.x64P,*.cfg,达芬奇软件架构 及开发流程-一个完整的应用程序开发步骤:,由于Codec Engine不参与任何的I/O操作,只是纯粹的视频编解码算法处理,因此应用工程师需要管理I/O,包括文件操作(文件的打开、读写与存储等)和外设操作(外设的打开、关闭与控制等)。至此,即可加载DSPLINK和CMEM模块,运行应用程序.,可执行应用程序,ARM
19、应用工程师,*.cfg,各种不同的Codec包:*.x64P,*.cfg,至此一个完整的达芬奇音视频应用程序就完成了,其中许多过程是通过脚本文件配置完成的,过程非常 简单易懂,下面我们需要在达芬奇上运行它,首先要加载DSPLINK和CMEM两个驱动程序模块,其中DSPLINK主要实现了ARM和DSP的底层通信,而CMEM则主要是完成在物理段上分配连续内存的功能,加载完这两个模块,这样便可直接运行已完成的应用程序。,达芬奇(DaVinci)软件开发-一般的视频应用系统中,Davinci的ARM负责操作系统应用,DSP负责运行音视频codec算法处理,ARM通过TI的Codec Engine机制调
20、用DSP侧的codec.,三、Codec Engine概述,Codec Engine概述-Codec Engine概述前面我们提到,应用工程师通过调用Codec Engine的API来调用和运行符合xDAIS的算法(关于API的具体信息,请参考sprue67.pdf第4章)。达芬奇技术体系中引入了Codec Engine,并创建了一整套的应用开发平台。Codec Engine为通用处理器(GPP)上的开发者提供更为简单的开发环境。在Davinci软件中,符合 xDAIS的音视频编解码算法(即xDM算法)的调用是通过Codec Engine的VISA API完成的。Codec Engine通过这
21、套API为算法的执行提供了一个标准的软件架构和接口,体现在以下几个方面:通过Codec Engine API调用的算法可以运行在本地(ARM侧)或者远端(DSP侧);2.Codec Engine可以基于ARMDSP、DSP或ARM上运行,GPP通过Codec Engine对其实行控制;3.无论Codec Engine运行在ARM还是DSP上,对应的Codec Engine API都是完全一致的;4.对于所有支持的不同处理器、运行方式及操作系统,Codec Engine都有相同的API.Codec Engine定义了4类编解码器算法接口标准,分别是Video、Image、Speech、Audio
22、,简称VISA.,Codec Engine概述-Codec Engine 概述,图1 达芬奇软件结构框图,Codec Engine是连接ARM和DSP或协处理器的桥梁,是介于应用层(ARM侧的应用程序)和信号处理层(DSP侧的算法)之间的软件模块。,ARM应用程序调用Codec Engine的VISA(Video,Image,Speech,Audio)API,如VIDENC_process(a,b,c)。Codec Engine的stub(ARM侧)会把参数a,b,c以及要调用DSP侧process这个信息打包,通过消息队列(message queue)传递到DSP。Codec Engine的
23、skeleton(DSP侧)会解开这个参数包,把参数a,b,c转换成DSP侧对应的参数x,y,z(比如ARM侧传递的是虚拟地址,而DSP只能认物理地址),DSP侧的DSP server(优先级较低,负责和ARM通信的任务)会根据process这一信息创建一个DSP侧的process(x,y,x)任务最终实现VIDENC_process(a,b,c)的操作。,Codec Engine入门第一步-Codec Engine入门第一步 Codec Engine 1.20 根目录下的release_notes_codec_engine_1_20.html。这个文档就是你了解Codec Engine的开始
24、,里面有关于该版本Codec Engine的介绍、相关文档资料的链接、新的功能、支持哪些芯片、已知的bug、修正了哪些bug及例子等等的具体说明。具体如图2蓝色字体所示。浏览 该文档后,初学者至少可以知道哪里可以找到自己想要的文档或例子。举例来说,如果想找相关的文档,点击 Documentation就可以看到这个Codec Engine文件包里的文档的链接。,图2 Codec Engine 1.20 Release Notes截图,Codec Engine入门第二步-Codec Engine入门第二步 点击Codec Engine的发布说明文档(如图2)的Validation Info,我们可
25、以知道Codec Engine 1.20需要和以下软件模块和工具配合使用:Framework Components 1.20.02 xDAIS 5.21 XDC Tools 2.93.01 DSP/BIOS Link 1.40.05,configured for the DM6446 EVM C6x Code Generation Tools version 6.0.8 DSP/BIOS 5.31.05 MontaVista Linux v4.0 Red Hat Enterprise Linux 3(SMP)因 此,我们需要在该Codec Engine安装的DVSDK文件包下面检查上面提到的软
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 达芬奇 软件 架构 开发 流程 重要
链接地址:https://www.31ppt.com/p-5861553.html