首页 > 代码库 > 第二十篇:DDR内存读写问题

第二十篇:DDR内存读写问题

最近在实际的项目中碰到这样的问题:

嵌入式系统DDR (RBC row, bank, columne), 每块1Gbit816, 两块由片选决定读写其中的一块.

Memory controller通过AXI连接在SOC中.


1.

在I-CACHE没有使能的情况下, 通过MC访问DDR有三路TRAFFIC, 分别是取指令, CPU刷/写FRAME BUFFER, DMA取/读FRAME BUFFER的数据

在低分辨率的情况下, 没有发现图像闪烁, 到了高分辨率的情况(1680*1050 60p, 720p, 或者1080p, RGB8888)下,就有图像闪烁

I-CACHE使能的情况下, 本以为MC访问DDR的原本三路TRAFFIC降到了二路, 情况能够改善,结果,问题更加严重

2.

同时, 将指令与FRAME BUFFER放在相同的DDR颗粒与不同的颗粒,也会产生不同的效果(闪烁与否)


关于这两个问题, 明显就在于对DDR/MC的了解与特定情况的分析上

不同的读写方式(RBC, BRC, B RH CH RL CL), 不同的刷新模式, DMA BURST的方式(长度), DMA OUTSTANDING的数目, CPU往FRAME BUFFER中写的方式(DWORD or LOAD ASSEMBLY).