|
|
发表于 2026-8-22 09:19:13
|
显示全部楼层
ALIGNED(32) volatile uint32_t *camera_sdram = (volatile uint32_t *)0xC0800000;
void test(void)
{
uint32_t i;
printf("\r\n==============\r\n");
// 写入前,确保 SDRAM 区域缓存无效
// SCB_InvalidateDCache_by_Addr((uint32_t*)camera_sdram, 32);
for(i = 0; i < 8; i++)
{
camera_sdram[i] = i;
printf("%08x %08x\r\n", camera_sdram[i], i);
}
// 写入后,D-Cache 中这 32 字节的数据刷回 SDRAM
SCB_CleanDCache_by_Addr((uint32_t*)camera_sdram, 32);
printf("\r\n==============\r\n");
// 读取前,使D-Cache对应缓存行失效,强制从 SDRAM 重新读取
SCB_InvalidateDCache_by_Addr((uint32_t*)camera_sdram, 32);
for(i = 0; i < 8; i++)
{
printf("%08x %08x\r\n", camera_sdram[i], i);
}
printf("\r\n==============\r\n");
}
|
|