EDMA3传输数据总是达不到理论值,找原因找了几天都没有眉目,目前测试到Edma3_CacheFlush和Edma3_CacheInvalidate总是失败,想先解决这个问题,请问使用Edma3_CacheFlush和Edma3_CacheInvalidate需要加什么特殊的头文件或者在.CFG里加什么特殊的包吗?我看Edma3_CacheFlush和Edma3_CacheInvalidate是定义在bios6_edma3_drv_sample.h里的,我的头文件已经加了:#include <ti/sdo/edma3/drv/sample/bios6_edma3_drv_sample.h>并且右键选择Edma3_CacheFlush和Edma3_CacheInvalidate是可以打开定义的,在.CFG里边包含了var Cache = xdc.useModule('ti.sysbios.hal.Cache');还需要其他东西吗?或者我使用方法有问题,我是按照C:\ti\edma3_lld_2_12_05_30E\examples\edma3_driver\src里边dma_test.c的代码来使用的,如下:
if (edmaResult == EDMA3_DRV_SOK){edmaResult = Edma3_CacheFlush((uint32_t)s_addr, MAX_ACOUNT);if(edmaResult != EDMA3_DRV_SOK){platform_write("Edma3_CacheFlush failed!\n");}}//Invalidate the Destination BufferedmaResult = Edma3_CacheInvalidate((uint32_t)d_addr, MAX_ACOUNT);if(edmaResult != EDMA3_DRV_SOK){platform_write("Edma3_CacheInvalidate failed!\n");}
有人遇到相同的问题吗?Edma3_CacheFlush和Edma3_CacheInvalidate 很不好搜索,在https://www.ti.com/lit/ug/sprugs5b/sprugs5b.pdf和边都搜不到
Lucius Green:
现在怀疑Edma3_CacheFlush和Edma3_CacheInvalidate语句是否真的需要啊?在VLFFT里边搜不到Edma3_CacheFlush和Edma3_CacheInvalidate语句的,然而VLFFT也是用了DDR的,那么他没用Edma3_CacheFlush和Edma3_CacheInvalidate语句就代表这语句可以不用啊?是这样的吗?
Shine:
回复 Lucius Green:
请问用的是哪款芯片?
Lucius Green:
回复 Shine:
TMDXEVM6678L开发板
Shine:
回复 Lucius Green:
Lucius Green现在怀疑Edma3_CacheFlush和Edma3_CacheInvalidate语句是否真的需要啊?在VLFFT里边搜不到Edma3_CacheFlush和Edma3_CacheInvalidate语句的,然而VLFFT也是用了DDR的,那么他没用Edma3_CacheFlush和Edma3_CacheInvalidate语句就代表这语句可以不用啊?是这样的吗?
Shine:
回复 Shine:
"目前测试到Edma3_CacheFlush和Edma3_CacheInvalidate总是失败"能否具体描述一下失败的情况?