|
在CCS中可以设置多种断点,给艰难的调试工作带来了许多方便。选择Debug菜单下的Breakpoints…选项,就可以打开断点设置窗口。
在Breakpoint type中选择所需要的断点类型,下面详细举例介绍一下我常用的两种断点:
break on data write: 在DSP写数据存储区中的某个地址时中断程序执行。这个在调试缓冲区溢出等BUG时经常可以用到。有时候DSP常常出现一些不可捉摸的错误,很多情况下是 因为数组越界,把不该修改的地址修改了。有一次我的程序偶尔会出现CF卡不能读取的错误,经过跟踪调试发现保存磁盘0扇区信息的内存被修改了。由于这段内 存只在启动的时候写一次,其后只是读取其中的信息,为了找出是什么程序修改了它,我就设置了break on data write断点。这样当程序被中断的时候,就找到了罪魁祸首。经过一些分析发现原来是一段完全不相干的SRC程序的错误。它出错的时候,正好会改写保存0 扇区的那段内存。
Break on Prog read: 当DSP读取某个地址的代码(读取程序空间的内容)的时中断程序运行。一般情况下这种断点用不上,因为可以直接在程序旁边设置断点。但是如果程 序是放在flash中,则不能直接设置断点了,只能使用Break on Prog read。有一个项目我使用了自己编写的boot load程序,当DSP需要更换自己的程序时,就跳转到flash中执行这段boot load程序,它再根据设置从flash中载入相应的程序。这样DSP就可以不同的功能之间切换,如果把这些功能写成一个程序的话,DSP的内存是装不下 的。为了调试这段boot load程序,我大量地用到了Break on Prog read。
|