Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / S3C6410,Tiny6410,Mini6410,MoblieDDR内存驱动

1.       概述S3C6410内存控制器是采用的PL340内存控制芯片。AMBA APB3.0接口协议规定,可以通过编程将AXI从总线接口和APB主总线接口进行桥接,实现二者总线上的数据的传输。 DRAM控制器可以通过配置兼容SDRAM类型芯片。通过向DRAM控制器中PL340写入内存芯片配置参数,内存时序,来控制内存工作。 DRAM控制器可以直接从SDRAM或DRAM接收一个控制命令。通过将操作命令写入direct_cmd寄存器,操作SDRAM进行对应操作。通过向memc_cmd寄存器写入状态模式命令,使DRAM控制器进入对应的工作模式。例如:向direct_cmd寄存器写入:Prechargeall’,‘Autorefresh’,‘NOP’,and ‘MRS’ 等命令,可以让SDRAM芯片分别执行不同操作,向memc_cmd寄存器写入一些状态命令可以让SDRAM芯片进入’Config’, ‘Ready’, and ‘Low_power’等工作模式。 DRAM控制器支持两种节能模式。当SDRAM处于不活动状态并且持续一定的时钟周期时,DRAM控制器会自动将SDRAM进入预充电节能模式或正常节能模式下以降低系统功耗。当驱动操作DRAM控制器进入对应的STOP(停止),Deep Stop(深度睡眠),Sleep Mode(睡眠)等模式时,SDRAM芯片进入自刷新的节能模式。l  支持SDR SDRAM,Mobile SDR SDRAM,DDR SDRAM和Mobile DDR SDRAM类型芯片l  支持两个内存芯片l  支持64位的AMBA AXI总线类型l  支持16位、64位内存总线n  存储器接口1:支持16位DDR SDRAM和Mobile DDR SDRAM类型芯片 支持32位DDR SDRAM,Mobile DDR SDRAM,Mobile SDR SDRAM和SDR SDRAM类型芯片不支持16位Mobile SDR SDRAM和SDR SDRAM类型芯片l  地址空间:存储器接口1支持最多2Gb地址空间l  支持正常节能模式和预充电的节能模式l  数据传输低延迟特性l  外部存储器总线优化l  通过设置SFR寄存器支持选择外部存储器选型l  通过SFR寄存器配置存储器的时序l  支持扩展MRS指令集l  工作电压:存储器接口1:   1.8V,2.5V 2.       SDRAM类型内存接口DRAM控制器支持最多两个相同类型的内存芯片,每个芯片最大容量256M。所有芯片共享相同引脚(时钟使能引脚和片选引脚除外),如表1-1所示给出了DRAM控制器的外部存储器引脚配置信息。 3.       SDRAM初始化在系统上电后,必须通过软件配置SDRAM接入DRAM控制器并且初始化DRAM控制器,下面给出DDR、MOBILE DDR SDRAM的初始化流程。a)         向mem_cmd寄存器写入0b10,使其进入NOP工作状态b)         向mem_cmd寄存器写入0b00,使其进入Prechargeall(整片预充电)工作状态c)         向mem_cmd寄存器写入0b11,使其进入Autorefresh(自刷新)工作状态d)         再次向mem_cmd寄存器写入0b11,使其进入Autorefresh(自刷新)工作状态e)         向mem_cmd寄存器写入0b10,使其进入MRS工作状态,并且地址空间内的EMRS必须置位f)          再次向mem_cmd寄存器写入0b10,使其进入MRS工作状态,并且地址空间内的MRS必须置位 4.       DRAM寄存器1)         DRAM控制器状态寄存器(P1MEMSTAT) 
P1MEMSTAT描述初始值
保留[31:9]--
芯片数量[8:7]内存控制器支持的芯片最大数量:01 = 2片6410只支持2片芯片,初始化为只读的0101
芯片类型[6:4]内存控制器支持的芯片类型:100 = MSDR/SDR/MDDR/DDR中任一类型100
芯片位宽[3:2]接入内存芯片的位宽:00 = 16位  01 = 32位10 = 保留  11 = 保留01
控制器状态[1:0]DRAM控制器状态:00 = Config配置状态01 = Ready就绪状态10 = Pause暂停状态11 = Low-Power节能状态00
实际上,读到的有用信息就是Controller Status和Memory width。 2)         DRAM控制器命令寄存器(P1MEMCCMD) 
P1MEMCCMD描述初始值
保留[31:3]未定义,写入0-
Memc_cmd[2:0]设置内存控制器的工作状态:000 = Go001 = sleep010 = wakeup011 = Pause100 = Configure101~111 = 保留 
最开始应该配置为0x4,是处于Configure状态。在配置完所有的DRAM之后,将该寄存器设置为0x0,处于运行状态。 3)         直接命令寄存器(P1DIRECTCMD) 
P1DIRECTCMD描述初始值
保留[31:23]未定义,写入0 
扩展内存命令[22](见下表) 
芯片号[21:20]映射到外部存储芯片地址的位 
命令[19:18]具体命令(见下表) 
Bank地址[17:16]当以MRS或EMRS命令访问时,映射到外部存储器的Bank地址位 
 [15:14]未定义,写入0 
地址线0~13[13:0]当以MRS或EMRS命令访问时,映射到外部存储器的内存地址位 
用于发送命令到DRAM和访问DRAM中的MRS和EMRS寄存器。通过该寄存器初始化DRAM,先设置为NOP模式,然后设置为PrechargeAll进行充电,然后设置EMRS和MRS寄存器,一般是这么一个流程。具体的要参见你所使用的DRAM的datasheet。