2016-12-16 82 views
3

我们在批量生产定制ARM板中使用了一批新的DDR3 IC,它们在某些存储器参数和最显着的数据速率(1600 VS 1866 MT/s)方面与旧的不同。以编程方式区分DDR3

有趣的是旧的bootloader仍然可以在新主板上启动,并且我们已经运行了72小时以上的内存测试并没有错误,但是我们不确定不同的时序参数是否会产生任何影响从长远来看。

那么有没有什么办法来以编程方式区分它们?或者,除了手动检查DDR3部件号外,对不同的引导程序进行编程的最佳方式是什么?

+0

运行1866与1600的定时运行很好。您的电路板布局将具有与零件本身一样的影响力。在大多数主机控制器上,您没有太多时间来控制时序。我会在CAS之间保留CAS等。否则,你将会在不同的主板上产生微妙的软件竞争条件。此外,EMF(Rf噪声)在两种可能违反FCC类型规定的电路板上会有所不同。一般来说,你必须处理它。一个NV存储器的地方。如果你的CPU具有融合的内存,这是理想的。 HW BOM也可以改变GPIO的上拉/下拉。 –

+0

为什么不使用安全,较低的频率。对于大多数平台而言,10%不会显着降低性能。基准你的关键部分(无论如何你必须这样做),只有当你真的**有问题时才考虑这个问题。这样你就不必维护两个不同版本的固件。 – Olaf

回答

1

如果您的DDR3 DIMM模块带有SPD EEPROM,则可以通过I2C查询EEPROM以获取内存的时序参数。

但是您的电路板上可能只有原始DRAM芯片。我知道无法查询DDR3 DRAM芯片的任何信息,例如零件编号或时序参数。

通常,DRAM参数被硬编码到嵌入式ARM设备上的引导加载程序中。 SoC之间的完全不同。也许你可以使用像GPIO线那样绑定不同值的东西来确定哪个版本板正在运行,然后根据该参数编程合适的DRAM参数?通常有几条GPIO线非常易于读取,并且可以放入引导加载程序配置DRAM之前运行的代码。