6410平台上配置DDR的参数
2009-11-09 11:30
183 查看
前段时间为了解决一个从128M升级到256M的DDR问题,搞的是焦头烂额。最后在别人讨论的情况下终于试出来了正确结果,下来还得自己总结下。DDR的PIN脚用法如下:
S3C6410支持两个DRAM片选,可以分别接最大256MB的内存,该处理器用的DRAM控制器是来自ARM的PrimeCell Dynamic Memory Controller(PL340)。自己的硬件平台才采用的是6410的DMC1即32位的DRAM控制器,两个16位128M的DDR的地址线是共在一起连在6410的16根地址线上,数据线是并在一起成32位连在6410上,其它控制脚对应接上。软件之前写入128M运行OK,改成256M出现页面分配错误导致fatal error而死机。最后发觉是少改了一个地方。综合起来有以下三个地方要确认:
1,UBOOT中的smdk6410.h
#define MEMORY_BASE_ADDRESS 0x50000000
....
#define CONFIG_NR_DRAM_BANKS 1 /* we have 2 bank of DRAM *///rico 1016
#define PHYS_SDRAM_1 MEMORY_BASE_ADDRESS /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE 0x10000000 /* 256MB *///rico for DDR size
首先只用了DMC1一个BANK,其次SDRAM的大小要改成256M。
2,UBOOT中的smdk6410.h
#define DMC1_MEM_CFG ((1<<30)+(0<<21)+(0<<18)+(2<<15)+(0<<14)+(0<<13)+(0<<7)+(0<<6)+(3<<3)+(2<<0))
#define DMC1_MEM_CFG2 ((1<<11)+(3<<8)+(1<<6)+(0<<4)+(0<<2)+(1<<0))
#define DMC1_CHIP0_CFG ((1<<16)+(0x50<<8)+(0xF0<<0))
#define DMC_DDR_32_CFG 0x0
DDR的时序参数照规格书确认即可。此处说明的是DDR初始化时要写入DDR控制器的几个寄存器参数,包括位宽,片选要求等等。我之前导致死机的错误在于片选有错误,所以改成256M后导致页面地址寻址错误。
3,Kernel中的.config
可以用vi .config进入。保证CONFIG_SMDK6410_RAMSIZE_256M打开,替换掉CONFIG_SMDK6410_RAMSIZE_128M即可。体现在arch/arm/mach-s3c6400/include/mach/Memory.h:
#ifdef CONFIG_SMDK6410_RAMSIZE_256M
#define PHYS_SIZE (256 * 1024 * 1024)
#else
#define PHYS_SIZE (128 * 1024 * 1024)
S3C6410支持两个DRAM片选,可以分别接最大256MB的内存,该处理器用的DRAM控制器是来自ARM的PrimeCell Dynamic Memory Controller(PL340)。自己的硬件平台才采用的是6410的DMC1即32位的DRAM控制器,两个16位128M的DDR的地址线是共在一起连在6410的16根地址线上,数据线是并在一起成32位连在6410上,其它控制脚对应接上。软件之前写入128M运行OK,改成256M出现页面分配错误导致fatal error而死机。最后发觉是少改了一个地方。综合起来有以下三个地方要确认:
1,UBOOT中的smdk6410.h
#define MEMORY_BASE_ADDRESS 0x50000000
....
#define CONFIG_NR_DRAM_BANKS 1 /* we have 2 bank of DRAM *///rico 1016
#define PHYS_SDRAM_1 MEMORY_BASE_ADDRESS /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE 0x10000000 /* 256MB *///rico for DDR size
首先只用了DMC1一个BANK,其次SDRAM的大小要改成256M。
2,UBOOT中的smdk6410.h
#define DMC1_MEM_CFG ((1<<30)+(0<<21)+(0<<18)+(2<<15)+(0<<14)+(0<<13)+(0<<7)+(0<<6)+(3<<3)+(2<<0))
#define DMC1_MEM_CFG2 ((1<<11)+(3<<8)+(1<<6)+(0<<4)+(0<<2)+(1<<0))
#define DMC1_CHIP0_CFG ((1<<16)+(0x50<<8)+(0xF0<<0))
#define DMC_DDR_32_CFG 0x0
DDR的时序参数照规格书确认即可。此处说明的是DDR初始化时要写入DDR控制器的几个寄存器参数,包括位宽,片选要求等等。我之前导致死机的错误在于片选有错误,所以改成256M后导致页面地址寻址错误。
3,Kernel中的.config
可以用vi .config进入。保证CONFIG_SMDK6410_RAMSIZE_256M打开,替换掉CONFIG_SMDK6410_RAMSIZE_128M即可。体现在arch/arm/mach-s3c6400/include/mach/Memory.h:
#ifdef CONFIG_SMDK6410_RAMSIZE_256M
#define PHYS_SIZE (256 * 1024 * 1024)
#else
#define PHYS_SIZE (128 * 1024 * 1024)
相关文章推荐
- 6410平台上配置DDR的参数
- 6410平台上配置WIN CE的DDR参数
- 关于微信开放平台授权事件接收Url的配置以及参数接收
- UBOOT-2012-10在OK6410平台的移植(三)uboot 2012.10编译配置
- cocos2d-x-3.12 打包android apk时 怎么修改已经配置好的setup.py参数 和解决 XX不是一个有效的 Android 目标平台 错误
- UBOOT-2012-10在OK6410平台的移植(三)uboot 2012.10编译配置
- DDR地址另外配置+DDR初始化参数更改2
- Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7
- 我的Linux工作平台配置与展示
- Hadoop基础教程-第5章 YARN:资源调度平台(5.3 YARN集群配置)(草稿)
- .NET平台下WEB应用程序的部署(安装数据库和自动配置)
- Mysql参数配置优化说明
- VS2008中的“解决方案配置”和“解决方案平台”不见了(Release和Debug)的解决方法
- Hibernate3的配置参数汇总
- sparksql参数配置
- MYSQL配置参数优化详解
- nginx(三)详细配置参数及实际场景使用实例介绍
- Spring mvc中@Requestmapping参数配置
- 自制xml实现SQL动态参数配置
- uploadify动态更新配置参数方法uploadifySettings()报错“updateSettings is not a function”之解决办法