Linux系统中DDR3硬件初始化实验
  wod1c0aaFBnM 2023年11月12日 28 0


       大家好,我是ST。

       今天的话,主要和大家聊一聊,如何使用Cortex-A芯片自带的RAM,很多时候要运行Linux的话是完全不够用的,必须要外接一片RAM芯片,驱动开发板上的DDR3。

目录

第一:何为RAM和ROM

第二:DDR初始化与测试

第三:DDR框架图基本分析


   

Linux系统中DDR3硬件初始化实验_驱动开发

第一:何为RAM和ROM

       RAM:随机存储器,可以随时进行读写操作,速度很快,掉电以后数据会丢失。比如内存条,SRAM、DDR等都是RAM。

       ROM:只读存储器,ROM和Flash可以将容量做的很大,而且掉电以后数据不会丢失,适合用来存储资料,比如音乐、图片、视频等信息。

       综上所述,RAM速度快,可以直接和CPU进行通信,但是掉电以后数据会丢失,容量不容易做大。ROM速度虽然慢,但是容量大,适合存储数据。

第二:DDR初始化与测试

      恩智浦有一个非常好用的DDR初始化工具,叫做ddr_stress_tester。此工具特点如下:

      第一:此工具通过USB OTG接口和开发板相连接,也就是通过USB OTG口进行DDR的初始化与测试。

      第二:此工具有一个默认的配置文件,为execl表,通过此表可以设置板子的DDR信息,最后生成一个.inc结尾的DDR初始化脚本文件。这个.inc文件包含了DDR的初始化信息,一般都是寄存器的地址和对应的寄存器值。

      第三:此工具会加载.inc表里面的DDR初始化信息,然后通过USB OTG接口向板子下载DDR相关的测试代码,包括初始化代码。

校准完成以后会得到两个寄存器对应的校准值,我们需要用这个新的校准值来重新初始化 DDR。

第三:DDR框架图基本分析

                              

Linux系统中DDR3硬件初始化实验_寄存器_02

       


①、地址线


       这部分是地址线,一共 A0~A18,也就是 19 根地址线,因此可访问的地址大小就是


2^19=524288=512KB。不是说 IS62WV51216 是个 1MB 的 SRAM 吗?为什么地址空间只有


512KB?前面我们说了 IS62WV51216 是 16 位宽的,也就是一次访问 2 个字节,因此需要对


512KB 进行乘 2 处理,得到 512KB*2=1MB。位宽的话一般有 8 位/16 位/32 位,根据实际需求


选择即可,一般都是根据处理器的 SRAM 控制器位宽来选择 SRAM 位宽。


②、数据线


       这部分是 SRAM 的数据线,根据 SRAM 位宽的不同,数据线的数量要不同,8 位宽就有 8


根数据线,16 位宽就有 16 根数据线,32 位宽就有 32 根数据线。IS62WV51216 是一个 16 位宽


的 SRAM,因此就有 16 根数据线,一次访问可以访问 16bit 的数据,也就是 2 个字节。因此就


有高字节和低字节数据之分,其中 IO0~IO7 是低字节数据,IO8~IO15 是高字节数据。


③、控制线


         SRAM 要工作还需要一堆的控制线,CS2 和 CS1 是片选信号,低电平有效,在一个系统中


可能会有多片 SRAM(目的是为了扩展 SRAM 大小或位宽),这个时候就需要 CS 信号来选择当


前使用哪片 SRAM。另外,有的 SRAM 内部其实是由两片 SRAM 拼接起来的,因此就会提供


两个片选信号。


       OE 是输出使能信号,低电平有效,也就是主控从 SRAM 读取数据。


       WE 是写使能信号,低电平有效,也就是主控向 SRAM 写数据。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  tprTMCWDkFAR   2023年12月07日   31   0   0 头文件#include初始化
  bWLIE0wKp9lo   2024年05月31日   86   0   0 Linux硬件
wod1c0aaFBnM