rockstone

上善若水,水利万物而不争

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

转自:http://www.ed-china.com/ART_8800030600_400005_500012_TS_31e00b5e.HTM,如侵权,请告知,我会立即删除。

    通过第三部分的介绍,我们知道了如何走完Codec Engine入门的第三步,下面我们将告诉你哪些问题是你在实际使用Codec Engine中常碰到的,以及怎么去解决它。


5.使用中常碰到的问题

1)如果遇到问题可以先访问http://wiki.davincidsp.com/index.php?title=Codec_Engine_FAQ


2)有些工程师没有DSP开发经验,或者暂时没有仿真器通过JTAG调试DSP。可以参考下面网页的内容,先做一个“Hello World”的例程对ARM和DSP如何协同工作有个感性认识。http://wiki.davincidsp.com/index.php?title=How_to_build_an_ARM/DSP_Hello_World_program_on_the_DaVinci_EVM


3)很多工程师都是参考video_copy的例子,在它的基础上把自己的算法加进去。因为有源代码,这样比较容易。但肯定要根据自己算法 的需要修改ARM和DSP之间传递的buffer和参数,重要的是先保证ARM侧的应用程序可以把buffer和参数正确传递到DSP,DSP可以把处理 之后的buffer正确的传到ARM侧的应用程序。把这个通路打通之后,就比较容易定位问题是出在ARM应用程序还是DSP侧的算法。另外,参考 video_copy例子时注意代码的注释,以便清楚哪一句代码可以删掉哪一句必须要修改或保留。如果要扩展xDM的数据结构请参考:http://wiki.davincidsp.com/index.php?title=Extending_data_structures_in_xDM


4)Codec Engine DSP侧会涉及到Cache一致性的问题。请参考:http://wiki.davincidsp.com/index.php?title=Cache_Management


5)关于Codec Engine系统调试,有以下几种方法:

A.打开Codec Engine trace,通过打印信息看问题出在什么地方。比如engine_open失败,DSP侧不能创建codec 等等。
a)Codec Engine 2.0及以上版本,请参考:http://wiki.davincidsp.com/index.php?title=Easy_CE_Debugging_Feature_in_CE_2.0
b)Codec Engine 1.x版本,请参考:http://wiki.davincidsp.com/index.php?title=TraceUtil

B.ARM应用程序跑起来后,用仿真器连上CCS调试DSP侧程序,参考:http://wiki.davincidsp.com/index.php?title=Debugging_the_DSP_side_of_a_CE_application_on_DaVinci_using_CCS

C.用Soc Analyzer可以做系统调试之外,还可以统计具体函数运行(ARM和DSP侧)时间(benchmark)。请参考:http://tiexpressdsp.com/wiki/index.php?title=SoC_Analyzer


6)因为Codec Engine是介于ARM 应用程序和编解码算法中间的软件模块,很多工程师非常想知道它的开销(overhead),请参考:http://wiki.davincidsp.com/index.php?title=Codec_Engine_Overhead


7)如何在Linux环境下编DSP的汇编或线性汇编程序?

在Codec Engine安装路径下/packages/config.bld文件里

var C6?P = xdc.useModule(‘ti.targets.C6?P’);

之后添加:

C6?P.extensions[“.sa”] = {

suf: “.sa”, typ: “asm:-fl”

}

C6?P.extensions[“.asm”] = {

suf: “.asm”, typ: “asm:-fa”

}


8)DSP侧如何统计具体函数运行时间?

TI DSPC6?x+内核有一个6?位的硬件定时器(Time Stamp Counter),它的频率和CPU频率一致。最简单的办法是使用TSC的低32位TSCL。注意在DM6?4x中,TSCH用于ARM。

#include

void main (){

TSCL=0;

t1=TSCL;

my_code_to_benchmark();

t2=TSCL;

printf(“# cycles == %d\n”, (t2-t1));

}


6.结语

以上针对如何上手TI的Codec Engine做了简单的归纳,还有很多具体细节的问题没有涉及到。还请各位工程师从自己要用的软件模块发布说明文档开始找到相关的文档并研究。经常访问TI的网页,http://wiki.davincidsp.comhttp://tiexpressdsp.com/wiki找到最新的信息和资料。也非常欢迎您在wiki上提问。


作者:崔晶

通用DSP 技术应用工程师

德州仪器半导体技术(上海)有限公司

posted on 2010-01-15 21:40  rockstone  阅读(1397)  评论(0编辑  收藏  举报