第二十篇:DDR内存读写问题-USB Display项目

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

嵌入式系统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).


最新UPDATES:

通过对DDR的性能的学习与了解, 然后通过数学上的计算, 对以上两个问题有了比较彻底的分析与解决.

常常听有些人说, 底层软件工程师的工作, 就是"改硬件寄存器", 也有人讲, 码农的工作, 就是写代码, 复杂点的东西, 就是一些逻辑, 没有多少价格在这里.

事实上, 说这些话的人, 要么是外行, 要么是内行中做过的东西浅尝则止的, 真正要把底层软件做好, 把性能提上去, 要学要做要走的路, 很多很多很长.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值