目录火龙果整理uml.org.cn达芬奇(DaVinci)软件开发目录火龙果整理uml.org.cn一、达芬奇软件架构及开发流程二、Codec创建DSPServer三、CodecEngine概述目录火龙果整理uml.org.cn达芬奇(DaVinci)软件开发---------------------------------------------------------------------------------------------------------------什么是达芬奇技术?TI的DaVinci™技术是一组专门为高效和引人注目的数字视频而设计的基于DSP的系统解决方案-----------------适用于数码摄像机、视频安全设备、高级医疗成像设备、便携式视频播放器或任何其它您能想象得到的视频应用。成功实现数字视频需要四大要素的最新进步,即:处理器、开发工具、软件以及系统专业技术。由于能够在集成这四种要素的平台中实现数字视频、音频、语音与话音技术,因此达芬奇技术可以为数字视频的当前变革打下基础。达芬奇技术充分利用了TI25年的数字信号处理与集成电路专业技术来提供系统级芯片(SoC),这种系统针对灵活的数字视频实施而进行了精心优化,拥有业界领先的性能并集成了可编程数字信号处理器(DSP)内核、ARM处理器以及视频加速协处理器。凭借高效的处理能力、存储器、I/O带宽、平衡的内部互连以及专用外设组合,基于达芬奇技术的SoC能够以最低的成本为视频应用提供理想的核心动力。处理器自身只能用作数字视频解决方案的基础。管理数字视频系统的所有组件是极其复杂的工程难题。对于许多应用来说,数字视频只是更为庞杂的系统的众多组件之一。工程师随意地在自视为基础技术方面投入大把时间和资金的好日子已经一去不复返了。目录火龙果整理uml.org.cn达芬奇(DaVinci)软件开发---------------------------------------------------------------------------------------------------------------为了真正意义上地让开发人员克服最初的障碍并且加快产品上市进程,仅仅开发实施数字视频的基础芯片和软件已经远远不够。开发人员不仅需要处理器,他们还需要能够直接投入生产的理想代码。换句话说,为了满足其应用的特定需求,开发人员还需要已经集成到可配置或轻松编程的数字视频子系统的硬件和软件。正像汇编语言向C语言的过渡使开发人员能够全力开发更高级功能性那样,达芬奇技术使开发人员能够摆脱数字视频的具体技术细节。现在,开发人员不再需要了解其视频应用中实施具体CODEC引擎(如:MPEG-2、H.263、WMA9)的细节。利用允许开发人员无需修改上层应用代码即可以使用理想CODEC的API,我们可以显著简化视频CODEC处理的具体低层次细节。摆脱CODEC的困扰是数字视频广泛普及的重要一步。当开发人员可以立足于以前开发的功能性,创新就已经来到他们眼前。例如,在过去开发电子器件时,即使是最基本的功能,工程师们也需要进行栅极布局。许多年来,TI等公司始终致力于在硅芯片中集成功能,为超越自身功能期望的器件打下了基础,同时也降低了实现预期目标所需要的工程量。例如,由于提供了显著加快信号处理任务的计算引擎,DSP的问世已经推动了数十载的技术创新。利用达芬奇技术,TI可以再度实现全新的创新水平。正是DSP的问世带来了计算加速,因此达芬奇技术会以TI的DSP为基础来提供应用加速。开发人员不再需要了解各种音频、视频、影像以及语音CODEC背后的机制。目录火龙果整理uml.org.cn一、达芬奇软件架构及开发流程目录火龙果整理uml.org.cnDavinci软件平台概述用户软件用户程序,框架,GUI设备驱动CodecAPIsARM/DSP通信Linux操作系统ARMRISCVideoImageSpeechAudioSocketNodesDSPLinkDSP/BIOSDSP外设目录火龙果整理uml.org.cnCodecEngine2.30EngineAlgorithmAPIAlgorithmAPIA-NodeTaskS-NodeTaskDSKT2DMAN3ACPY3RMANCodecEngineRemoteServerFrameworkComponents2.30xDMAPICodec/算法xDMAPICodec/算法OMAP-L137SoftwareArchitectureARM子系统DSP子系统Linux用户空间Linux内核空间TransportI/OI/OI/OUSB2.0DriverCMEMDriverMcASPDriverEMACDriverMMC/SDDriverSPIDriverLinuxAPIsLinkDriverUARTDriverDSP/BIOSLinkv1.6xDSP/BIOS5.3x应用程序OSALServerCCS3.3/CGTMontaVistaPro5.0ToolchainLCDDriverI2CDriverGPIODriverPSL目录火龙果整理uml.org.cnCodecEngine2.30EngineAlgorithmAPIDMAN3FrameworkComponents2.30C6747SoftwareArchitectureDSP系统USB2.0DriverMcASPI2CDriverCMEMDriverEDMADriverGPIODriverEMACDriverMMC/SDDriverSPIDriverUARTDriver应用程序ACPY3DSK2DMANDSP/BIOS5.32LCDDriverNANDDriverERTFSDriverCCS3.3/CGTxDMAPICodec/算法xDMAPICodec/算法功耗管理PowerManager(PWRM)PSL目录火龙果整理uml.org.cn达芬奇DMSoC软件概述---------------------------------------------------------------------------------------------------------------达芬奇DMSoC软件概述一般来讲,软件系统分为应用层、信号处理层和I/O层三部分,TI提供的达芬奇参考软件框架就是基于这样的结构,如下图所示。图1目录火龙果整理uml.org.cn达芬奇DMSoC软件概述---------------------------------------------------------------------------------------------------------------应用层:工程师可以在系统的用户空间在系统功能性上添加和发挥自己的特色。信号处理层:通常都运行在DSP一侧负责信号处理,包括Video/Audio编解码算法、CodecEngine、DSP的实时操作系统DSP/BIOS及和ARM通信的模块。信号处理层(SPL)一方面通过VISAAPI接口与应用层(APL)连接,另一方面则通过DSP/BIOS与底层内核沟通。I/O层:就是我们通常所说的驱动,是针对Davinci外设模块的驱动程序。其中应用层通过CodecEngine的VISAAPI来调用DSP侧的算法,通过EPSI(EasyPeripheralSoftwareInterface)API来访问和操作Davinci的外设。这三个部分通常对应三个Davinci软件开发小组。当然还需要一个系统集成工程师把这三个部分集成起来,不过VISAAPI和EPSIAPI的存在已经大大简化了集成工作的复杂程度。目录火龙果整理uml.org.cnCodecEngine概述---------------------------------------------------------------------------------------------------------------下图给出了这种框架的结构示意图。共享DDR2存储器----ARM与DSP之间共享内存,进行物理数据交换。DSPLink---------------双核通信的基础软件,为开发人员提供通用的API,用于描述ARM与DSP之间通信的物理链路的特征。引擎功能层------------用于管理算法对象的实例,例如创建一个对象的具体过程等。VISA层-----------------面向引擎功能层的一个接口,用于定义创建、删除和使用一个特定符合XDM标准的算法的进程。由于CodecEngine的主要任务是为从ARM发起的VISA命令控制远程的XDM算法起到一个管道的作用,因此VISA层实际上就代表了XDM接口层。目录火龙果整理uml.org.cn达芬奇软件架构及开发流程---------------------------------------------------------------------------------------------------------------下面就是一个完整的应用程序开发步骤:xDMNon-xDM可发布使用的Codec包VISAStubDSP算法工程师运行在DSP上的可执行程序:.cfg,.tcf,main()CodecServer集成工程师可执行应用程序ARM应用工程师各种引擎配置CodecEngine集成工程师*.cfgDSP/BIOS,FrameWorkComponent,DSPLink,xDCServer名称,Codec列表各种不同的Codec包:*.x64P,*.cfg*.a64P即*.lib*.x64P即*.out目录火龙果整理uml.org.cn达芬奇软件架构及开发流程---------------------------------------------------------------------------------------------------------------一个完整的应用程序开发步骤:xDMNon-xDM可发布使用的Codec包VISAStubDSP算法工程师*.a64P第一步:需要基于DSP利用CCS开发自己的音视频编解码算法,编译生成一个编解码算法的库文件*.lib(等同于Linux环境下的*.a64P,直接在Linux环境下修改文件后缀名即可)。由于需要确保算法可被CodecEngine使用和配置,所以要确保这些算法实现需要符合xDM(xDAIS(eXpressDSPAlgorithmInterfaceStandard)forDigitalMedia)标准。Codec主要完成音视频的核心算法,应用程序运行时被调用,并不参与其他功能。如果算法与XDM标准兼容,则可不经修改而直接被CodecEngine的VISAAPI远程执行;如不兼容,则需为其提供CodecEngine的框架和终端接口(具体请参考spraae7.pdf)。目录火龙果整理uml.org.cn达芬奇软件架构及开发流程---------------------------------------------------------------------------------------------------------------一个完整的应用程序开发步骤:第二步:将Codec集成到CodecEngine中。将第一步开发完成的Codec或已有的符合xDM的Codec集成到CodecEngine中,这一步需要配置两个JavaScript的脚本文件:*.cfg----表明Codec的使用和配置信息,*.tcf-----描述Codec在达芬奇上的内存分配的配置.配置好这两个文件后,使用make命令即可生成CodecEngine,其文件名一般为*.X64P(即.out文件).*.x64P(即.out文件)DSP端可执行程序,即DSPServer