快速实现ARM和DSP的通信和协同工作方案
SC Codec and Server Package Wizard工具介绍,教您如何把一个.lib文件封装成RTSC Codec 包和RTSC DSP Server包,并最终build出DSP的可执行程序.x6?P。http://wiki.davincidsp.com /index.php?title=RTSC_Codec_And_Server_Package_Wizards http://wiki.davincidsp.com/index ... work_with_the_DVSDK
2)如果您使用的是Codec Engine 1.20以前的版本,请参考Codec Engine安装路径下examples/servers/video_copy这个例子。这时就需要搞清楚sprued6c.pdf和 sprued5b.pdf中提到的.xdc和.xs等文件的功能,也可以在video_copy中的相关文件的基础上修改手动创建出自己的RTSC Codec包和RTSC DSP server包。
3)创建好RTSC Codec 和RTSC DSP Server包之后,就是如何build出.x6?P的问题了。点击图2所示的Examples,就可以找到build Codec Engine例子的说明文档的链接。按照这个文档做一遍后,就可以对如何build Codec Server有一个清楚的了解。其中关键是修改user.bld和xdcpaths.mak文件,设置Codec Engine依赖的其它软件模块和工具的正确路径。
4)如果自己的硬件DDR2大小和例子中的256Mbytes不一致,需要修改DSP的.tcf文件和其他配置。还有些工程师不清楚如何分配memory及如何决定具体段,如:DDRALGHEAP和DDR的大小,以及如何配置./loadmodules里的参数都请参考: http://wiki.davincidsp.com /index.php?title=Changing_the_DVEVM_memory_map。
4.3 ARM应用程序工程师应该如何着手?
ARM应用工程师需要调用Codec Engine的VISA API,最终编出ARM侧的可执行程序,因此,必须根据自己的应用学习相关的VISA API、如何创建应用侧Codec Engine的package及配置文件。(参考http://focus.ti.com/lit/ug/sprue67d/sprue67d.pdf,这个文档也涉及到如何调试Codec Engine的内容)。
1)了解ARM应用程序调用Codec Engine的流程、VISA API和其他Codec Engine API。可以参考Codec Engine安装路径下examples/apps/video_copy的例子(较简单)或者DVSDK安装路径下demos里的encode /decode/encodedecode例子(较复杂)。http://wiki.davincidsp.com /index.php?title=Configuring_Codec_Engine_in_Arm_apps_with_createFromServer
2)了解ceapp.cfg文件。sprue67d.pdf有相关介绍,可以先读懂examples/apps /video_copy/ceapp.cfg。
3)用4.2 3)中提到的方法学习如何build ARM侧的可执行程序。
4)如何在多线程中调用codec engine,参考:http://wiki.davincidsp.com /index.php?title=Multiple_Threads_using_Codec_Engine_Handle
5)还可以参考以下三个文档了解更多TI demo的ARM应用程序的结构、线程调度等具体的问题。
EncodeDecode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraah0a.htm, 8 KB) 27 Jun 2007 Abstract
Encode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraa96a.htm, 8 KB) 27 Jun 2007 Abstract
Decode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraag9a.htm, 8 KB) 27 Jun 2007 Abstract
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 ... g_Feature_in_CE_2.0
b)Codec Engine 1.x版本,请参考:http://wiki.davincidsp.com/index.php?title=TraceUtil
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)