DDR与SRAM间数据搬运Cache一致性问题
DDR之间数据搬运寄存器设置,DDR和SRAM间搬运的寄存器设置,SRAM间搬运的寄存器设置是相同的。只需要更改源和目的地址即可。
但是一旦目的地址是DDR就设置到DDR和SRAM一致性的问题。
Cache无效:由于EDMA是在CPU不干扰的情况下进行数据搬运,但是CPU读取数据的时候是通过Cache来读取数据的,当EDMA将目的地址设置为DDR时,CPU并不知道DDR的数据已经改变,当然也不会去更新Cache中的内容,于是当CPU读取该块DDR内容的时候仍然是Cache中原来没有更新的数据,这种情况的时候需要将原来的DDR那块数据对应的Cache置位无效,从新写入Cache的值,就可以保证DDR和Cache的一致性了。而对应的Cache无效函数是:Cache_Invalid();
Cache 回写:同样DMA在搬运数据的时候还可能存在另一种情况,处理器在处理数据的时候会将数据先存放到Cache 中,此时Cache中的数据可能还没有来的急写入到内存中去,这时候DMA要向外设写入由处理器提供的数据的时候,DMA会直接从DDR中获得数据,搬运到外设,而这个数据并不是想要搬运的数据,这种情况下要调用Cache回写函数,在DMA进行数据搬运之前要将Cache中的数据回写到DDR中,保证DDR和Cache 的数据的一致性。
联系客服