操作Flash和McBSP通信有冲突,求解释

2019-03-26 16:10发布

TI6416 DSP两片,DSP0通过McBSP向DSP1发送消息(使用EDMA方式,发送方使用DXR->XSR作为帧同步信号,接收方使用发送方提供的帧同步信号),当DSP1正在操作Flash(连接在EMIF B口的CE1空间,其RY/BY#信号和EMIF的ARDY信号相连)时,发现接收方EDMA会丢失一些事件,导致某次的传输任务不能完成,并使后续的传输任务发生错误,当出现错误时,查看McBSP的DRR中确实是传送消息的最后一个数据单元,说明消息已经全部传送到接收方的McBSP,只是当事件产生(RBR->DRR产生EDMA事件)时,EDMA没有及时响应,导致后续事件覆盖了未及时响应的事件,即丢失了部分事件。经过测试,接收方EDMA的优先级由URGENT修改为HIGH或其他较低优先级时,不会出现上述问题。
        查阅相关文档,EDMA的URGENT优先级长度为16,默认情况下(实验中就是该情况), L2控制器可使用6个,EDMA可使用2个,剩余8个未分配,当某个请求器的队列长度使用完时,就会阻塞该优先级上的EDMA,导致该优先级上的事件没法提交,这是可能的原因之一。
       另有一猜测的原因是,操作Flash需要通过EDMA进行,然而Flash在擦除或编程期间,其RY/BY#信号输出为忙,此时会插入硬件等待信号,导致EDMA阻塞,由于L2的请求优于McBSP的请求,导致McBSP的事件不能及时响应而丢失。


      请教各位高人,是否有碰到过类似问题,求交流指教,谢谢。 此帖出自小平头技术问答
0条回答

一周热门 更多>