DSP RAM溢出死机问题debug

2015-05-25 20:27 阅读 741 次 评论 0 条

故障现象是在程序烧写到Flash中,然后脱机运行,开机就死机。开始以为是加载有问题,怀疑硬件问题,通过示波器测试加载总线上的控制信号,觉得硬件应该没有问题。

通过仿真器连接DSP,进行在线调试运行2s左右后死机,表现不响应外部与内部中断。CCS中表现为程序正在运行running状态,halt程序后,程序停留位置如下图。

DSP死机后后ccs halt内存地址

通过View->call stack查看函数调用过程如下

call stack调佣函数1

call stack调佣函数2

call stack调佣函数3

跟踪了几次,每次死机后调佣的函数不一致。但调试中发现了规律,在每次将DSP重新加电后,再连接仿真器调试,必然出现死机现象。

通过这一点,怀疑是某些变量没有初始化造成问题。但代码量较大,不太好找,所以还是需要通过ccs进行单步跟踪。

最后查到,是一个结构体全局变量,定义如下xdbg gxdbg={0};未初始化完全,造成相关值索引值过大,从而造成拼帧时,内存地址溢出,造成死机。

所以结构体的初始化,还是选择使用memset();函数进行比较可靠。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:DSP RAM溢出死机问题debug | 起点博客
分类:应用笔记 标签:, ,

发表评论


表情