装载程序后,默认的配置,会自动打开一个反汇编窗口,你可以设置IDE,直接跳转到main,而不用打开反汇编窗口。
在反汇编窗口中,黄 {MOD}小箭头指向c_init100,这不是用户代码的一部分,而是C语言引导代码的入口。所有的C语言程序都会在连接时自动加上引导代码。这些代码一般不需要调试,需要调试的是用户代码,因此,要Go main。
Load Symbol:加载符号。可执行程序中,一般都会有个符号表,符号表包含了程序中使用到的各种符号如变量名,函数名等在数据存储器和程序存储器中对应的地址。在程序调试中,开发人员需要查看和修改这些变量的值时,不需要知道他们的具体地址,而只需要给出变量名。CCS会从内部符号表中知道对应的地址。一般加载程序时会自动将.out文件中的符号信息加载到内部符号表中,也可以利用Load Symbol菜单只将指定的.out文件中的符号信息加载到CCS内部符号表中。
Add Symbol:增加符号,将指定的.out文件中的符号信息增加到CCS内部的符号表中,与加载符号不同,加载符号会清楚CCS内部原来的符号表。
CPU Registers | Peripheral Regs 外设寄存器窗口。DSP芯片内有各种外设,对这些外设的控制和运行都是以读写外设控制寄存器的方式完成的。
CCS3.3的断点功能已经包含了探针功能,因此无探针选项。
Animate和Run的区别,Run是遇到断点就停下来,而Animate就算遇到断点时先停止DSP内核,刷新窗口,接着继续启动运行。常用来连续刷新变量窗口,和生成graph图形等。
COEF通用目标文件。DSP的文件I/O功能可以使用两种数据文件,一个是文本格式文件,一个是二进制文件,.out格式,实际上与DSP可执行程序的格式一样。内容以段的形式保存,可执行程序中有数据段,代码段,而数据文件中,只有一个数据段.
在程序输入数据出,设置一个探针点,CCS3,3中,探针点封装在断点处。然后点击Action,添加输入文件。设置输入信息。通过这种方式给程序增加输入,测试程序功能。然后可以用watch看,或者图形工具显示。
程序剖析工具
CCS3.3完全取消了以前版本的PROFILE模式,现在的PROFILE的用法如下:
1.从PROFILE的菜单SETUP项打开PROFILE窗口,从该窗口中使能PROFILE功能,当然也可以通过菜单里面直接使能。
2.在PROFILE窗口里面,可以使用所有函数、所有循环,使能后即可以知盗所有函数及所有循环的
3.从PROFILE的VEIW菜单项可以看到你所选择的函数或循惑貔执行的指令数目。
4.通常我们希望看的是某一段代码的执行时间。在使用了PROFILE功能后,右键菜单里面增加了一个PROFILE的下拉菜单项。知盗了这个下拉菜单项后,要看某一段代码就轻易了,选中这一段代码,右键从PROFILE项里面的下拉项里面选择RANGE,即范围,这时就可以从PROFILE窗口的RANGE标签里面可以发现,这一段代码已经加进去了。OK了
5.运行程序,所需要的执行代码时间出来了。
6.在这里对得到的指令时间说明一下,要害是VIEW的最后三列,倒数第三列为该段代码的执行次数,倒数第二列为该段代码总的执行指令数(包含调用库),最后一列为不包含调用库的总的指令执行数。
我的总结是PROFILE功能用起来比较简朴,只不过在刚接手的时候可能不知盗如何下手,以上就当抛砖引玉,点通
CCS3.3 的运行时间统计有两种模式:简单方法:profile-->clock-->enable和view然后在想统计的区域设两个端点,将程序运行到第一个断点处(有人说用:运行到光标处的办法,有人说正常运行run到断点处这两种方法不大一样,因为我的程序中有函数printf,前者不会显示,后者会显示)。然后,把窗口右下角的小钟表双击一下让他清零,然后run,程序从起始断点调到终止断点的时钟周期数就显示在右下角的小钟表处了。这种方法非常不好,每次统计的结果都不一样,俺也不知盗哪次是对的。经典方法:profile-->setup出现对话框,按下对话框左上角的enable/disable
profiling按钮,(an4 niu3 _)就使能了统计时间的钟表。选中一段程序后,点右键,在profile中选range看看setup对话框的range中出没出现你刚选中的(zhong chu mei chu xian ni gang xuan zhong de)内容,而且确定他们是不是enable的。一切ok后,选profile-->viewer,又出现(_you4 chu1 xian4)一个对话框。然后run程序举⑿了。注重:这样做程序将运行得特殊慢,比正常运行慢很多,可能是因为要统计时间的关系。程序跑完,在viewer的对话框中会出现统计数据,其中重要的数据是INCL
TOTAL:指这段代码消耗的所有时钟周期,EXCL TOTAL:指这段代码运行一次消耗的时钟周期