历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2021年12月07日 | 第十二章、Tiny4412 U-BOOT移植十二 DDR3初始化顺序

2021-12-07 来源:eefocus

现在网上很难搜到Exynos4412的源码,基本上我没有找到任何资料有过分析DDR3的内存初始化代码的。在看U-Boot的这段代码时,也徘徊了很久,不知道如下手,很多文章或资料都将这一段分析过程有意无意的隐藏掉了,最多也只是提一下说参考裸板的代码,在找不到任何资料的情况下,我只能依靠芯片手册上,三星在内存控制器这一章,写的关于DDR3的初始化顺序的21个步骤来一条一条去读去看,在安静下来看了芯片手册以后,我发现三星给的U-Boot的DDR初始化代码和芯片手册上的初始化步骤完全一致,有的时候,最好的资料其实就在手边,只是我一直在想着找捷径,学习哪有那么多捷径?

好好研读手册吧,第18章中有下面一段关于初始化的说明:



图12-1、DDR3初始化步骤说明截图

现在开始关注一下芯片手册上关于DDR3的初始化流程,找到手册 1046页,可以看到其有一段关于LPDDR2-S4的初始化步骤,LPDDR2表示低功耗DDR2,DDR3的初始化过程应和这个一样,我们就按这个过程来初始化DDR3:

18.3.1 LPDDR2-S4

Use the sequence givenhere to initialize LPDDR2 devices. Unless specified otherwise, these steps aremandatory. Note that the memory CK/CKn must be less than or equal to 50 MHzbefore you initialize the LPDDR2-S4 device.

1.  DMC must assert and hold CKE to a logic lowlevel to provide stable power for memory device and then apply stable clock.

2.  Set the PhyControl0.ctrl_start_point andPhyControl0.ctrl_inc bit-fields to a correct value according to clockfrequency. Set the PhyControl0.ctrl_dll_on bit-field to "1" toactivate the PHY DLL.

3.  DQS cleaning: Set the PhyControl1.ctrl_shiftcand PhyControl1.ctrl_offsetc bit-fields to the appropriate value according toclock frequency, board delay, and memory tDQSCK parameter.

4.  Set the PhyControl0.ctrl_start bit-field to"1".

5.  Set the ConControl. At this moment, anauto-refresh counter should be disabled.

6.  Set the MemControl. At this moment, all powerdown modes should be disabled.

7.  Set the MemConfig0 register. When there aretwo external memory chips, set the MemConfig1 register.

8.  Set the PrechConfig and PwrdnConfigregisters.

9.  Set the TimingAref, TimingRow, TimingData,and TimingPower registers according to memory AC parameters.

10.  Set the QosControl0 to 15 and QosConfig0 to15 registers when a certain bus master requires QoS scheme.

11.  Wait for the PhyStatus0.ctrl_lockedbit-fields to change to "1". Verify whether PHY DLL is locked.PHY DLLcompensates the changes of delay amount that pressure, volume, and temperaturevariation causes during memory operation. Therefore, you should not power offPHY DLL for reliable operation. It can be in power-off mode except when it runsat low frequency. When you use the power-off mode, set thePhyControl0.ctrl_force bit-field to the correct value according to thePhyStatus0.ctrl_lock_value[9:2] bit-field for fix delay amount. Clear thePhyControl0.ctrl_dll_on bit-field to turn off PHY DLL.

12.  Set the PhyControl1.fp_resync bit-field to"1" to update DLL information.

13.  Confirm that Clock Enable (CKE) is in a logiclow level at least 100ns after power on.

14.  Issue a NOP command by using the DirectCmdregister to assert and hold CKE to a logic high level.

15.  Wait for a minimum of 200 s.

16.  Issue a MRS command by using the DirectCmdregister to reset memory devices and program the operating parameters.

17.  Wait for minimum of 1 s.

18.  Issue a MRR command by using the DirectCmdregister to poll the DAI bit of the MRStatus register. This is to know whetheror not Device Auto-Initialization is complete.

19.  If there are two external memory chips,execute step 14 to 19 for chip1 memory device.

20.  Set the ConControl to turn on an auto-refreshcounter.

21.  Set MemControl register when you requirepower-down modes.

翻译上面的步骤:

1、DMC功能必须设置,并且要保持CKE为低电平,以便可以提供稳定的电源和时钟给DDR

2、根据时钟频率设置PhyControl0.ctrl_start_point 和 PhyControl0.ctrl_inc bit-fields,并且设置PhyControl0.ctrl_dll_on bit-field为 "1" 已启动PHY DLL。

3、DQS 清除,根据时钟频率、板子延时和芯片的tDQSCK参数设置PhyControl1.ctrl_shiftc 和PhyControl1.ctrl_offsetcbit-fields。

4、设置 PhyControl0.ctrl_start bit-field为"1"。

5、设置ConControl,此时,不能使能自动刷新计数器(auto-refresh counter )。

6. 设置MemControl,此时,所有的power down模式应关闭。

7、设置MemConfig0 寄存器,当外面有两片存储芯片时,设置MemConfig1寄存器。

8、设置 PrechConfig和 PwrdnConfig寄存器。

9、根据DDR3的 AC参数设置TimingAref, TimingRow,TimingData, 和 TimingPower寄存器。

10、当总线主控者需要QoS时序参数时,设置QosControl0 到15寄存器和QosConfig0 到 15寄存器。

11、等待 PhyStatus0.ctrl_lockedbit-fields 变成 "1",以确定 PHY DLL 是否锁定。PHY DLL 可以补偿压力、容积和温度等环境的变化,因为在芯片工作期间,我们不能关闭了PHY DLL的电源,只有当他在低的时钟频率时才可以切换到Power-off 模式,当我们用power-off 模式,参考PhyStatus0.ctrl_lock_value[9:2]的延时参数来设置PhyControl0.ctrl_force bit-field,清楚PhyControl0.ctrl_dll_on bit-field来关闭 PHY DLL。

12、设置PhyControl1.fp_resync bit-field 为 "1" 来更新 DLL的设置。

13、确保在电源上电后至少保持Clock Enable (CKE)在低电平100ns。

14、用DirectCmd 寄存器来执行一条NOP指令且保持CKE 为高电平。

15、至少等待200us。

16、发出MRS指令来重新设置存储芯片的操作参数。

17、至少等待1us。

18、用MRR指令来查询MRStatus的寄存器的DAI位,用这们来确定自动初始化过程是否完成。

19、如果外部有别的存储芯片,重复执行14到19步来设置芯片1。

20、设置ConControl来启动auto-refresh counter.

21、当我们要进行power-down模式,设置MemControl寄存器。

 

知道了上面的这些初始化步骤,大家试着去找一下三星给的裸板代码中关于SDRAM的BL1的代码,就比较清楚了。来对照自己板子上的芯片开始设置吧。

推荐阅读

史海拾趣

HEIMANN公司的发展小趣事

在电子行业中,HEC Inc(以下简称HEC)作为一家知名的科技公司,其发展历程充满了挑战与机遇。以下是五个关于HEC发展起来的相关故事,每个故事均基于事实描述:

1. 技术创新引领市场突破

HEC自成立之初便致力于技术创新,在通信设备领域取得了显著成就。公司研发的高效路由器和交换机产品,凭借其卓越的性能和稳定性,迅速在市场中占据一席之地。特别是在5G技术兴起的背景下,HEC提前布局,成功推出了多款支持5G网络的通信设备,满足了市场对高速、低延迟网络连接的迫切需求。这些技术创新不仅巩固了HEC在通信行业的领先地位,也为其后续的市场拓展奠定了坚实基础。

2. 环保理念推动可持续发展

随着全球对环保问题的日益重视,HEC积极响应号召,将绿色技术融入产品研发和生产过程中。公司推出的多款电子产品,如智能手机和平板电脑,均采用了环保材料和节能设计,有效降低了产品生命周期中的碳排放。此外,HEC还建立了完善的电子废弃物回收体系,实现了资源的循环利用。这些环保举措不仅提升了公司的品牌形象,也为其赢得了更多消费者的青睐和市场的认可。

3. 跨界合作拓展业务领域

为了进一步扩大市场份额,HEC积极寻求跨界合作机会。公司与多家知名汽车制造商合作,将先进的通信技术应用于车载智能系统中,提升了驾驶体验和行车安全。同时,HEC还与智能家居厂商合作,推出了多款智能家电产品,实现了家居设备的互联互通和远程控制。这些跨界合作不仅丰富了HEC的产品线,也为其带来了新的增长点。

4. 全球化战略布局

为了应对日益激烈的国际竞争,HEC制定了全球化发展战略。公司在全球范围内设立了多个研发中心和销售网络,以更好地了解当地市场需求并快速响应。通过整合全球资源,HEC成功推出了多款符合不同国家和地区消费者需求的产品。此外,公司还积极参与国际展会和交流活动,提升了品牌知名度和国际影响力。

5. 应对挑战实现转型升级

面对行业内的激烈竞争和技术变革,HEC始终保持着敏锐的洞察力和强大的适应能力。公司不断调整产品结构,加大研发投入,推动产品向高端化、智能化方向发展。同时,HEC还积极拥抱数字化转型,通过大数据、云计算等先进技术优化生产流程和管理模式,提高了生产效率和产品质量。这些努力使HEC在挑战中实现了转型升级,保持了持续稳健的发展态势。

Dongguan Jingyue Electronics Co Ltd公司的发展小趣事

在电子行业的激烈竞争中,Dongguan Jingyue Electronics Co Ltd始终将技术创新作为公司发展的核心驱动力。公司自成立之初就投入大量资源用于研发新技术和新产品。通过不断的努力,公司成功推出了一系列具有市场竞争力的电子产品,赢得了消费者的广泛认可。这些技术创新不仅提升了公司的品牌形象,也为公司带来了丰厚的利润。

ERGOBAHCO公司的发展小趣事

在快速发展的同时,ERGOBAHCO公司始终不忘履行社会责任和推动可持续发展。公司积极参与社会公益事业,捐款捐物支持贫困地区的教育、医疗等事业。同时,ERGOBAHCO公司还注重环保和节能减排工作,通过引进先进的环保技术和设备,实现了生产过程的绿色化、低碳化。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

Amidon Associates Inc公司的发展小趣事

ERGOBAHCO公司成立于20世纪90年代初,当时正值电子行业快速发展的黄金时期。公司创始人李明(化名)看准了市场对于高质量电子配件的需求,决定从电子连接器这一细分领域入手。然而,初创时期公司面临着资金短缺、技术落后等诸多挑战。李明凭借对市场敏锐的洞察力,成功争取到了几笔关键的投资,并带领团队攻克了一系列技术难关。通过不懈努力,ERGOBAHCO公司逐渐在电子连接器领域站稳了脚跟。

ELPIDA公司的发展小趣事

在被美光收购后,ELPIDA的技术和人才得到了保留和传承。美光利用ELPIDA的技术优势和市场经验,继续推出了一系列高性能的DRAM产品。同时,ELPIDA也在新的领域进行探索和尝试,如生物生产等。这些努力不仅为美光公司带来了新的增长点,也为ELPIDA品牌注入了新的活力。

以上五个故事概述了ELPIDA公司在电子行业中的重要发展历程。这些故事反映了公司在市场竞争中的起伏和挑战,以及公司在技术和市场上的不断探索和创新。

Advanced Electronic Packaging公司的发展小趣事

Advanced Electronic Packaging公司自创立之初,便专注于电子封装技术的研发与创新。在一次关键的技术研讨会上,公司的研发团队成功突破了传统封装材料的限制,开发出了一种新型的、具有更高热导率和机械强度的封装材料。这一技术的突破,不仅提高了电子产品的性能和稳定性,还大幅降低了生产成本。凭借这一优势,Advanced Electronic Packaging公司迅速在电子封装材料市场占据了领先地位,为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

xilinx EDK guide

好东西要分享啊!…

查看全部问答>

如何设置默认连接的WIFI路由器

各位大虾,请问在GSPI8686注册表中,如何可以设置默认连接wifi网络?谢谢!…

查看全部问答>

截短文件大小失败

HANDLE hFile=CreateFile(L\"BC.txt\",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);//EVC下这里用CreateFileForMapping if(hFile==INVALID_HANDLE_VALUE) { MessageBox(L\"Create file failed!\") ...…

查看全部问答>

WIN XP驱动程序无法实现自动安装,请各位大侠指点迷津!多谢!

我们开发了一个USB  MODEM,想开发一个驱动程序的自动安装程序。但是发现在先连接上USB设备是再安装驱动程序可以成功;但是如果不插USB设备,安装完成后,插入USB she设备后,驱动程序无法实现自动安装,WIN XP会弹出“驱动设备安装“对 ...…

查看全部问答>

TI北京研讨会随想:DM8168——新一代高性能多媒体处理器

2010年8月9日,全球最大的芯片供应商德州仪器 (TI)在新世纪日航饭店举行了“TI技术研讨会(北京)“站的活动。整个研讨会分五个主题会场。在MCU/DSP主题讨论会上,TI公司DSP业务发展经理郑小龙先生介绍了TI最新的媒体处理器TMS320DM8168。 DM8168 ...…

查看全部问答>

STM32的任何端口都可以作为外部中断输入么?

                                 比如说像51里的INT0,在STM32里面这样的中断引脚是怎么定位的?另外最多可以有多少个外部中断输入?…

查看全部问答>

求助MSP430学习?

我想学习MSP430,可是不知道买什么开发板?上次参加活动获得MSP430 LaunchPad 发现不会玩,好是困惑。帖子上关于如何学习MSP430的回复很少,望好心者提供建议 …

查看全部问答>

tiny6410的地电位正常通电的情况下相对人体有75V!

最近正在学习tiny6410,今天将开发板上电后不小心碰了一下地引脚,被电了一下,只是有点麻麻的感觉。于是用万用表测量。首先使用直流档,测得地和人体的电位差为40mv。接下来用交流档,测得地和人体的电位为75V。然后将排插的开关断开,用万用表交 ...…

查看全部问答>

TI 电池电量监测芯片 bq27x00 进行精确计量电量值

尽管电压测量已经单独被用于许多便携式产品估算电池的剩余电量,但是这种方法可能存在高达 50% 的误差。电池电压和电量之间的关系会随放电率、温度和电池老化程度而有所不同。例如,相比相同电量损耗的低放电率,高放电率会带来更大的压降。当电池 ...…

查看全部问答>