U-boot中对SDRAM初始化

it2022-05-05  119

项目中遇到需要把64M  SDRAM升级到128M的情况,我们板子上是两片32M的K4S561632C,而K4S511632C是64M的,直接更换不需要重新画PCB。原理图参见TQ2440—V2核心板,将对应电阻重焊后,就可将原来接到A24,A25引脚上的地址线换到A25,A26上。

u-boot中board/samsung/hfrk2440/lowlevel_init.S中:

#define BWSCON 0x48000000

/* BWSCON */#define DW8   (0x0)#define DW16   (0x1)#define DW32   (0x2)#define WAIT   (0x1<<2)#define UBLB   (0x1<<3)

#define B6_BWSCON  (DW32)                //两片16位SDRAM并成32位#define B7_BWSCON  (DW32)

#define B6_MT   0x3 /* SDRAM */ 

/* Determine the memory type for bank6 and bank7.  00 = ROM or SRAM 01 = Reserved (Do not use) 10 = Reserved (Do not use) 11 = Sync. DRAM */#define B6_Trcd   0x1   /* 3clk *//*在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟),也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定 的延迟.S3C2440的FCLK最大的频率值为400Mhz,HCLK最大为133Mhz,PCLK最大为67Mhz。再查一下关于这些个时钟频率的使用就可以知道,内存方面,是由HCLK来控制的。那么经过简单的计算就可以知道,内存的一个时钟周期,最短为7.519ns(1s/133M)。再看一下K4S561632E-UC75的数据手册,关于Trcd的值的描述,K4S561632E-UC75的内存,这个值,最少需要20ns。如果 Trcd为2clk,则时间不够,差一点儿,所以只能填3clk。如果最短的时间都能满足,那么当内存工作在比133Mhz低的情况下,就更能满足了,所以这里的Trcd为3clk。*/#define B6_SCAN   0x1 /* 9bit *//* K4S561632H的内存地址的Column Address为(CA0 ~ CA8),即9bit,所以值为0x1,对应64M SDRAM。    K4S511632H的内存地址的Column Address为(CA0 ~ CA9),即10bit,所以值为0x2,对应128M SDRAM。*/#define B7_MT   0x3 /* SDRAM */#define B7_Trcd   0x1 /* 3clk */#define B7_SCAN   0x1 /* 9bit */

/* REFRESH parameter */#define REFEN   0x1 /* Refresh enable */#define TREFMD   0x0 /* CBR(CAS before RAS)/Auto refresh *//* SDRAM Refresh Mode   0 = CBR/Auto Refresh 1 = Self Refresh  In self-refresh time, the SDRAM control signals are driven to the appropriate level. */#define Trc   0x3 /* 7clk */#define Tchr   0x2 /* 3clk */

#if defined(CONFIG_S3C2440)#define Trp   0x2 /* 4clk */#define REFCNT   1012#else#define Trp   0x0 /* 2clk */#define REFCNT   1269

  /* 根据HCLK设置SDRAM的刷新参数,主要有REFCNT寄存器。由于我所用的开发板的HCLK设置为100Mhz,根据SDRAM芯片(K4S561632数据手册上注:64ms refresh period (8K Cycle))的参数计算REFCNT寄存器的值。计算公式如下:R_CNT=2^11+1-SDRAM时钟频率(MHz)*SDRAM刷新周期(us)*/#endif

u-boot的include/configs/hfrk2440.h/*----------------------------------------------------------------------- * Physical Memory Map */#define CONFIG_NR_DRAM_BANKS 1    /* we have 1 bank of DRAM *//* 它是由nGCS确定,两片SDRAM的CS都接到了nGCS0上 */#define PHYS_SDRAM_1  0x30000000 /* SDRAM Bank #1 *//* SDRAM的物理基地址,blank6的地址就是0x30000000 */#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB *//* SDRAM的大小,根据板子硬件配置,如果是128M,则应该是0x08000000 */#define PHYS_FLASH_1  0x00000000 /* Flash Bank #1 */

#define CONFIG_SYS_FLASH_BASE  PHYS_FLASH_1

/*-----------------------------------------------------------------------*/

相关参考http://hi.baidu.com/

转载请注明原文地址: https://win8.8miu.com/read-20879.html

最新回复(0)