在调试C6455时,发现基带板在线跑程序没问题(仿真软件为CCS3.3),一旦程序烧写进flash后,会发生反复复位,处于反复复位状态,故障判断如下:
1. dsp的看门狗始终处于死狗状态,不会是软件不喂狗导致的看门狗复位,硬件测试也排除了此原因;
2. c6455的初始化配置、TMR配置和硬件应该都没有问题,因为用仿真器在线跑程序没有问题,TMR设置为非级联双定时器模式,只使用了TMR0,TMR1禁用,TMR的初始化配置由另一个平台移植而来,除了修改了中断周期其他无区别,另一平台已生产多台产品,无问题;
3. 故障判定方法是:在DSP程序的每个函数后设置GPIO测试管脚翻转信号(或设置死循环,现象一样),周期、翻转次数和等待时间都不一样,最后判定是,在中断初始化完成后理应在GPIO测试脚上有4次翻转,但只测到2次,DSP就发生了复位现象;将中断初始化程序屏蔽后,复位现象消失,后续只运行了硬件配置和变量初始化,主程序因为没有中断不会运行;
4. .OUT文件到.BIN文件的转换不会有问题,已经过其他平台验证,唯一区别是在DSP的L2 RAM中开了一小段缓冲区做数据缓存,编译map文件显示L2空间充裕,不会发生内存冲突现象,而且没有在L2内设置cache空间,编译选项中的heap/stack的设置为0x4000,也不会有问题。
程序运行顺序:I2c boot启动—>dsp初始化—->配置时钟芯片—>配置FPGA—>DSP外设接口总线自检—->配置DAC等芯片—>初始化TMR中断(发生复位现象)—>变量及数据缓冲区初始化清零—>初始化串口等接口模块—–>打开中断—–>进入信号处理程序。
请专家和大拿给把脉支招,看看会是哪方面的问题,或指明排查方向,焦急等待。
您的回复和留言,是对我最大的支持,万分感激,谢谢,谢谢!!!
Shine:
反复复位时RESET管脚上有复位信号吗?用其他中断也会有一样的问题吗?跟一下boot后的代码,看进入中断后程序怎么走的?