CCS从3.3改版为5.X之后,CCS 变化很大.DaVinci芯片中DSP的调试步骤也不同了.这里介绍下在CCS里如何调试DaVinci的DSP核心
1. 创建CCS V5版本的project
本人使用的CCS版本是Version:5.4.0.00091,调试器是SEED的SEED-XDS560PLUS.这里调试的是DM6467中的C64X核,用来检验算法的正确性.
1.1 创建一个project
在菜单栏中点击 File -> New -> CCSProject.
在Project name中输入项目名称 "emcv_test". Output type中选择 Executable, project会编译一个.out文件,在C64x中运行.Family中选择C6000系列,DaVinci DM646x.运行时库选择rts64plus.lib
在Project templates and examples中选择 Empty Project(with main.c). 最后点击 Finish.
这样,一个最简单的DSP工程就建立出来了.
接下来参考"移植EMCV到DM6467"文章,我来添加源文件.直接将emcv的cv和cxcore两个目录复制到我们上面创建的emcv_test工程目录里即可.如下:
这样刷新CCS工程就会看到
将emcv的cv和cxcore目录包含进工程
剩下的步骤不详细列出,因为"移植EMCV到DM6467"文中都会讲到.最后我们的emcv_test工程如下:
1.2 编译project
在project上右键单击选择Build Project选项,这里编译出错
本着一颗虔诚的心,我又锲而不舍的找到了这个函数的定义处
果然,有八个参数,可是我们main函数里调用这个函数的时候只给了7个参数,这符合C++语法,但是不符合C语言语法.那么这个问题可以有两种解决方式.
方法一:将main函数中的调用
cvRectangle(img, point1, point2, color, CV_AA, 0);
改为
cvRectangle(img, point1, point2, color, CV_AA, 8, 0);
方法二:将源文件main.c改为C++类型,即改为main.cpp即可
CCS支持C++类型,因此一般的工程修改这两种方法都可以,但是我后期要做的是DVSDK上的DSP算法移植,大概流程为:使用CCS插件 -> 生成代码框架 --> 修改算法接口 --> 填充完善算法框架 --> (适当优化、测试,处理) --> 放在Linux下的DVSDK中 --> 配置XDC环境 --> 编译CODEC --> 编译CODEC SERVER --> 编译APP
可能在Linux的DVSDK编译中会对C++的支持不好,所以建议最好选择同意将C++类型的语句都用C语言语法形式来实现.
编译.最后会生成一个.out文件.这个文件运行在C64x核上.
2. 调试程序
这一章主要介绍如何创建target configuration以及在CCS5中如何进行调试C64x
2.1 添加gel,设置JTAG调试器
2.2 启动debugger
启动configuration配置.在菜单中点击view->Target Configurations.
右键单击目标target选择Launch Selected Configuration.
之后debugger就会被启动了.右键单击master核即ARM926核然后选择Connect Target
我们看到console上打印出来的其实就是之前我们加载的ARM端的gel文件的内容
ARM926核心连接好以后,选中A8核心,点击菜单栏中的Scripts -> DaVinci HD1080P DSP -> DSP_Boot_from_DDR2,加载slave核即C64x核的GEL文件
右键单击C64x核然后选择Connect Target
这样,C64x核心连接到调试器,可以下一步的调试了
2.3 加载程序
步骤如下:点击菜单run -> Load-> Load Program.选中生成的.out文件,点击OK, 程序加载完成
到这里,就可以像VS2008那样跟踪调试代码了