TI论坛
直播中

陈玉筠

7年用户 213经验值
私信 关注
[问答]

DSP2812进入非法中断

自己做的DSP2812板子,出现如下问题:用合众达510PLUS仿真器链接上DSP,LOAD完.out文件,然后go main,到此系统都正常,这时如果点击全速运行(F5)程序立即跳到非法中断里面,每次重新加载都是如此。但是如果在main()中的while(1)之前的初始化部分加个断点,go main后点击全速运行,程序正常停在断点处,这是再继续点击全速运行,程序就可以正常运行了。每次加载后调试都是这样,困惑了好久也没找到问题。期间我检查了cmd文件,没有地址重叠现象,主要是在合众达的开发板上没有这问题。基本排除了程序的问题,但是硬件部分的问题确实没有找到,还望专家帮忙解决下。谢谢

回帖(10)

朱虹博

2018-9-29 15:19:29
不加断点加延时怎么样?
用例程会否也有这个问题?
简而言之,进入interrupt void ILLEGAL_ISR(void)  这个中断是因为CPU内核读到了非法指令,之所以会读到非法指令,一般是因为程序跑飞。
程序跑飞不一定是软件问题,硬件上的时钟电源不稳定也会导致这个问题。
举报

笪琳琳

2018-9-29 15:37:25
1. 程序中是否使用了Delay_us()函数,如果是,是否已经copy到Ram中?
2. 检查是否开了足够的Stack空间?
3. 进入程序后,先单步运行,看看在哪条语句进入了非法中断?
4. 程序中是否有越界的情况?例如定了一个一个数组是50Byte,在赋值的时候,或者在程序运行中,超过了50,非法越界?
5. 检查中断是否正常?特别是中断号是否对应?
                                                                         如果您认为此问题已被解答,请在“这是否解答您的问题” 后,点击“是”按钮! 谢谢您的合作!
举报

陈玉筠

2018-9-29 15:51:27
引用: Emily1225 发表于 2018-9-29 15:15
不加断点加延时怎么样?
用例程会否也有这个问题?
简而言之,进入interrupt void ILLEGAL_ISR(void)  这个中断是因为CPU内核读到了非法指令,之所以会读到非法指令,一般是因为程序跑飞。

你好,谢谢您的回答,我就测试一个点灯的程序,不涉及中断的操作,但是加载后全速运行就出现上面所述的问题,同样的程序在合众达的开发板上是没有问题的。感觉问题有可能出在时钟那块,我用的3.3V有源晶振,没有做1.8v的钳位处理直接连接到了2812的77管脚X1,引线之间也没有加100欧以下的电阻,TI给出的参考文档要求时钟信号电压不超过1.8V,但是板子还是可以使用的,不知道是不是这的问题,我再改版测试下,谢谢您
举报

笪琳琳

2018-9-29 16:06:37
引用: ajcfmxd 发表于 2018-9-29 15:47
你好,谢谢您的回答,我就测试一个点灯的程序,不涉及中断的操作,但是加载后全速运行就出现上面所述的问题,同样的程序在合众达的开发板上是没有问题的。感觉问题有可能出在时钟那块,我用的3.3V有源晶振,没有做1.8v的钳位处理直接连接到了2812的77管脚X1,引线之间也没有加100欧以下的电阻,TI给出的参考文档要求时钟信 ...

那就主要查时钟和电源,我贴上一个eZDSP的F2812的原理图供参考。
                                                                         如果您认为此问题已被解答,请在“这是否解答您的问题” 后,点击“是”按钮! 谢谢您的合作!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分