SDRAM初始化问题(Freescale iMX31)
我正在尝试修改现有的初始化序列(SDRAM的低级初始化)以适应硬件配置的更改:我的iMX31上的现有SDRAM被替换为不同的大小,否则使用相同的类型/制造商/布局/引脚/时序。根据规格。 简要的设置场景和错误行为:我设法使板启动(顺序是这样的:从NAND执行引导加载程序,将“ step2引导加载程序”复制到RAM,从RAM执行“ step2引导加载程序”)。但是我似乎有些设置错误,因为从RAM执行(跳转到步骤2之后)始终失败。 我进行了大量的深入测试以识别错误的参数,结果如下:-从NAND或JTAG执行时,单字节/字读取/写入工作-从NAND执行时,按块/突发写入似乎有效( JTAG也有意思):-逐块写入后,我需要在任何SDRAM地址上进行多次读取才能读取正确的字节/字(!)-如果将列设置修改为仅使用较高的(+1)列用于“加载模式”,而不是预充电/刷新,则它起作用,但是不一致(根据我的理论,它对于较低的地址范围可靠地起作用,在这里,丢失的列无关紧要)。 要了解一下我的配置:RAM中的设置与该问题中的设置几乎相同。这并不奇怪,因为它们是由Freescale提供的,除了RAM时序之外: 在Freescale iMX31上,如何将SDRAM地址转换为CPU地址? 我的原始设置是相同的(链接中也是64MB SDRAM),我的新RAM是128MB。所有参考板均提供64MB或128MB,因此iMX31及其衍生版本支持这两个值。 我必须进行的更改(注意:假设!)仅在RAM的COLUMN配置中(多一栏)。RAM的大小是原来的两倍,但规范要求时机完全相同,等等。由于它只有一列(请参见上面的链接,因此,新RAM的预充电,刷新和加载模式寄存器从0x92100000变为0x92200000,例如)没有其他改变。 问题1:我的假设是否有意义,如果所有时序和物理芯片特性(影响驱动强度,时序和功耗)都相似,则列数的更改可能是“本地的”(不影响其他设置)?有趣的是,我将自己的设置与其他许多在线可用设置(U-Boot,Red-Boot的128MB)进行了比较,除了板级特定设置(例如驱动器强度)之外,我看不出有什么不同。 问题2:我上面的错误行为(写工作,只读部分错误)可能是RAM的某些无效设置所独有的。有谁能给我建议以更详细地了解哪种设置?也可以设置“安全”参数,以便即使性能降低,该系统也可以使我缩小罪魁祸首。