对于嵌入式系统中DDRx初始化的总结
来源:互联网 发布:软件集成商 编辑:程序博客网 时间:2024/06/05 16:31
一、学习相关的基础知识:
(1)了解DDRx的外部引脚及其作用
(2)了解的大致时序和相关时序参数的关系
(3)了解DDRx的初始化过程以及配置寄存器的功能
对于以上的一些知识,我已经在《关于学习DDR2时值得一看的资料》中总结过了,大家可以去看看。
(4)了解CPU核、内存控制器及DDRx间的关系
过去在PC中他们三者的关系一般是:
而现在的大多数PC构架中,为了性能,CPU多集成了DDRx控制器,所有现在的关系如下:
但是在嵌入式CPU中,他们三者的关系是:
所以在嵌入式系统中初始化DDRx的顺序应该是先初始化好DDRx控制器,然后通过DDRx控制器初始化外部DDRx芯片。
~~~~~~~~~~以下是CPU初始化DDRx代码的一般步骤~~~~~~~~~~~~~
二、配置内存控制器
(1)根据DDRx芯片大小、位宽和连接方式配置控制寄存器(其中包含了地址映射的配置)
(2)根据所用DDRx芯片的AC特性配置控制器的时序参数寄存器
(3)根据电路板和走线的特性配置DDRx控制器中PHY的控制寄存器(当前仅在部分高端嵌入式芯片中需要)
四、初始化外部DDRx芯片
在上面的参数的配置完成后,就可以开始对外部的DDRx芯片执行初始化过程了。这个根据不同的DDRx控制器可能有不同的情况:
(1)手工:需要操作DDRx控制器的寄存器(指令寄存器),按照DDRx的初始化规范来一步一步手工初始化。(例如三星的S5PV210)
(2)自动:只需要在DDRx控制器的寄存器中触发某个位,DDRx控制器就会帮你自动完成初始化。(例如Ti的DM816x)
这两者各有利弊:手动的方式虽然繁琐,但是给程序员更多的控制权和知情权,比如在DDR2的OCD调整中就可以手动实现,优化传输特性。反之自动方式遂简洁,但是(除非你用高级的逻辑分析仪看)你不知道控制器初始化的细节,也无法从中调整,但是就算是这样也必须遵守JEDEC(电子设备工程联合委员会)的DDR2标准文档。
但是从DDR2 的标准来看,初始化中可以设置的变量基本都已经在初始化控制寄存器时给出了,是板级相关不可变的。只有极少数配置和OCD调整是可变的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在完成以上工作后,一般DDRx内存就可以通过映射好的地址访问了,此后bootloader一般就会进入代码自拷贝到内存运行的工作。
- 对于嵌入式系统中DDRx初始化的总结
- 对于嵌入式系统中DDRx初始化的总结
- 对于嵌入式系统中DDRx初始化的总结
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统中看门狗的使用总结
- 嵌入式系统中看门狗的使用总结
- 对于arm嵌入式系统的一点认识
- 嵌入式Linux系统初始化的过程
- 嵌入式Linux系统初始化的过程
- 嵌入式系统中常用文件系统的制作总结
- 嵌入式Linux系统中对GPIO操作的方法总结
- 嵌入式系统的基础总结
- 对于嵌入式交叉编译总结
- 对于嵌入式系统的学习 应该可以告一段落了
- 对于嵌入式系统开发流程有了解的吗
- 友盟社会化分享 ### 微信发送被拒绝 微信与朋友圈点击无响应
- 原生APP和Web APP的区别
- Servlet生命周期
- java Map key value 取值的方法
- jQuery Mobile
- 对于嵌入式系统中DDRx初始化的总结
- Lua中的基本数据类型详细介绍
- Message,MessageQueue,Looper,Handler,HandlerThread
- SecondaryNameNode--Failed to start secondary namenode
- leetcode | Reverse Linked List
- 关于C#中深拷贝和浅拷贝的认识
- Nagios配置——添加Linux主机监控
- No resource identifier found for attribute 'cardBackgroundColor' in package异常解决
- hdu5030 Rabbit's String 后缀数组