TI中文支持网
TI专业的中文技术问题搜集分享网站

28035芯片配置CLA后,芯片在某种工况下进入非法中断

Ti工程师,您好。我目前遇到个问题是 28035芯片在 某种工况下进入非法中断,这导致我的C28X和CLA的程序都没有在工作了。。所以我想问下 会导致芯片进入非法中断的原因有哪些?有没有一些排查的建议或者措施呢  谢谢

Green Deng:

进入非法中断的可能原因有很多,比如堆栈溢出,内存溢出,某个函数不兼容等等,甚至芯片受干扰也有可能跑飞进入非法中断。还是需要确定一下进入的是什么非法中断以及芯片是从哪句代码跳到非法中断的。如果能复现的话最好,可以在CCS在线仿真的时候进行复现,这样可以看到具体进入了哪个非法中断以及具体是哪句代码跳转的

,

user5997033:

感谢回复。。。但是由于我的功率电路工作以后,CCS在线仿真就连接不上了 。所以我有两个问题:

1.我们现在想在进入非法中断端后  将通信的方式将 跑飞进入非法中断前的函数地址通过GPIO口发出来。。。所以想请问下 对28035芯片的C28X来说,读取它的PC寄存器和RPC值,CLA的MPC寄存器值,是否可以知道我芯片跑飞前代码运行到那一句了呢?

2.如果是CLA算法跑飞,那C28X也会跑飞吗?(它是并行的吧),由于我现在主要核心代码 基本都是在CLA中,但是在特定工况下  CLA和C28X都会跑飞 。。。。 

,

user5997033:

@Green Deng  helo Green Deng 再请教下 如果是CCS在线仿真  应该怎么看是是哪句代码跳转的呢?麻烦您有空的时候解答下我的疑问哈  非常感谢!

,

Green Deng:

看你的描述我倒觉得很有可能是你的功率电路干扰导致芯片运行不正常,不知道不上功率电的话芯片是否会跑飞?

1、我看了一下这两个寄存器,RPC用于通过MCCNDD和MRCNDD操作保存和恢复MPC地址。MPC寄存器将反映MDEBUGSTOP指令的地址。似乎跟芯片跑飞前代码运行到哪一句没什么关系?而且芯片跑飞的话能否将寄存器的值发出来还有待确定。

2、如果CPU设置的是CLA单独运行是不影响CPU运行的,如果设置的等待CLA执行完成(Cla1ForceTask1andWait()),那么CPU等不到CLA完成的标志的话就会一直停在那

3、一般情况如果运行到某句代码发生跳转到非法中断,或者跳错的话点击暂停按钮(Suspend),CCS就会停止在发生跳转的那句代码上。一般认为那句代码就是出错跳转的代码。

,

user5997033:

1.不上功率电路 芯片工作都是正常的  而且只会是才特定工况(工作电流大的时候)下进入非法中断。如果是功率电路的影响话 想请问下功率电路可能是通过影响什么来导致进入非法中断的呢?

2.我现在设置的是 CLA由ADC中断自动触发  配置好后  理论上CLA是单独运行的

3.我现在因为功率电路一启动仿真器就连接不上芯片了  所以应该是暂时没法才仿真的时候复现芯片跑飞的现象吧?

,

Green Deng:

1、这个确实发现过很多类似的大功率器件导致芯片跑飞的问题,但是目前来说没有这方面的确切原因说明,只能从电磁干扰的角度去考虑。解决的话也是在硬件上做电磁干扰屏蔽以减少芯片干扰

2、如果配置的是触发后不需要等待CLA执行完成,那应该是单独运行的。

3、没办法连接仿真器的话是没办法在线仿真了

,

user5997033:

感谢回复 Green Deng。就是我们现在另外有两个问题和您讨论下   1.我们有一个想法是:我们在非法中断函数中 通过GPIO读取 堆栈SP中前后几次的值 ,来判断芯片进入非法中断前 执行的代码地址是哪里   不知道这种方式是否可行? 另外就是我们现在每次读出的地址每次都不一样

2.  关于堆栈大小的设置问题 在CMD文件和CCS属性编辑中均看到有类似设置堆栈大小的地方  这两个地方应该如何理解?谢谢

,

Green Deng:

1、这个说实话这边没有类似的操作过,没办法给你做可行性分析。建议你可以去英文E2E咨询一下这个问题:https://e2e.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum

2、堆栈大小一般以cmd为基础,CCS中的设置不能大于cmd文件中的设置,否则容易造成溢出报错。若是CCS内不设置的话,会使用默认的大小。另外,通过CCS –> View–>Memory Allocation可以查看内存使用情况,从而设置合适的堆栈大小。

,

user5997033:

好的。。另外就是如果从内存分别配中发现有的内存已经满了应该怎么如何处理呢?(这会不会是我特定工况下进入非法中断的原因呢?)比如我下图中的Pie_VECT和ECANA_MBOX已经占比达到100了

,

Green Deng:

有可能,内存满的话,如果没溢出那程序还是可以运行的,如果溢出了那么工程会跑飞或者是各种意想不到的异常

,

user5997033:

但是我们这里是  下图中的Pie_VECT和ECANA_MBOX内存满了 但是我实际用的CLA和Main函数里面的程序是没有满的

赞(0)
未经允许不得转载:TI中文支持网 » 28035芯片配置CLA后,芯片在某种工况下进入非法中断
分享到: 更多 (0)