ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.61KB ,
资源ID:2390049      下载积分:15 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-2390049.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(达芬奇软件架构.docx)为本站会员(11****ws)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

达芬奇软件架构.docx

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个工作日内予以改正。