《某软件架构及开发流程讲义.pptx》由会员分享,可在线阅读,更多相关《某软件架构及开发流程讲义.pptx(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录目录目录目录达芬奇达芬奇(DaVinci)软件开发软件开发目录目录目录目录一、达芬奇软件架构一、达芬奇软件架构及开发流程及开发流程二、二、Codec创建创建DSPServer三、三、CodecEngine概述概述目录目录目录目录达芬奇达芬奇(DaVinci)软件开发软件开发-什么是达芬奇技术?什么是达芬奇技术?TI的DaVinci技术技术是一组专门为高效和引人注目的数字视频而设计的基于DSP的系统解决方案-适用于数码摄像机、视频安全设备、高级医疗成像设备、便携式视频播放器或任何其它您能想象得到的视频应用。成功实现数字视频需要四大要素的最新进步,即:处理器、开发工具、软件以及系统专业技术。由
2、于能够在集成这四种要素的平台中实现数字视频、音频、语音与话音技术,因此达芬奇技术可以为数字视频的当前变革打下基础。达芬奇技术充分利用了TI25年的数字信号处理与集成电路专业技术来提供系统级芯片(SoC),这种系统针对灵活的数字视频实施而进行了精心优化,拥有业界领先的性能并集成了可编程数字信号处理器(DSP)内核、ARM处理器以及视频加速协处理器。凭借高效的处理能力、存储器、I/O带宽、平衡的内部互连以及专用外设组合,基于达芬奇技术的SoC能够以最低的成本为视频应用提供理想的核心动力。处理器自身只能用作数字视频解决方案的基础。管理数字视频系统的所有组件是极其复杂的工程难题。对于许多应用来说,数字
3、视频只是更为庞杂的系统的众多组件之一。工程师随意地在自视为基础技术方面投入大把时间和资金的好日子已经一去不复返了。目录目录目录目录达芬奇达芬奇(DaVinci)软件开发软件开发-为了真正意义上地让开发人员克服最初的障碍并且加快产品上市进程,仅仅开发实施数字视频的基础芯片和软件已经远远不够。开发人员不仅需要处理器,他们还需要能够直接投入生产的理想代码。换句话说,为了满足其应用的特定需求,开发人员还需要已经集成到可配置或轻松编程的数字视频子系统的硬件和软件。正像汇编语言向C语言的过渡使开发人员能够全力开发更高级功能性那样,达芬奇技术使开发人员能够摆脱数字视频的具体技术细节摆脱数字视频的具体技术细节
4、。现在,开发人员不再需要了解其视频应用中实施具体CODEC引擎(如:MPEG-2、H.263、WMA9)的细节。利用允许开发人员无需修改上层应用代码即可以使用理想CODEC的API,我们可以显著简化视频CODEC处理的具体低层次细节。摆脱CODEC的困扰是数字视频广泛普及的重要一步。当开发人员可以立足于以前开发的功能性,创新就已经来到他们眼前。例如,在过去开发电子器件时,即使是最基本的功能,工程师们也需要进行栅极布局。许多年来,TI等公司始终致力于在硅芯片中集成功能,为超越自身功能期望的器件打下了基础,同时也降低了实现预期目标所需要的工程量。例如,由于提供了显著加快信号处理任务的计算引擎,DS
5、P的问世已经推动了数十载的技术创新。利用达芬奇技术,TI可以再度实现全新的创新水平。正是DSP的问世带来了计算加速,因此达芬奇技术会以TI的DSP为基础来提供应用加速。开发人员不再需要了解各种音频、视频、影像以及语音CODEC背后的机制。目录目录目录目录一、达芬奇软件架构一、达芬奇软件架构及开发流程及开发流程目录目录目录目录Davinci软件平台概述软件平台概述用户软件用户软件用户程序,框架,GUI设备驱动CodecAPIsARM/DSP通信通信Linux操作系统操作系统ARMRISCVideoImageSpeechAudioSocketNodesDSPLinkDSP/BIOSDSP外设目录目
6、录目录目录Codec Engine 2.30EngineAlgorithm APIAlgorithm APIA-NodeTaskS-NodeTaskDSKT2DMAN3 ACPY3RMANCodec Engine RemoteServerFramework Components 2.30 xDMAPICodec/算法算法xDMAPICodec/算法算法OMAP-L137SoftwareArchitectureARM 子系统DSP 子系统Linux用户空间用户空间Linux内核空间内核空间TransportI/OI/OI/OUSB 2.0 DriverCMEM DriverMcASPDriver
7、EMAC DriverMMC/SD DriverSPI DriverLinux APIsLink DriverUART DriverDSP/BIOS Link v1.6xDSP/BIOS 5.3x应用程序OSALServerCCS 3.3/CGTMontaVista Pro 5.0 ToolchainLCD DriverI2C DriverGPIO DriverPSL目录目录目录目录Codec Engine 2.30EngineAlgorithm APIDMAN3Framework Components 2.30C6747SoftwareArchitectureDSP 系统USB 2.0 Dr
8、iverMcASPI2C DriverCMEM DriverEDMADriverGPIO DriverEMAC DriverMMC/SD DriverSPI DriverUART Driver应用程序ACPY3DSK2DMANDSP/BIOS 5.32LCD DriverNANDDriverERTFS DriverCCS 3.3/CGTxDMAPICodec/算法算法xDMAPICodec/算法算法功耗管理Power Manager(PWRM)PSL目录目录目录目录达芬奇达芬奇DMSoC软件概述软件概述-达芬奇达芬奇DMSoC软件概述软件概述一般来讲,软件系统分为应用层应用层、信号处理层信号处
9、理层和I/O层层三部分,TI提供的达芬奇参考软件框架就是基于这样的结构,如下图所示。图图1目录目录目录目录达芬奇达芬奇DMSoC软件概述软件概述-应用层:应用层:工程师可以在系统的用户空间在系统功能性上添加和发挥自己的特色。信号处理层:信号处理层:通常都运行在DSP一侧负责信号处理,包括Video/Audio编解码算法、CodecEngine、DSP的实时操作系统DSP/BIOS及和ARM通信的模块。信号处理层(SPL)一方面通过VISAAPI接口与应用层(APL)连接,另一方面则通过DSP/BIOS与底层内核沟通。I/O层层:就是我们通常所说的驱动驱动,是针对Davinci外设模块的驱动程序
10、。其中应用层通过CodecEngine的VISAAPI来调用DSP侧的算法,通过EPSI(EasyPeripheralSoftwareInterface)API来访问和操作Davinci的外设。这三个部分通常对应三个Davinci软件开发小组。当然还需要一个系统集成工程师把这三个部分集成起来,不过VISAAPI和EPSIAPI的存在已经大大简化了集成工作的复杂程度。目录目录目录目录CodecEngine概述概述-下图给出了这种框架的结构示意图。共享共享DDR2存储器存储器-ARM与DSP之间共享内存,进行物理数据交换。DSPLink-双核通信的基础软件,为开发人员提供通用的API,用于描述AR
11、M与DSP之间通信的物理链路的特征。引擎功能层引擎功能层-用于管理算法对象的实例,例如创建一个对象的具体过程等。VISA层层-面向引擎功能层的一个接口,用于定义创建、删除和使用一个特定符合XDM标准的算法的进程进程。由于CodecEngine的主要任务是为从ARM发起的VISA命令控制远程的XDM算法起到一个管道的作用,因此VISA层实际上就代表了XDM接口层。目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-下面就是一个完整的应用程序开发步骤:xDMNon-xDM可发布使用的可发布使用的Codec包包VISAStubDSP算法工程师算法工程师运行在运行在DSP上的可执行程序:
12、上的可执行程序:.cfg,.tcf,main()CodecServer集成工程师集成工程师可执行应用程序可执行应用程序ARM应用工程师应用工程师各种引擎配置各种引擎配置CodecEngine集成工程师集成工程师*.cfgDSP/BIOS,FrameWorkComponent,DSPLink,xDCServer名称,名称,Codec列表列表各种不同的各种不同的Codec包:包:*.x64P,*.cfg*.a64P即即*.lib*.x64P即即*.out目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:一个完整的应用程序开发步骤:xDMNon-xDM可发
13、布使用的可发布使用的Codec包包VISAStubDSP算法工程师算法工程师*.a64P第一步:第一步:需要基于DSP利用CCS开发自己的音视频编解码算法,编译生成一个编解码算法的库库文件*.lib(等同于Linux环境下的*.a64P,直接在Linux环境下修改文件后缀名即可)。由于需要确保算法可被CodecEngine使用和配置,所以要确保这些算法实现需要符合xDM(xDAIS(eXpressDSPAlgorithmInterfaceStandard)forDigitalMedia)标准。Codec主要完成音视频的核心算法,应用程序运行时被调用被调用,并不参与其他功能。如果算法与XDM标准
14、兼容,则可不经修改而直接被CodecEngine的VISAAPI远程执行;如不兼容,则需为其提供CodecEngine的框架和终端接口(具体请参考spraae7.pdf)。目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:一个完整的应用程序开发步骤:第二步:第二步:将Codec集成到集成到CodecEngine中。将第一步开发完成的Codec或已有的符合xDM的Codec集成到CodecEngine中,这一步需要配置两个JavaScript的脚本文件:*.cfg-表明Codec的使用和配置信息,*.tcf-描述Codec在达芬奇上的内存分配的配置.配
15、置好这两个文件后,使用make命令即可生成CodecEngine,其文件名一般为*.X64P(即.out文件).*.x64P(即.out文件)DSP端可执行程序端可执行程序,即DSPServer,可被ARM端的应用程序直接调用。对达芬奇的软件来说,DSPServer也叫CodecServer运行在运行在DSP上的可执行程序:上的可执行程序:.cfg,.tcf,main()CodecServer集成工程师集成工程师*.x64PDSP/BIOS,FrameWorkComponent,DSPLink,xDC目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:
16、一个完整的应用程序开发步骤:由于在双核环境中,CodecEngine是在是在DSP上执行上执行,而操作系统是由ARM通过VISAAPI控制CodecEngine,所以必须先在远程的DSP生成一个CodecServer。CodecServer是后缀为.x64P的文件,是一个集成了编解码器、框架元件和系统代码的二进制库。CodecServer包含了一个为相应客户端(ARM)生成编解码器、提供系统运行信息(包括指令和内存使用情况)的DSPBIOS任务线程;客户端(ARM)的应用程序通过使用VISAAPI与在远程DSP上的编解码器联系。运行在运行在DSP上的可执行程序:上的可执行程序:.cfg,.tc
17、f,main()CodecServer集成工程师集成工程师*.x64PDSP/BIOS,FrameWorkComponent,DSPLink,xDC目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:一个完整的应用程序开发步骤:第三步:第三步:开发音视频应用程序应用程序(ARM),并在其中调用调用CodecEngine在Linux下开发音视频应用程序,包括用户界面,音视频的采集、播放、同步等,其中完成对CodecEngine的调用,应用程序也要完成一个扩展名为.cfg的脚本配置文件,以表明对CodecEngine的使用状况.引擎配置引擎配置(通过配置工
18、具配置工具),写入到.cfg文件引擎配置的工作,包括引擎的名字、每个引擎中包含什么编解码器、编解码器是本地执行还是远程执行等,如果这些编解码器在远程执行的,则还需配置相应的CodecServer。一般将所有的配置写到一个.cfg文件里面(具体说明,请参考sprue67.pdf的第5章IntegratinganEngine).各种引擎配置各种引擎配置CodecEngine集成工程师集成工程师Server名称,名称,Codec列表列表*.cfg目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:一个完整的应用程序开发步骤:第四步:第四步:ARM应用工程师利
19、用CoedcEngine的应用编程接口createdelete配置好的引擎实例,进而createdelete和控制编解码器。ARM应用工程师收到不同的codec包、DSPServer和Engine配置文件*.cfg,把自己的应用程序通过编译、链接,最终生成ARM端可执行代码端可执行代码。ARM应用工程师可使用以下资源:a.从算法开发工程师得到的大量的编解码器软件包(*.lib);b.从服务集成工程师得到一个可以在DSP上运行的CodecServer二进制文件,一般为.x64P文件;c.从引擎集成工程师得到一个引擎配置文件,一般为.cfg文件。可执行应用程序可执行应用程序ARM应用工程师应用工程
20、师*.cfg*.lib,*.x64P,*.cfg目录目录目录目录达芬奇软件架构达芬奇软件架构及开发流程及开发流程-一个完整的应用程序开发步骤:一个完整的应用程序开发步骤:由于CodecEngine不参与任何的I/O操作,只是纯粹的视频编解码算法处理,因此应用工程师需要管理I/O,包括文件操作(文件的打开、读写与存储等)和外设操作(外设的打开、关闭与控制等)。至此,即可加载加载DSPLINK和和CMEM模块,运行应用程序模块,运行应用程序.可执行应用程序可执行应用程序ARM应用工程师应用工程师*.cfg各种不同的各种不同的Codec包:包:*.x64P,*.cfg至此一个完整的达芬奇音视频应用程
21、序就完成了,其中许多过程是通过脚本文件配置完成的,过程非常简单易懂,下面我们需要在达芬奇上运行它,首先要加载DSPLINK和CMEM两个驱动程序模块,其中DSPLINK主要实现了ARM和DSP的底层通信底层通信,而CMEM则主要是完成在在物理段上分配连续内存的功能物理段上分配连续内存的功能,加载完这两个模块,这样便可直接运行已完成的应用程序。目录目录目录目录达芬奇达芬奇(DaVinci)软件开发软件开发-一般的视频应用系统中,Davinci的ARM负责操作系统应用操作系统应用,DSP负责运行音视频音视频codec算法处理算法处理,ARM通过TI的CodecEngine机制机制调用调用DSP侧的
22、codec.目录目录目录目录三、三、CodecEngine概述概述目录目录目录目录CodecEngine概述概述-CodecEngine概述概述前面我们提到,应用工程师通过调用CodecEngine的API来调用调用和运行符合xDAIS的算法(关于API的具体信息,请参考sprue67.pdf第4章)。达芬奇技术体系中引入了CodecEngine,并创建了一整套的应用开发平台。CodecEngine为通用处理器(GPP)上的开发者提供更为简单的开发环境。在Davinci软件中,符合xDAIS的音视频编解码算法(即xDM算法)的调用是通过CodecEngine的VISAAPI完成的。CodecE
23、ngine通过这套API为算法的执行提供了一个标准的软件架构和接口,体现在以下几个方面:1.通过CodecEngineAPI调用的算法可以运行在本地(ARM侧)或者远端(DSP侧);2.CodecEngine可以基于ARMDSP、DSP或ARM上运行,GPP通过CodecEngine对其实行控制控制;3.无论CodecEngine运行在ARM还是DSP上,对应的CodecEngineAPI都是完全一致的;4.对于所有支持的不同处理器、运行方式及操作系统,CodecEngine都有相同的相同的API.CodecEngine定义了4类编解码器算法接口标准,分别是Video、Image、Speech
24、、Audio,简称VISA.目录目录目录目录CodecEngine概述概述-CodecEngine概述概述图1 达芬奇软件结构框图CodecEngine是连接ARM和DSP或协处理器的桥梁,是介于应用层(ARM侧的应用程序)和信号处理层(DSP侧的算法)之间的软件模块。ARM应用程序调用CodecEngine的VISA(Video,Image,Speech,Audio)API,如VIDENC_process(a,b,c)。CodecEngine的stub(ARM侧)侧)会把参数a,b,c以及要调用DSP侧process这个信息打包,通过消息队列(messagequeue)传递到DSP。Code
25、cEngine的skeleton(DSP侧)侧)会解开这个参数包,把参数a,b,c转换成DSP侧对应的参数x,y,z(比如ARM侧传递的是虚拟地址,而DSP只能认物理地址),DSP侧的DSPserver(优先级较低,负责和ARM通信的任务)会根据process这一信息创建一个DSP侧的process(x,y,x)任务最终实现VIDENC_process(a,b,c)的操作。目录目录目录目录CodecEngine入门第一步入门第一步-CodecEngine入门第一步入门第一步CodecEngine1.20根目录下的release_notes_codec_engine_1_20.html。这个文档
26、就是你了解CodecEngine的开始,里面有关于该版本CodecEngine的介绍、相关文档资料的链接、新的功能、支持哪些芯片、已知的bug、修正了哪些bug及例子等等的具体说明。具体如图2蓝色字体所示。浏览该文档后,初学者至少可以知道哪里可以找到自己想要的文档或例子。举例来说,如果想找相关的文档,点击Documentation就可以看到这个CodecEngine文件包里的文档的链接。图2 Codec Engine 1.20 Release Notes截图目录目录目录目录CodecEngine入门第二步入门第二步-CodecEngine入门第二步入门第二步点击CodecEngine的发布说明
27、文档(如图2)的ValidationInfo,我们可以知道CodecEngine1.20需要和以下软件模块和工具配合使用配合使用:FrameworkComponents1.20.02xDAIS5.21XDCTools2.93.01DSP/BIOSLink1.40.05,configuredfortheDM6446EVMC6xCodeGenerationToolsversion6.0.8DSP/BIOS5.31.05MontaVistaLinuxv4.0RedHatEnterpriseLinux3(SMP)因此,我们需要在该CodecEngine安装的DVSDK文件包下面检查上面提到的软件模块和工具是否安装,版本是否正确。否则,可能会编译不过CodecEngine的例子。那么,什么是FrameworkComponents,什么是xDAIS,什么又是XDCTools呢?你可以分别到它们的根目录下浏览它们各自的发布说明文档,做一个总体的了解。这里我们简单介绍一下,可以帮助大家尽快找到和自己相关的重点及资源。目录目录目录目录CodecEngine入门第二步入门第二步-1)FrameworkComponents是TI提供的一个软件模块,负责负责DSP侧的侧的memory和和DMA资源管理资源管理。因此,DSP算法工程师需要了解这个软件模块。http:/