达芬奇技术的几个学习资料

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

TIDAVINCI开发原理(总共5部分)DAVINCIDAVINCIDAVINCIDAVINCI开发原理之一开发原理之一开发原理之一开发原理之一----ARM----ARM----ARM----ARM端开发环境的建立端开发环境的建立端开发环境的建立端开发环境的建立(DVEVM)(DVEVM)(DVEVM)(DVEVM)1.对DAVINCI平台,TI在硬件上给予双核架构强有力的支撑,在DSP端用DSP/BIOS来支持音视频算法的运行,在ARM端用MontaVistaLinux(MV)来支持其对外设的管理。对于ARM与DSP之间的数据交互,则用CodeEngine和CodecServer来加以管理。2.在DAVINCI的开发程序分为codec部分和应用程序部分。开发应用程序前,需要搭建软硬件开发环境。硬件环境包括:DAVINCI开发板DVEVM(含TMS320DM6446的DSP和ARM的双核芯片及丰富的外设)、CCD摄像头、LCD显示器、硬盘(如果不用NFS来映射文件系统,则可通过本地的硬盘上的文件系统)、串口线。其次是与DVEVM配套的ARM端软件开发环境。环境搭建好后,需要对Linux主机进行相关配置才能使用DVEVM开发板。对嵌入式系统开发,开发板上首先需要一个bootloader来初始化硬件,然后会通过bootloader的参数设置来启动系统。如启动bootloader后,通过tftp来下载MVLinux内核镜像文件到内存运行内核,然后通过NFS来启动Linux主机上的目标文件系统,并通过DHCP服务器来为开发板分配IP地址,这样就可以进行基于IP的网络视频应用开发。下面配置ARM端软件开发环境的各个模块。3.TFTP服务器的配置:检查Linux是否安装了TFTP服务$rpm-qa|greptftptftp-0.32-4tftp-server-0.32-4否则从Linux安装盘重新用rpm安装tftp相关模块,并打开tftp的服务。4.配置NFS服务器:NFS是一种在网络上的机器间共享文件的方法,文件就如同位于客户的本地硬盘驱动器上一样。可以将之看成是一种文件系统的格式,RedHatLinux既可以是NFS服务器也可以是NFS客户,这意味着它可以把文件系统导出给其他系统,也可以挂载从其他机器上导入的文件系统。DVEVM的NFS主要用来把主机Linux上的MVLinux映射到DVEVM板上去,使得DVEVM在自身无文件系统的情形下,可以正常的执行各种任务。5.DHCP服务器的配置:配Linux主机和DVEVM的IP。比较简单。6.bootloader的烧写:是操作系统内核运行前运行的一段程序,通过这段程序来初始化硬件设备、建立内存空间的映射表,从而将系统的软硬件环境初始化,以便为最终调用操作系统内核准备正确的环境,烧写前准备如下软硬件设施:软件部分:U-Bootimage(即文件u-boot.bin);文件falshwriter.out;CCS3.2或以上版本硬件部分:连接到DAVINCIDVEVM的JTAG硬件仿真器;一条连接PC与DACINCIDVEVM的RS323的串口线;跳线J4应该被标识为CS2SELECT,并确认FLASH被选择;使S3的1和2设置为OFF准备好上述软硬环境后,即可以开始烧写了,烧写例程见附录(U-bootexample.rar),烧写过程很简单,累死emulation.7.设置DVEVM的启动参数#setenvbootargsconsole=ttyS0,115200n8noinitrdrwip=......详细参数说明见U-BOOT说明文档。至此,我们ARM端的初步开发环境建立起来了,可以做一些比较简单的开发程序,如例:$mkdir~/workdir/filesys/ope/hello$cd~/workdir/filesys/ope/hello$vihello.c#includestdio.hintmain(){printf(helloworld!welcometoDAVINCItest);return0;}$arm_v5t_le-gcchello.c-ohello/*保存后,用交叉编译工具arm_v5t_le-gcc编译程序:*/#cd/opt/hello/*编译生成二进制文件hello后,启动DAVINCIDVEVM板,通过超级终端运行下命令*/#./helloDAVINCIDAVINCIDAVINCIDAVINCI开发原理之二开发原理之二开发原理之二开发原理之二----DSP----DSP----DSP----DSP端开发环境的建立端开发环境的建立端开发环境的建立端开发环境的建立(DVSDK)(DVSDK)(DVSDK)(DVSDK)在一中只是建立了DVEVM的开发环境,只能进行ARM端程序的开发,如果需要开发DSP端的算法就还需要安装使用DVSDK,该软件包包括如下内容:MontaVistaLinuxProfessionEditionv4:相对于DVEVM发布的montavistalinuxdemo版本来说,这个完全专业版包含了DevRocketIDE和相关服务支持,要全面的多;DM6446xSoCAnalyzer(DSA):这个软件是安装在windowsOS上的,用来观测分析DSP端和ARM上运行中程序的负载、资源冲突以及性能瓶颈等,不是一定得要,我没有使用过,好像是要另外付费的;DSP/BIOSforlinux:DSP/BIOS是一个可升级的实时DSP内核,linux版本相对于window版本来说,不包含相应的图形分析工具;TICodegenToolsforlinux:与DSP相关的一些编译、连接工具;FrameworkComponents:主要是用来支持DSP端算法开发的一些模块,能够管理符合xDAIS标准的算法模块,分配内存和DMA资源。这些模块是被CE来使用的,但如果有必要在DSP端程序也可以使用它们;DigitalVideoTestBench(DVTB):这是一个在ARM端运行,基于脚本语言的测试codec的应用程序。用户不需要写任何C代码就可以处理LinuxI/O,codecAPI以及一些与线程有关的问题;CCS:运行在windowsOS上的集成开发环境,用来开发基于DSP的应用程序和相关算法;有了以上DVSDK相关套件,就可以构建DSP端的相关开发组建,其中CodecEngineRomoteServer运行在DSP/BIOS上,而在RS中封装了相关算法,在算法的封装中要用到一些xDAIS的框架组件。DSP和GPP之间的通讯由DSP/BIOSLink来完成。1.DVSDK的安装与配置安装:linux下的操作,比较简单,只是要注意DVSDK的版本必须与DVEVM版本号一致。且最好把相关的DVSDK安装在dvevm_#_#_#下。配置:在dvevm_#_#_#目录下的Rules.make文件控制了大部分的编译行为,该文件被dvevm_#_#_#目录及其一些子目录下的Makefile文件所包含,对DSP端应用程序的编译需要修改相应的文件,具体根据你实际DVSDK软件包的安装路径。里面要求指定DVEVM、CE、XDAIS、DSPLINK、CMEM、codecserver、RTSC、FC、DSP/BIOS、linuxkernel等等包的路径。2.DVTB的安装和使用数字视频测试平台(DVTB)是不用C代码而直接利用一些脚本语言来测试DSP端算法的工具。在DVSDK安装后,会在dvevm_#_#_#目录下有个dvtb的目录,就在此执行安装,然后到DSP的可执行目录下去运行(DSP的可执行目录下必须要有cmemk.ko,dsplink.ko等文件),如/nfshost/mydemos.DVTB的命令语法如下:Commandclassoptions通过DVTB命令,可以控制audio/vpbe/bpfe等外设或各音视频编解码器,来完成一些测试工作。具体安装过程和命令使用方法可以参考:\opt\dvevm_#_#_#\dvtb_#_#\目录下文档。暂时还没有用到。3.XDC(ExpressDSPComponent)的配置XDC是用来编译和打包的工具,能够创建实时软件组件包RTSC(RealTimeSoftwareComponent).与其他编译工具一样,它能根据源文件和库文件编译生成可执行文件。不同的是它能够自动的进行性能优化和版本控制。XDC还能够根据所提供的配置脚本语言产生代码,这一特性在编译如编解码器、服务器和引擎等可执行程序时尤为重要。XDC的调用语法格式:XDCtargetfilesXDCPATHXDCBUILDCFGtargetfiles:指编译产生的目标文件。可以通过命令脚本来指定要产生哪些目标文件;XDCPTH:编译时所要查找的目录;XDCBUILDCFG:由config.bld文件指定,包含了与平台有关的编译指令。后面细说。以上命令模式可能在参数过多是很复杂,通常把它写成shell脚本来运行。与XDC相关的三个配置文件:package.xdc:主要包含与包package有关的信息:依赖信息、模块信息、版本信息。由自己提供。package.bld:主要作用是定义一个包应该如何被编译。文件内容用Javascript来描述。其中包含目标平台集的定义[MVArm9,Linux86]、编译版本的定义[release]、确定源文件集、生成的可执行文件信息等等。这两个文件都是在server目录下,可见每个codec都有自己的package信息描述文件,然后XDC根据再依之生成一个package包。config.bld:这个文件处在codec_engine_##目录下,为各个codec所共有,它主要定义了与平台有关的特性,包含如下几部分:DSPTarget、ArmTarget、LinuxHostTarget、BuildTargets、Pkg.attrs.Profile、Pkg.lib等具体信息。通常都是基于TI提供的模板对这三个配置文件做修改。DAVINCIDAVINCIDAVINCIDAVINCI开发原理之三开发原理之三开发原理之三开发原理之三----------------达芬奇编解码引擎达芬奇编解码引擎达芬奇编解码引擎达芬奇编解码引擎CodecCodecCodecCodecEngine(CE)Engine(CE)Engine(CE)Engine(CE)DaVinci是DSP和ARM双核架构的SOC芯片。对芯片与外界的交互通过ARM端的MontavistaLinux和相关驱动与应用程序来管理,DSP端只处理编解码相关的算法。DSP和ARM之间的通讯和交互是通过引擎(Engine)和服务器(Server)来完成的。1.编解码引擎(CodecEngine)a.核心引擎API从应用来说,CE就是用来调用xDAIS算法的一组API的集合,用户可以通过这些API来实例化和调用xDAIS算法。达芬奇提供了一组VISA接口,用于给应用程序与xDM兼容的xDAIS算法相交互。需要注意,不管算法是运行在本地(ARM端),还是远端(DSP端),也不管硬件体系是只有ARM或是只有DSP或两者都有,也不管OS是Linux、VxWorks、DSP/BIOS,还是WinCE,对算法的接口调用都是一致的。这点通过引擎的配置文件*.cfg可以看出来,而且通过配置文件可以决定自己的codec是运行在ARM端还是DSP端。CE包括核心引擎API和VISAAPI,核心引擎API相关接口模块为:初始化模块(CERuntime_)、CE运行时模块(Engine_)、抽象层内存模块(Memory_);VISAAPI的接口模块我们常用的有:视频编码接口(VIDENCx_)、视频解码接口(VIDDECx_)、音频编码接口(AUDENCx_)、音频解码接口(AUDDECx_),各模块分别包含在对应的头文件中。应用程序必须使用CE的核心引擎的三个相关模块去打

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功