使用XDC工具创建基于Codec Engine的dm6446双核工程

转载 2011年01月15日 16:30:00

这两天对TICodec Engine框架进行了进一步的学习,这里总结一下通过XDC工具创建基于Codec Engine的双核(ARM+DSP)工程的建立和生成可执行文件的过程。如有不对的地方,请不吝赐教。

1.由于工程的算法将在DSP端执行,因此需要创建DSP server可执行文件供ARM端的应用程序调用,可以采用以下文件结构。图上还写出了每个文件夹内需要包含的文件(注:runxdc.shsetpaths.sh文件并不一定要存在,二者存在的目的在于提供XDC命令所需的搜索路径环境变量“XDCPATH”和config.bld文件所在路径环境变量“XDCBUILDCFG”。从而可知config.bld的位置不一定要在工程根目录中,只要XDC工具能找到的位置都行,通过设置XDCBUILDCFG得到)

 

2.虽说是自己创建工程,有些文件是可以借用TI的例子通过修改归为己用的。这里就把setpaths.shrunxdc.shconfig.bld以及APP文件夹中的packag.xdcpackage.bldengine.cfg还有Server文件夹从TIworkshoplab12a_build_server”中拿来用了。

3.DSP端运行的算法是TI提供的例子videnc_copy,即将输入数据拷贝到输出。APP端通过申请到的输入输出两片连续内存空间,先将给输入输出空间存值并打印,将输入端和输出端通过调用DSP端的videnc_copy算法将输入拷贝的输出看结果。

4.设置好目录并拷贝相应的文件。

l         修改setpaths.sh使其中的环境变量全部指向现在系统中的相应位置。

l         修改config.bld设置三个平台(MVArmC64PLinux86)对应开发工具的个目录(rootDir),编译器包含的额外头文件includeOpts,编译器编译选项ccOpts.prefix,库链接关系.lnkOpts.suffix等等参数。最关键的是要把开发工具所在根目录设置正确!

l         修改runxdc.sh,设定正确的路径。(setpahs.sh…………)

5.由于SERVER端只需要video_encoder这个算法,因此在server.cfg中将其他三个算法去掉(只留下“var VIDENC = xdc.useModule('codecs.videnc_copy.VIDENC_COPY');”)。同理,Server对象(不知道怎么称呼JavaScript的变量,按自己理解称之为对象)中其他三个算法的线程参数也要删去。

6..APP端编写应用程序代码需要用到以下头文件:

<xdc/std.h>

<ti/sdo/ce/Engine.h>

<ti/sdo/ce/osal/Memory.h> 

<ti/sdo/ce/CERuntime.h>

<ti/sdo/cd/video/videnc.h>

算法调用一般流程为:

 CodecEngine开发流程

这里既可以直接调用Engine_open()VIDENC_create()VIDENC_process()等函数实现Codec Engine。也可以通过简单的封装函数实现访问。此处选择后者,将“lab12a_build_server/app”下的engine.hengine.cdebug.hvideo_encoder.cvideo_encoder.h文件直接拿来使用。

7.修改appengine.cfg文件,只保留viddec_copy相关内容。将Engine.create中该算法的local参数改为false。同时要指明arm程序执行engine_open时要打开的DSPSERVER程序所在位置和文件名称:

demoEngine.server = "./server_release.x64P";

8.编写应用程序时需要注意的问题:

l         Memory_contigAlloc()需要在CERuntime_init()函数执行后才能执行,否则运行程序后会显示“Segment Fault

l         出现xxx.h头文件中莫名错误要检查是否包含该文件所有数据结构声明的头文件。如果没有则该头文件不能识别该数据结构;

l         Engine_open()使用的Engine名称要和engine.cfg文件中定义的一致,同理VIDENC_create()函数打开的算法名称也要和engine.cfg中定义的一致;

9.TI代码学习收获:

l         通过initMask和对应的宏来标志程序中每一个创建和销毁必须成对出现的步骤,如果创建或打开成功,initMask中对应的位置1,在程序退出时根据initMask1的情况进行销毁或关闭。同时由于创建有一定的先后顺序,即必须先创建A然后才能创建B这种,因此销毁是创建的倒序。类似一个压栈弹栈的过程。

l         使用status指示状态,一旦出错就将指示状态设置为EXIT_FAILD,然后使用goto转入销毁阶段;

l         使用DBG()定义,若定义了_DEBUG_则会编译时DBG等同于printf,否则为空。

l         每一个算法使用一个线程,对于线程的调度属性和优先级等通过实际调成观察运行情况。

l         CERuntime_init()每一个进程只能使用一次。因此需在main函数中执行。而engine_open可以在多个线程中使用。

 

l         通过线程参数传入quit标志,线程通过检查标志位决定是否退出本线程的操作,main函数线程绑定“CTL+C”消息处理函数,在处理函数中将标志位置1.

Codec Engine 安装和设置

本文翻译自TI的手册,该手册是学习GPP+DSP开发的金典文档,希望对各位入门有所帮助,有理解不当之处望请赐教。 Codec Engine Application Developer User's G...
  • dyzok88
  • dyzok88
  • 2014年12月30日 23:39
  • 958

DM6446 Codec Engine问题总结及解决办法

DM6446 Codec Engine问题 问题1: DAVINCI_EVM DM6446 跑 DEMOS 里面的 encodedecode 例子出现以下问题: Encodedeco...
  • u010457344
  • u010457344
  • 2014年03月07日 19:41
  • 864

XDC工具使用示例

http://www.usr.cc/thread-52037-1-1.html 这个文章实际上是为读示例代码服务的,下面转而进入读代码系统的第四篇:codec engine代码阅读四...
  • chenbang110
  • chenbang110
  • 2013年04月08日 12:28
  • 5858

使用 Codec Engine 的示例应用程序

Chapter 3 Using the Sample Applications This chapter describes how to test the sample applications p...
  • dyzok88
  • dyzok88
  • 2014年12月31日 22:36
  • 1160

codec engine代码阅读二---根目录下的release notes

release notes的前两段是非常值得看的: This Codec Engine Release is targetted to DaVinci and OMAP platfo...
  • u010457344
  • u010457344
  • 2014年03月09日 21:54
  • 556

Davinci DM6446 Codec Engine双核通信环境的搭建

根据前几篇文章,一个DM6446的系统已经架构完成。但是有很多人都喜欢TI的机制,毕竟双核软件开发对很多工程师来说是非常麻烦的事情,既然TI提供开发套件和开发包,那么直接做OEM就可以了,底层的东西不...
  • janifer_he
  • janifer_he
  • 2013年05月03日 15:28
  • 722

Davinci DM6446 Codec Engine双核通信环境的搭建

根据前几篇文章,一个DM6446的系统已经架构完成。但是有很多人都喜欢TI的机制,毕竟双核软件开发对很多工程师来说是非常麻烦的事情,既然TI提供开发套件和开发包,那么直接做OEM就可以了,底层的东西不...
  • mao0514
  • mao0514
  • 2013年07月22日 16:30
  • 1258

使用 Codec Engine 的 API 函数(一)

本文翻译自TI的手册,该手册是学习GPP+DSP开发的金典文档,希望对各位入门有所帮助,有理解不当之处望请赐教。  Codec Engine Application Developer User's...
  • zou128865
  • zou128865
  • 2015年01月03日 13:16
  • 519

Davinci DM6446 Codec Engine双核通信环境的搭建

Davinci DM6446 Codec Engine双核通信环境的搭建 2010-05-31 00:45:54 标签:DAVINCI Engine Codec 休闲 双核通信 原创...
  • zhh2012
  • zhh2012
  • 2013年12月31日 14:59
  • 528

Davinci DM6446 Codec Engine双核通信环境的搭建

【原文:http://zjbintsystem.blog.51cto.com/964211/324010】 根据前几篇文章,一个DM6446的系统已经架构完成。但是有很多人都喜欢TI的机制,毕竟双核...
  • zhazhiqiang2010
  • zhazhiqiang2010
  • 2014年05月14日 22:19
  • 581
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用XDC工具创建基于Codec Engine的dm6446双核工程
举报原因:
原因补充:

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