达芬奇软件架构.docx

上传人:11****ws 文档编号:2390049 上传时间:2019-05-10 格式:DOCX 页数:12 大小:20.61KB
下载 相关 举报
达芬奇软件架构.docx_第1页
第1页 / 共12页
达芬奇软件架构.docx_第2页
第2页 / 共12页
达芬奇软件架构.docx_第3页
第3页 / 共12页
达芬奇软件架构.docx_第4页
第4页 / 共12页
达芬奇软件架构.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、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$ ls auddec1_copy imgde

2、c1_copy package.xdc universal_copy videnc1_copy auddec1_ires imgdec_copy scale vidanalytics_copy videnc_copy auddec_copy imgenc1_copy sphdec1_copy viddec1_copy vidtranscode_copy audenc1_copy imgenc_copy sphdec_copy viddec2_copy audenc_copy makefile sphenc1_copy viddec2split_copy g711 package sphenc_

3、copy viddec_copy 我们可以看到已经有很多算法了。 我们看其中一个: jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/codecs/viddec_copy$ ls lib package.bld viddec_copy.c VIDDEC_COPY.xdc makefile package.xdc viddec_copy_ti.h VIDDEC_COPY.xs package package.xs viddec_copy_ti_priv.h 可以看出,一个算法有 1.

4、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$ ls viddec_copy.a470uC viddec_copy.a64P viddec_copy.a674 v

5、iddec_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.bld bld就是 build的意思,所以这个文件是和编译配置相关的, 比如是 debug,还是 release版本,源文 件包包含哪些,以及要编译的目标平台版本 ,x86,linux,C64P,还是 MVARM9

6、。 这个目标平台的配置来自 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 d

7、escribed 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.vi

8、ddec_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

9、; 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.IVIDDEC override reado

10、nly 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(pr

11、og) 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 “ +

12、 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$ ls all.cfg all_evm3530.tci all_evmDM6446.tci all_evmOMAPL137

13、.tci all.tcf link.cmd makefile package.bld package.xdc all_evm2530.tci all_evmDM357.tci all_evmDM6467.tci all_sdp3430.tci bin main.c package makefile package.bld,package.xdc 和上面没有本质区别。 var serverName = “my_server“; /这个要匹配 .xdc中定义的 package name Pkg.attrs.profile = “release“; Link.cmd是链接配置 文件 。 Bin是编译

14、后的程序所在的目录 . Package也是编译过程中的中间中间 ,比如根据配置生成的 all_x64p.c,all_x64p.js main.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,

15、len: 0x01800000, / 24 MB space: “code/data“ , comment: “DDR2: off-chip memory for application code and data“, name: “DDR2“, base: 0x87800000, len: 0x00600000, / 6 MB space: “code/data“ , comment: “DSPLINK: off-chip memory reserved for DSPLINK code and data“, name: “DSPLINKMEM“, base: 0x87E00000, len

16、: 0x00100000, / 1 MB space: “code/data“ , comment: “RESET_VECTOR: off-chip memory for the reset vector table“, name: “RESET_VECTOR“, base: 0x87F00000, len: 0x00001000, / 4 KB space: “code/data“ , comment: “L4CORE: L4-Core Interconnect Address Space“, name: “L4CORE“, base: 0x48000000, len: 0x01000000

17、, / 16 MB space: “data“ , comment: “L4PER: L4-Peripheral Interconnect Address Space“, name: “L4PER“, base: 0x49000000, len: 0x00100000, / 1 MB space: “data“ , comment: “IVA Memory Management Unit“, name: “IVAMMU“, base: 0x5D000000, len: 0x00001000, / 4 KB space: “data“ ; servername.cfg. The Codec Se

18、rver 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: Serv

19、er.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. 上面

20、的 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

21、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.x64P app端 : jerryjerry-laptop:/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_copy$ ls app.

22、c local.tcf main_BIOS.c makefile package.xdc smain.h local.cfg main_native.c package.bld remote.cfg Main_bios.c是 dsp端初始程序 (dsp_local时 ). main_native.c是 arm端初始的程序 . Package.xdc一样 . Package.bld也一样 . Remote.cfg是配置算法远程模式时的配置文件 : 配置使用哪个算法服务器 . var serverName = “bin/“ + / replace all : and . with _ in platform name platform.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 dir serverName,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。