当前位置:首页|资讯

【鼎阳原创︱DDR 】嵌入式系统内存设计探讨:软件问题

作者:鼎阳科技发布时间:2024-09-02

DDR系列内存接口虽然在JEDEC中有明确的技术指标和设计要求,但是在实际的主控原厂DEMO设计和设备厂商的商用开发过程中,因为不同品牌内存和主控的接口匹配,时序逻辑控制以及目标板的PCB Layout处理都有可能出现诸如初始化不规范,时序逻辑不满足要求,信号串扰从而导致一系列的系统问题。

本文将长期以来内存问题处理的一些典型案例和大家进行分享讨论,并根据问题的成因,分为软件和硬件两大部分分别展开。为了讨论的方便,本文将底层驱动的时序逻辑问题归为硬件问题部分进行讨论。最后,本文将综合一些有效的措施和分析手段,就如何规避内存问题提出一些思路和大家一起探讨。

软件问题,顾名思义就是因为设计者在驱动开发过程中出现了没有严格按照Jedec要求设计而导致的问题。

一、DDR3 SDRAM内存复位问题

1、问题描述

某宽带产品在客户入网测试场景中出现了软件复位后系统无法启动问题,通过串口信息发现是DDR初始化失败导致。

2、问题分析

该产品是BCM方案的PON产品,小系统采用DDR3内存,此次问题的出现是在软件复位条件下,而DDR3内存与之前DDR内存的区别主要在于有Reset管脚,需要进行复位处理。Reset是DDR3内存新增加的一项重要功能,它使DDR3内存的初始化变得比以前简单。当Reset命令运行时,DDR3内存就会停止所有工作,并切换到最少量活动状态,节约能耗,这个时候,DDR3内存所有数据接收与发送器都会关闭,内部程序装置将会复位,延迟锁定回路(DLL)与时钟电路也会停止工作而不会对数据总线上的任何要求作出反映。

图1 单板DDR3 SDRAM复位设计图

产品设计中DDR3的复位设计最初的采用RESET_N信号进行DDR3内存的复位,这个信号由一个外置的Watchdog电路输出,确保在各种复位条件下都会有复位信号给到内存芯片。但实际的BOM中R83不上件,不采用这个复位信号。R81为1K电阻,R84为0.1uF电容,实际采用的是一个外部RC电路进行复位。所以,基于系统复位的3种情况,我们可以发现:

a. 上电复位,RC复位电路作用,起到复位作用。

b. 硬件复位,小系统会重新初始化内存,这样也没有问题。

c. 软件复位,小系统如果代码中没有清除内存的操作,可能会导致问题。

而在DDR3的操作中,Jedec定义了内存需要进行复位操作,否则会存在问题。

图2 JEDEC定义RESET要求

也就是说,在软复位条件下,如果系统代码没有内存清除操作的动作,那么内存可能会存在问题,导致系统Crash.在和原厂以及客户沟通后,在不更改设计的情况下,采取如下器件调整,恢复采用RESET_N作为DDR3内存的复位信号,以解决此问题。

图3 改善调整图示

因为Watchdog的RESET_N输出为3.3V,DDR内存为1.5V,所以,我们需要将R83上件为1.8K,R84上件为1.5K,R81不上件,实现DDR3内存Reset1.5V的要求,通过初步的修改验证,是可以满足要求的。

3、解决方案

恢复采用RESET_N作为DDR3内存的复位信号,以解决此问题。

4、问题总结

DDR3内存芯片有Reset复位信号要求,需要注意:最小系统软件复位如果不会有内存重新清除初始化的代码操作的话,一定要有外部的复位信号给到内存芯片,否则会导致概率性的系统初始化问题。

二、DDR1 SDRAM CLK变频问题

1、问题描述

某宽带产品在批量生产过程中出现了概率性的启动失效问题,通过串口信息分析发现系统在初始化内存的过程中不再打印信息,系统Crash。

2、问题分析

该产品是已经出货近1年的批量机型,而此次单板使用的内存也是前期批量使用验证过的,理论上不应该出现问题,通过进一步对比发现,主要的差异在于软件采用了主控原厂的最新驱动代码.为了确认问题,我们将问题反馈给了主控和内存原厂。主控原厂的FAE反馈目前驱动代码的更新主要就是根据应用需求,将CLK频率由166Mhz降低为133Mhz使用,其他部分没有改动,而内存原厂的初步反馈也验证了内存时钟频率目前为133Mhz,但内存原厂同时也量测了的单板的内存接口时序,发现时序指标都是满足要求的。

时序指标是满足要求的,但系统却出现概率性初始化失败,这个问题比较奇怪了。到底是什么原因导致这个问题,因为目前的差异主要在于主控的底层驱动在初始化过程中对于CLK进行了降频,是不是这一块导致了问题。基于此,内存原厂对于DDR SDRAM的初始化过程进行了逻辑分析和信号分析,终于确认了问题是因为主控原厂更新了初始化驱动代码。软件是工作在CLK_166Mhz,更新后工作在CLK_133Mhz,但没有在最终变频133Mhz后重新Setting EMRS/MRS导致的问题主要的初始化差异如下:

a.(133Mhz_Fail) Power on初始化步骤

Power on→36Mhz→110Mhz→166Mhz(下EMRS-MRS-MRS1) →36Mhz→110Mhz→133Mhz   

b. (166Mhz_PASS) Power on初始化步骤

Power on→36Mhz→110Mhz→166Mhz(下EMRS-MRS-MRS1)

而JEDEC标准中对于CLK变频要求如下:

标准: JESD79-2F,Page66th

CLK变频操作要求:

- Before CLK change

In power down mode,ODT off,2 CLK waiting after CKE stable LOW level

- CLK change

Before exiting precharge power down mode

- After CLK change

MRS/EMRS reset for DLL relocking

图4 CLK change要求图示

到了这里,问题就比较明了了。主控原厂在驱动更新的时候,CLK最后一次变频为133Mhz时,没有重新设置EMRS、 MRS0、MRS1。导致DLL Relocking data出错,进而引发一定的初始化风险。

3、解决方案

主控原厂更新驱动代码,在CLK变频后增加重新设置EMRS、MRS0、MRS1的动作,经过反复验证确认,可以彻底解决此问题。

4、问题总结

CLK最终稳定频率后设置EMRS、MRS0、MRS1是JEDEC对于DDR SDRAM初始化的一个基本要求。但是在此次原厂软件人员更新代码的过程中,却遗漏了最终变频后的设置操作导致了此问题。因此即使是主控原厂也需要加强代码的审核工作,否则问题流到了应用厂商的二次开发阶段,就导致不必要的麻烦。

三、DDR SDRAM驱动参数设定问题

1、问题描述

某产品在研发验证阶段发现WIFI部分在进行长时间测试后会出现WIFI没有反应,通过console口观察发现/proc/interrupts里wlan0的interrupt沒有再增加。

2、问题分析

软件人员进行分析发现GIMR(Global Interrupt Mask Register) register中的PCIE_IE被关掉了,因此PCIE接的Wifi不管有任何中断发生且反应在GISR(Global Interrupt Status Register) register,都不会处理,导致wifi沒有反应。此外GIMR另有一個bit19不应该设定却被设定,检查所有会操作GIMR的代码都不可能发生整个现象,转而怀疑memory controller是否设定有误造成memory access的错乱,检查后发现载底层驱动bootloader在config.mk的设定有误,造成DDR calibration后的参数错误,错误的参数在某些单板上会有无法预期的memory access错乱发生。

在config.mk中理应定义DDR_133和DDR_166,但都没有定义,导致DDR采用166Mhz的Calibration方式,因为Calibration Fail所以填入DDR_166的缺省值,而目标板实际跑在了133Mhz,参数使用的是DDR_166的缺省值,造成了RX access time的Margin太小,导致某些单板的memory access错误风险。

3、解决方案

修改boot/romInit.s关于DDR设定的Flag判断,就算DDR_133和DDR_166都没有定义也会默认按照DDR_133来处理。此外修正DTR (DRAM timing register)在DDR 133的设定,提高稳定度。

4、问题总结

在实际的DDR应用中可能会存在多种不同频率的主频工作状态,需要底层驱动人员做好boot/romInit.s关于DDR设定的Flag判断,并调整好DTR参数,确保稳定性。

四、问题综合讨论

从以上几个软件原因导致的内存问题我们可以发现,只要严格按照JEDEC的要求进行DDR SDRAM的初始化操作,实际上问题是可以避免的。关键是我们的研发人员对于JEDEC的要求基于实际的应用开发情况如何确保没有疏漏的问题。这就需要基于标准理解的角度在实际的代码的检视和审核中发现和规避此问题.这其实也就是设计约束的问题了。

『关于鼎阳』

鼎阳科技(SIGLENT)是一家专注于通用电子测试测量仪器及相关解决方案的公司。作为一家全球性的仪器仪表领域创新解决方案的制造商,鼎阳是全球极少数具有数字示波器、信号发生器、频谱分析仪和矢量网络分析仪四大通用电子测试测量仪器主力产品研发、生产和销售能力的通用电子测试测量仪器企业,同时也是国内极少数同时拥有这四大主力产品并且四大主力产品全线进入高端领域的企业。公司总部位于深圳,在美国克利夫兰、德国奥格斯堡、日本东京成立了子公司,在成都成立了分公司,产品远销全球80多个国家和地区。未来,鼎阳科技还将持续深耕通用电子测试测量领域,为中国工业化进程贡献力量。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1