我希望实现简单的乒乓缓存,是DDR2与L2之间的传输,问题如下:
1. 看了EDMA3的文档之后,为了进行QDMA的乒乓缓存,我总共设置6个PaRAM set,set1负责从DDR2到L2的传输,其中set2是set1的ping,set3是set1的pong,set4负责从L2到DDR2的传输,其中set5是set4的ping,set6是set4的pong,这样的set的个数设置合理吗?
2. 大问题来了,QDMA的link操作是不是在当前channel对应的set传输完后立即发生的、不需要CPU设置的?如果是的话,如何解决与CPU同步的问题?假设对于L2中的两个缓冲L2ping和L2pong,当EDMA3完成了DDR2对L2ping的传输,马上进行link机制然后进行DDR2对L2pong的传输,而CPU此时还没处理完L2pong中的数据那怎么办(有中断似乎也不行,因为没处理完)?
Tony Tang:
Justin,
QDMA是由手动触发,即由你来控制什么时候触发传输,所以不存在CPU是否来的及的问题,这是有别于EDMA的事件触发方式的。
另外,即便是EDMA的事件触发方式,如果出现这种处理不及时的情况,代表系统处理能力不能满足实时性要求,那么要么提高处理算法代码的效率,要么降低外部数据输入的速度。