初级会员
- 积分
- 88
- 金钱
- 88
- 注册时间
- 2020-4-1
- 在线时间
- 21 小时
|
之前在测试memcpy速度时发现开启缓存提高效率时会出现外设读取内存数据不更新的情况,查了好久终于找到了解决方案,从arch\arm\mm\cache-v7中找出来的,做成了c函数,将cpu cache回写到内存中,经测试可用,但还有模糊的地方
void v7_cache_flush_range(unsigned int *start, unsigned int *end)
{
//dcache_line_size siz2, siz3
unsigned int siz2 = 64, siz3, dir;
siz3 = siz2 - 1;
dir = (unsigned int)start & (~(siz3));
while (dir <= (unsigned int)end)
{
asm("mcr p15, 0, r0, c7, c14, 1 "); // clean & invalidate D / U line
dir += siz2;
}
asm("dsb st ");
}
|
|