TI中文支持网
TI专业的中文技术问题搜集分享网站

[请教]ARM与DSP通过QMSS实现核间通信,发现ARM侧对CACHE 写回与无效操作没有起作用,为何?

ARM侧使用keystone-hwqueue提供的khwq_map ,khwq_unmap,来实现物理地址与内核虚拟地址的转换

该函数中使用dma_sync_single_for_cpu 和dma_sync_single_for_device来实现DMA对cache的操作

但是在实际测试中发现DMA搬移时cache中的数据并没有同步到ddr中,请问为何?

Zhan Xiang:

1. 请问你用的是哪个平台6614还是6636/6638?

2. 确认测试的memory在MMU中把cache使能

3.如何判断数据没有同步到DDR的,是用DSP core?如果用DSP core,需要手动维护cache 一致性

Peter wang1:

回复 Zhan Xiang:

 

1. 请问你用的是哪个平台6614还是6636/6638?

        6614,DSP使用bios系统,ARM使用linux系统

2. 确认测试的memory在MMU中把cache使能

           核间通信使用的是monolithicDesc,使用的memory就是在描述符内,看了一下sdk是用alloc_free_pages创建的region,每个描述符大小是512字节

 

3.如何判断数据没有同步到DDR的,是用DSP core?如果用DSP core,需要手动维护cache 一致性

            ARM与DSP互发,发送的时候在数据区添加数据及CRC值,接收侧收到后做CRC检查,如果不一致则报错。数据大小为500字节

在测试过程中发现从ARM—>DSP没有错误,但是从DSP—–>ARM数据有时候就不正确了,出错率在2%,怀疑arm 没有invalid cache,于是测试在读取数据前

先访问256k的数据区,这样cache中就不存在原来的数据了。这样测试数据就能正确了,说明ARM上cache没有被invalid掉

 

赞(0)
未经允许不得转载:TI中文支持网 » [请教]ARM与DSP通过QMSS实现核间通信,发现ARM侧对CACHE 写回与无效操作没有起作用,为何?
分享到: 更多 (0)