Davinci 开发心得点滴

转载 2013年12月03日 20:31:49

1. 用eclipse辅助开发,可节省不少开发时间。

1.1 在eclipse.org下载Eclipse IDE for Java EE Developers(目前最新版本helios,即v3.6),以及相应版本的CDT(目前最新版本7.0.0)。安装之后,通过eclipse的菜单“Window->Preferences”调出窗口后,在“General->Editors->File Associations”中,将*.bld/*.cfg/*.xdc等JavaScript文件与JavaScript Editor关联起来。

1.2 创建工程时应通过菜单“File->New->Makefile Project with Existing Code”来创建,当然你得先将目录创建好,源文件复制到位。最好直接在<CE_INSTALL_DIR>/examples中的例子的基础上修改出你需要的算法框架。

1.3 eclipse的工程使用绝对路径。复制已有workspace改名使用时,例如a_workspace复制并修改为b_workspace,最好删除并重新添加一遍工程,否则小心修改到原workspace目录下的文件。

2. 两个辅助工具

2.1 使用CCSv3.3 + Component Wizard for eXpressDSP(ti_xdais_v4.0d_setup.exe),可以快速搭建出你需要的CODEC算法框架。

2.2 RTSC Codec and Server Package Wizards,把一个.lib文件封装成RTSC Codec 包和RTSC DSP Server包,可惜需要Codec Engine1.20及以上版本,还没有机会使用。

3. 关于stack

3.1 在CODEC服务程序(例如<CE_INSTALL_DIR>/examples/servers下的程序)中的*.cfg中可以指定需要的stack size。其中Server.threadAttrs.stackSize为server stack指定大小,Server.algs中的stackSize为task stack指定大小,修改Server.algs中的stackMemId,可将task stack分配到片内存储器。

/*
 *  ======== Server Configuration ========
 */
var Server = xdc.useModule('ti.sdo.ce.Server');
Server.threadAttrs.stackSize = 2048;
Server.threadAttrs.priority = Server.MINPRI;
Server.autoGenScratchSizeArrays = true;

Server.algs = [
    {name: "scale", mod: SCALE, threadAttrs: {
        stackSize: 16384, stackMemId: 0, priority: Server.MINPRI + 1}
    },
];

3.2 Server.threadAttrs.stackSize和Server.algs中stackSize的区别

On the DSP server, every algorithm instance is run by an individual task. The Server.algs array specifies the stack size for the task running each algorithm. Hence this stack size must be greater than the worst-case stack usage by an algorithm'sprocess() andcontrol() functions (and by their skeletons, though typically stack usage is higher in the algorithm itself).

Server.threadAttrs.stackSize specifies the stack size of the server task used by CE to create algorithm instances on the DSP. The server task is also responsible for creating the task (with the stack size specified in theServer.algs array) that runs the created codec instance. Server.threadAttrs.stackSize must be larger than the stack size requirements of the basic IALG, IDMA3 and IRES functions implemented by each algorithm/codec, excluding theprocess() andcontrol() functions.

3.3 在Arm端的TRACE文件(由CE_TRACEFILE指定)中可查看task stack的使用情况。

CE - Engine_deleteNode(0x25a48): algName = scale, algHandle = 0x8fa01190, stack size = 16384, stack used = 643(4%)

3.4 在Dsp端的TRACE文件(由TRACEUTIL_DSP0TRACEFILE指定)中可查看system stack的使用情况。

CR - RMS: stack size = 2048, stack used = 355(18%) … CR - RMS: stack size = 2048, stack used = 875(43%)

4. 关于DDR Segment

4.1 算法中的malloc()分配的内存在DDR段的heap中,全局和静态变量则在DDR段的非heap中。在CODEC服务程序(例如<CE_INSTALL_DIR>/examples/servers下的程序)中的*.tcf可以修改此设置。

/*  ===========================================================================
 *  Set all code and data sections to use DDR
 *  ===========================================================================
 */
bios.setMemCodeSections (prog, bios.DDR);
bios.setMemDataNoHeapSections (prog, bios.DDR);
bios.setMemDataHeapSections (prog, bios.DDR);

/*  ===========================================================================
 *  MEM : Global
 *  ===========================================================================
 */
prog.module("MEM").BIOSOBJSEG = bios.DDR;
prog.module("MEM").MALLOCSEG  = bios.DDR;

4.2 在CODEC服务程序(例如<CE_INSTALL_DIR>/examples/servers下的程序)中的*.tcf可以修改DDR段的heap size。

/*  ===========================================================================
 *  Create heaps in memory segments that are to have heap
 *  ===========================================================================
 */
bios.DDR.createHeap = true;
bios.DDR.heapSize   = 0x20000; // 512K

5. 关于CMEM Segment

5.1 使用Memory_contigAlloc分配内存到CMEM时,CMEM可能找不到合适的pool来分配,这时就需要修改CMEM的pool配置。

5.2 在loadmodules.sh文件中修改CMEM的pool配置。

# insert cmemk, tell it to occupy physical 120MB-128MB, create
# 20 4K buffers, 10 128K buffers  and two 2MB buffers
insmod cmemk.ko phys_start=0x87800000 phys_end=0x88000000 pools=20x4096,10x131072,2x2097152

DAVINCI DM3730开发攻略——开发环境篇

【原文:http://zjbintsystem.blog.51cto.com/964211/1167159】         深圳的春天,梧桐山上绿意浓浓,山花醉人香,蜂蝶采蜜忙!现在只能在山上...
  • zhazhiqiang2010
  • zhazhiqiang2010
  • 2014年05月14日 21:49
  • 1443

软件开发心得点滴记录

1. 前言 自从2002年大学毕业后一直沉浸于软件开发之路,平时喜欢思考和归纳,时常会产生一点心得和想法,回想起来是一笔宝贵的财富,只可惜陆陆续续遗忘了。今天立此文章,希望从今以后可以记录下,以...
  • WERWERSS
  • WERWERSS
  • 2014年05月13日 13:44
  • 360

软件开发心得点滴记录

软件开发心得点滴记录 一见 创建日期:2013/6/27 1. 前言 自从2002年大学毕业后一直沉浸于软件开发之路,平时喜欢思考和归纳,时常会产生一点心得和...
  • Aquester
  • Aquester
  • 2014年04月10日 10:58
  • 397

Android开发心得(一)

Android开发心得之MVC这一个学期在上潘老师的系统设计与分析课程时,我们小组开发了基于安卓平台的电影购票软件。在开发过程中收获了挺多,现在在课程结束前,把其分享出来。 MVC是软件工程中的一种...
  • a1054513777
  • a1054513777
  • 2017年06月10日 21:02
  • 317

QT学习点滴记录(二)

示例名称:QtCreator添加菜单图标 1. x
  • wtf19900910
  • wtf19900910
  • 2014年09月19日 10:53
  • 289

iOS开发心得记录1

iOS关于可以window 中key window的使用
  • solerLiang
  • solerLiang
  • 2015年10月21日 11:06
  • 336

DAVINCI开发原理

本文中约定: [host]    表示主机PC机Linux [target]    表示目标板Linux DAVINCI开发原理之一----ARM端开发环境的建立(DVEVM) ...
  • Derek_Tian
  • Derek_Tian
  • 2015年01月26日 10:48
  • 573

小班研讨课的点滴心得

首先,敲黑板,重点表扬一下毕老师的活泼与宽容,才能让我们的小班研讨课上得如此没有拘束,没有压力,尽情地释放自我。从初中到高中,我所在的学校一直都在进行教育改革,也就是学生自主上课,成为课堂的主角,所以...
  • skn000
  • skn000
  • 2017年12月04日 16:13
  • 60

印制电路板设计点滴

印制电路板设计点滴 印刷导线宽度选择依据:    印刷导线的最小宽度与流过导线的电流大小有关:1: 线宽太小,刚印刷导线电阻大,线上的电压降也就大,影响电路的性能,   线宽太宽,则布线密度不高,板面...
  • Augusdi
  • Augusdi
  • 2013年12月28日 22:16
  • 799

DaVinci框架组成和不同应用的组件使用情况

DaVinci框架组成和不同应用的组件使用情况 Author: ZZ Time: 2015/5/18 10:22:27 DaVinci框架主要指DVSDK的开发框架 ...
  • zszszszsd
  • zszszszsd
  • 2015年06月10日 12:59
  • 258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Davinci 开发心得点滴
举报原因:
原因补充:

(最多只允许输入30个字)