达芬奇软件架构.doc

上传人:最*** 文档编号:1645768 上传时间:2019-11-01 格式:DOC 页数:12 大小:23.39KB
返回 下载 相关 举报
达芬奇软件架构.doc_第1页
第1页 / 共12页
达芬奇软件架构.doc_第2页
第2页 / 共12页
达芬奇软件架构.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
WORD格式 可编辑Davinci架构的由三个部分组成,即:codecs,servers,apps(算法,算法服务器,应用。)codecs是不能单独成为程序的,它是以库的形式提供给,servers,apps。servers是dsp可以运行的程序(包括操作系统)。Apps是arm端linux操作系统下的一个应用程序。下面分别讲解这三个部分的构成。1.codecs进入jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/codecs$ lsauddec1_copy imgdec1_copy package.xdc universal_copy videnc1_copyauddec1_ires imgdec_copy scale vidanalytics_copy videnc_copyauddec_copy imgenc1_copy sphdec1_copy viddec1_copy vidtranscode_copyaudenc1_copy imgenc_copy sphdec_copy viddec2_copyaudenc_copy makefile sphenc1_copy viddec2split_copyg711 package sphenc_copy viddec_copy我们可以看到已经有很多算法了。我们看其中一个:jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/codecs/viddec_copy$ lslib package.bld viddec_copy.c VIDDEC_COPY.xdcmakefile package.xdc viddec_copy_ti.h VIDDEC_COPY.xspackage package.xs viddec_copy_ti_priv.h可以看出,一个算法有1.makefile文件,我们编译算法执行make的时候就是使用的makefile.2.viddec_copy_ti_priv.h, viddec_copy_ti.h, viddec_copy_ti.h是算法的源代码。3.Lib目录是编译后生成的库放在这个文件夹里。jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/codecs/viddec_copy/lib$ lsviddec_copy.a470uC viddec_copy.a64P viddec_copy.a674 viddec_copy.a86U viddec_copy.av4TCE viddec_copy.av5T可以看到有各个平台的库文件。4.package文件夹是存放编译过程的中间文件。5.package.bld,package.xdc ,package.xs,VIDDEC_COPY.xs,VIDDEC_COPY.xdc是配置文件,xdc能够识别的配置文件。 package.bldbld就是build的意思,所以这个文件是和编译配置相关的,比如是debug,还是release版本,源文件包包含哪些,以及要编译的目标平台版本,x86,linux,C64P,还是 MVARM9。这个目标平台的配置来自config.bld文件,这个文件位于CE_INSTALL_DIR/examples下,你可以修改来达到定制,这里面默认是从xdcpath.mak文件里配置读取的。var SRCS = viddec_copy;for (var i = 0; i Build.targets.length; i+) var targ = Build.targetsi;print(building for target + targ.name + .);/* Add a library to this package and add the files described in* SRCS to the library.*/Pkg.addLibrary(lib/viddec_copy, targ).addObjects(SRCS);这个就是生成各个平台的库。 package.xdc.就是静态属性配置文件,比如算法的名称,依赖项包和配置等文件。requires ti.sdo.ce.video;依赖这个包package ti.sdo.ce.examples.codecs.viddec_copy module VIDDEC_COPY;上面这个语句说明这个算法的包所在路径是ti.sdo.ce.examples.codecs.viddec_copy 它包含唯一的一个模块VIDDEC_COPY,这个其实想当于告诉xdc会包含module的xdc,xs,这里是VIDDEC_COPY.xdc,VIDDEC_COPY.xs配置文件. package.xs.这个是动态属性配置文件,这些属性会根据平台,配置不一样而不一样。比如:function getLibs(prog)var suffix = prog.build.target.findSuffix(this);if (suffix = null) return ();var name = lib/viddec_copy.a + suffix;print( will link with + this.$name + : + name);return (name);这个语句返回这个算法所引出的包,比如servers,apps就需要。一般算法编译的时候会编译多种平台的包,故需要有一个能够获取不同包位置的配置。 VIDDEC_COPY.xdc.具体算法的静态配置文件,这个文件名字必须匹配package.xdc中module的名字。包括这个算法的接口类型,实现。metaonly module VIDDEC_COPY inherits ti.sdo.ce.video.IVIDDECoverride readonly config String ialgFxns = VIDDECCOPY_TI_VIDDECCOPY;inherits ti.sdo.ce.video.IVIDDEC,这个表明这个算法是一个VSIA中的视频解码算法。ialgFxns = VIDDECCOPY_TI_VIDDECCOPY;表明这个算法的在代码的变量名称是 VIDDECCOPY_TI_VIDDECCOPY,用来向外面导出算法实现函数集变量。 VIDDEC_COPY.xs.这个定义了这个算法的一些动态属性,必须实现.xdc中接口的方法。比如堆栈的大小。function getStackSize(prog)if (verbose) print(getting stack size for + this.$name+ built for the target + prog.build.target.$name+ , running on platform + prog.platformName);return (1024);/* = getDaramScratchSize =*/function getDaramScratchSize(prog)if (verbose) print(getting DARAM scratch size for + this.$name+ built for the target + prog.build.target.$name+ , running on platform + prog.platformName);return (0);再看servers:jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/servers/all_codecs$ lsall.cfg all_evm3530.tci all_evmDM6446.tci all_evmOMAPL137.tci all.tcf link.cmd makefile package.bld package.xdcall_evm2530.tci all_evmDM357.tci all_evmDM6467.tci all_sdp3430.tci bin main.c packagemakefile package.bld,package.xdc和上面没有本质区别。var serverName = my_server;/这个要匹配.xdc中定义的package namePkg.attrs.profile = release;Link.cmd是链接配置文件 。Bin是编译后的程序所在的目录.Package也是编译过程中的中间中间,比如根据配置生成的all_x64p.c,all_x64p.jsmain.c是算法执行前要执行的程序.各个平台的DSP/BIOS内存配置文件x.tci.在这里大家可以配置DDR,SHRMM,resetvec等内存区域的地址和大小:比如all_evm3530.tci 中var mem_ext = comment: DDRALGHEAP: off-chip memory for dynamic algmem allocation,name: DDRALGHEAP,base: 0x86000000,len: 0x01800000, / 24 MBspace: code/data,comment: DDR2: off-chip memory for application code and data,name: DDR2,base: 0x87800000,len: 0x00600000, / 6 MBspace: code/data,comment: DSPLINK: off-chip memory reserved for DSPLINK code and data,name: DSPLINKMEM,base: 0x87E00000,len: 0x00100000, / 1 MBspace: code/data,comment: RESET_VECTOR: off-chip memory for the reset vector table,name: RESET_VECTOR,base: 0x87F00000,len: 0x00001000, / 4 KBspace: code/data,comment: L4CORE: L4-Core Interconnect Address Space,name: L4CORE,base: 0x48000000,len: 0x01000000, / 16 MBspace: data,comment: L4PER: L4-Peripheral Interconnect Address Space,name: L4PER,base: 0x49000000,len: 0x00100000, / 1 MBspace: data,comment: IVA Memory Management Unit,name: IVAMMU,base: 0x5D000000,len: 0x00001000, / 4 KBspace: data; servername.cfg. The Codec Server configuration script.这个是服务器的配置文件,比如这个算法服务器会包含哪些算法,其算法线程的堆栈,优先级等属性.Server.threadAttrs.stackSize = 4096;/堆栈/* The servers execution priority */Server.threadAttrs.priority = Server.MINPRI;/优先级Server.algs = name: viddec_copy, mod: VIDDEC_COPY, threadAttrs: stackMemId: 0, priority: Server.MINPRI + 2, groupId : 0,name: videnc_copy, mod: VIDENC_COPY, threadAttrs: stackMemId: 0, priority: Server.MINPRI + 2, groupId : 0,name: imgdec_copy, mod: IMGDEC_COPY, threadAttrs: stackMemId: 0, priority: Server.MINPRI + 3,/包含的算法. servername.tcf. The DSP/BIOS configuration script.上面的all.cfg文件,DSP/BIOS配置文件,它配置dsp端的操作系统,时钟频率,内核,动态堆配置,内存块配置(大小,位置).主要静态配置如下方面 The base DSP/BIOS kernel Memory section names, sizes, and locations这个由其包含的一个平台的tci文件配置,.tci会创建mem_ext变量。 Platform-specific attributes such as clock rates平台属性时钟频率 Enables the task manager and dynamic heap allocation这个编译后会在bin文件夹下生成两个文件:jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/servers/all_codecs$ ls bin/ti_platforms_evm3530/all_pm.x64P all.x64Papp端:jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_copy$ lsapp.c local.tcf main_BIOS.c makefile package.xdc smain.hlocal.cfg main_native.c package.bld remote.cfgMain_bios.c是 dsp端初始程序(dsp_local时).main_native.c是 arm端初始的程序.Package.xdc一样.Package.bld也一样.Remote.cfg是配置算法远程模式时的配置文件:配置使用哪个算法服务器.var serverName = bin/ +/ replace all : and . with _ in platform nameplatform.replace(/:/g, _).replace(/./g, _) +/all.x + remoteSuffix;var Engine = xdc.useModule(ti.sdo.ce.Engine);var myEngine = Engine.createFromServer(video_copy, / Engine name (as referred to in the C app)/ path to server exe, relative to its package dirserverName,ti.sdo.ce.examples.servers.all_codecs / server package);local.cfg:是算法在本地运行的配置,这个配置和server配置有点像,因为她肯定也要选择算法等等.var decoder =xdc.useModule(ti.sdo.ce.examples.codecs.viddec_copy.VIDDEC_COPY);var encoder =xdc.useModule(ti.sdo.ce.examples.codecs.videnc_copy.VIDENC_COPY);var Engine = xdc.useModule(ti.sdo.ce.Engine);var myEngine = Engine.create(video_copy, name : videnc_copy,mod : encoder,local: true,name : viddec_copy,mod : decoder,local: true);总结:当我们执行make,执行了makefile,然后其实是执行了xdc.EXAMPLES_ROOTDIR := $(CURDIR)/./././././.include $(EXAMPLES_ROOTDIR)/xdcpaths.mak# add the examples directory to the list of paths to packagesXDC_PATH := $(EXAMPLES_ROOTDIR);$(XDC_PATH)all:$(XDC_INSTALL_DIR)/xdc release XDCPATH=$(XDC_PATH) XDCOPTIONS=$(XDCOPTIONS) $ -PD .同时从上面可以看出,package.xdc必须在makefile的当前目录.package.xdc指出了要编译的对象即路劲.然后就会到package指定的路径找其他文件.package.bld是和编译相关的,比如debug,还指出了是编译app,server,codecs,同时指出要执行什么东西.如果是codecs,xdc会加入package.xdc的module对应的xdc,xs,并执行这些.如果是server,则package.bld中会加入servername.cfg,tcf等配置文件.同时xdc会加入servername.cfg,这个可以通过更改package.bld中的servername名而不更改cfg的名字,就会出现错误,这个就验证了.所以其实我们只要将makefile,package.xdc拷贝出来,放到任何路径,任可以编译原来的程序.因为package.bld指定要编译的路径,当然makefile要改EXAMPLES_ROOTDIR 专业技术 知识共享
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!