快速实现ARM和DSP的通信和协同工作(四)-工业控制|嵌入式设计-电子系统设计

来源:百度文库 编辑:神马文学网 时间:2024/04/28 23:02:17
视频监控子系统是现代智能机器人设计中必不可少的一个部分,它需要采用DSP并根据某种算法对摄入的图像进行处理和分析,它也需要采用ARM处理器对DSP进行协同管理和控制工作,目前开发工程师碰到的一个最大设计挑战是:如何最高效率地实现ARM和DSP或协处理器的通信和协同工作?本文将详细为您介绍解决这一技术挑战的解决方案和实现指南。
通过第三部分的介绍,我们知道了如何走完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.com和http://tiexpressdsp.com/wiki找到最新的信息和资料。也非常欢迎您在wiki上提问。
作者:崔晶
通用DSP 技术应用工程师
德州仪器半导体技术(上海)有限公司
快速实现ARM和DSP的通信和协同工作(四)-工业控制|嵌入式设计-电子系统设计 快速实现ARM和DSP的通信和协同工作(二)-工业控制|嵌入式设计-电子系统设计 快速实现ARM和DSP的通信和协同工作(三)-工业控制|嵌入式设计-电子系统设计 双核处理器ARM+DSP如何实现协同工作 - 嵌入式ARM-Wince开发的blog | ... 一个典型的嵌入式系统设计和实现 基于双DSP的运动目标智能跟踪系统的设计和实现 一个牛人在ARM实现嵌入式系统的过程 3年以上工作经验的工程师的中长期规划 - 单位招聘 - 中国电子顶级开发网 国内最顶级的开发者论坛---FPGA论坛|ASIC论坛|DSP论坛|ARM论坛|单片机论坛|MCU论坛|电子电路|嵌入式论坛|开发设计论坛 - Powered by Discuz! 基于DSP的FIR滤波器的设计与实现(2) 基于DSP和IPM的变频调速系统的硬件设计 基于DSP的实时图像数据采集系统设计 ARM、DSP、FPGA的技术特点和区别是什么 --转自电子园 基于ARM的数字视频监控系统的设计 嵌入式Linux下NAND存储系统的设计与实现hxy 实时DSP系统设计开发流程 51Testing软件测试网:基于嵌入式WEB的网络视频监控系统的设计与实现 初学嵌入式开发ARM的学习方法 - 硬件/嵌入开发 / 硬件设计 基于DSP和规则采样法的三相SPWM波形发生器的实现--嵌入式技术网 基于Qt的嵌入式媒体播放器系统的设计。。。。。 基于DM9000AE的S3C2440嵌入式系统的以太网接口设计 基于DM9000AE的S3C2440嵌入式系统的以太网接口设计 Linux集群系统的设计实现介绍 桌面日历系统的设计与实现 嵌入式系统设计中查找内存丢失的策略