我发现ti/csl/example/edma下面的例程里跑通了EDMA在MSMC之间的数据传输。
但是我需要的是配置EMIF16和L2之间的数据传输,一旦我改变源地址src或者目的地址dst,就会出现无法正常传输的情况,原代码的打印显示verify false!
我想知道为什么会出现这种情况?难道是EDMA只能在MSMC里面配置字段跑EDMA的例程吗?这牵扯到哪些部分呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我发现ti/csl/example/edma下面的例程里跑通了EDMA在MSMC之间的数据传输。
但是我需要的是配置EMIF16和L2之间的数据传输,一旦我改变源地址src或者目的地址dst,就会出现无法正常传输的情况,原代码的打印显示verify false!
我想知道为什么会出现这种情况?难道是EDMA只能在MSMC里面配置字段跑EDMA的例程吗?这牵扯到哪些部分呢?
可能是cache一致性问题引起的,写数据之后刷cache,然后在读数据之前invalid cache。请看下面的文档和帖子。
https://e2echina.ti.com/support/processors/f/processors-forum/107105/c6678-cache
https://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=64183
配置在不同字段之间的源地址和目的地址之间的数据就可以通过传输了
能否具体说明一下“配置在不同字段”?
你好:
我在cmd文件里配置字段:
EdmaTestSRC > L2SRAM
EdmaTestDST > DDR3
然后在代码里分配源地址和目的地址在以上两个字段里:
__attribute__((section("EdmaTestSRC"))) Uint8 srcBuff1[2];
__attribute__((section("EdmaTestDST"))) Uint8 dstBuff1[2];
这就是我所指出的“配置在不同字段”。且如此配置之后,直接改变srcBuff1的数据,dstBuff1的数据读出并不准确。
直接改变srcBuff1的数据,dstBuff1的数据读出并不准确。
直接改变是指什么?不是通过EDMA去srcbuff1读取数据吗?