大家好,mcbsp使用中 运行一会 异常卡死,请大家帮忙分析一下。
使用场景如下:mcbsp0 的收和发都使用了 FIFO 。 RX 帧速率为20K,工作在从模式 ,TX 帧速率为48K,主模式 。 mcbsp 初始化 后Tx 和 RX运行正常。
但是 不断的 重新加载DSP 初始化mcbsp 启动后,偶尔会有一次(大概30次出现一次) ,运行1分钟 后RX 停止工作,表现为 RX FIFO 还有空间,但是 不产生让FIFO搬移的事件 ,而 打印 SPCR 寄存器 指示 RFULL 。偶尔出现一次 。
刚开始 发现和 L138 的系统参考时钟有关 ,时钟电气特性 不达标时此现象特别明显 。后来更换了时钟后 ,时钟测量很稳定,但就是 30次启动后 会偶尔一次 运行一会接收 就死掉了,增加错误处理机制 ,去读DRR ,仍不能恢复。
大家有没碰到过,帮忙分析下 ,谢谢
Tony Tang:
目前我遇到过两例这样的案子,最终情况偏向于硬件干扰引起的,建议从MCBSP的硬件信号上找问题。
peng li9:
回复 Tony Tang:
您好,Tony,我们最近又碰到一个异常现象,运行一段时间后,DSP会重新执行main函数,好像DSP单独重启了,但是这时ARM并没有重新加载DSP。希望您给提供点调试思路或建议。
Tony Tang:
回复 peng li9:
应该是程序跑飞了吧。重新执行main后,程序正常吗?
peng li9:
回复 Tony Tang:
DSP侧采用了BIOS系统,进main后应该是正常执行,main里重新初始化了DSPlink,可以正常的notify ARM。
感觉不像跑飞,跑飞后不一定进main吧,感觉像是重新进了DSP的入口地址。 我们把138应用在了无线终端产品中,总是在主叫发射过程中,偶尔会重新进了main,像是重新执行了入口地址,然后进的main,不像是跑飞。如果跑飞后,现象是肯定进main吗?希望您可以指导下,哪些情况下OMP138的DSP会自己重新执行main函数。
Tony Tang:
回复 peng li9:
地址是连续的吗?或者间隔有规律吗?如果不是,则不能用EDMA,因为用EDMA搬单个数据效率不高。
peng li9:
回复 Tony Tang:
没有挂着仿真器,DSP的程序是arm加载的。DSP程序运行过程中,自己又执行了main函数,通过打印发现的。这种情况是跑飞吗? 您估计会有哪些原因导致DSP 又重新进入main函数,我们理解BIOS的系统,main只进一次。 希望可以得到您的帮助,非常感谢。
TI中文支持网


