Part Number:TMS320C28346
您好,最近我们使用28346进行数据处理,通过DMA将数据搬运到XINTF上,这里我们数据采用的双字,32位,cpu只将运算结果写入内存,DMA负责将内存数据搬运到XINTF。我们设计中考虑到CPU写入和DMA读取数据存在冲突的情况,查看了DMA手册,发现DMA手册对于这块的讲解是
the CPU is performing a write operation and a read operation from the CPU is pending, then a DMA access to that same interface has priority over the pending CPU access when the current CPU access completes。
这里写的是接口,不是地址,又查看文档,接口包含XINTF Memory Zones 0, 6 and 7 L0 -L7RAM。我们是不是可以理解为,每个ram都是一个接口,只要dma在访问某个ram,cpu就处于等待,直到dma访问完成。所以不存在双字高16位和低16位错位的情况?
Daniel:
您好
关于您提到的TMS320C28346在使用DMA与CPU进行数据访问时可能存在的冲突问题,以及DMA手册中的描述,我可以给您以下解答:
首先,根据DMA手册的描述,“the CPU is performing a write operation and a read operation from the CPU is pending, then a DMA access to that same interface has priority over the pending CPU access when the current CPU access completes”,这意味着当CPU正在对某个接口进行写操作,并且还有一个CPU的读操作在等待时,如果DMA要访问同一个接口,那么DMA将在当前CPU访问完成后获得优先权。这里的“接口”是一个较为宽泛的概念,它可能涵盖了多个具体的内存区域或RAM。
在您的情况下,由于您使用的是XINTF,并且数据是以双字(32位)的形式存储的,我们需要更具体地了解XINTF的内存区域是如何与DMA交互的。根据TMS320C28346的文档,XINTF包含了多个内存区域,如Memory Zones 0, 6, and 7,以及L0-L7 RAM。当DMA访问这些内存区域中的任何一个时,如果CPU也在尝试访问同一个区域,那么DMA将具有更高的优先级。
关于您提到的“每个ram都是一个接口”的理解,这在一定程度上是正确的,因为每个RAM区域都可以被视为XINTF的一个组成部分或接口。但是,更准确的表述应该是:每个RAM区域都是XINTF内存空间的一部分,当DMA访问这些区域时,如果与CPU的访问发生冲突,DMA将具有优先权。
至于您关心的“是否存在双字高16位和低16位错位的情况”,这主要取决于您的数据访问方式和DMA的配置。如果DMA和CPU都正确地以32位(双字)为单位进行访问,并且DMA的配置确保了数据的连续性和正确性,那么就不会出现高16位和低16位错位的情况。然而,为了确保这一点,您可能需要在DMA配置和代码实现上做一些额外的检查和验证。
综上所述,当DMA访问XINTF上的某个内存区域时,如果CPU也在尝试访问同一个区域,DMA将具有优先权。为了确保数据的正确性和连续性,您需要在DMA配置和代码实现上做好充分的准备和验证。
未经允许不得转载:TI中文支持网 » TMS320C28346: 28346 DMA和CPU同时访问冲突问题