免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1327 | 回复: 0
打印 上一主题 下一主题

转:6410平台上配置linux的DDR参数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览
转自:http://hi.baidu.com/%B4%FA%CD%F2%BB%D4/blog/item/7a74bada8b14523933fa1cdc.html

最近需要做把内存升级到128M,但是后来发现现有的板子都是64M的。所以就没有升级了,但是看到一些资料很有价值。现在转载如下    

前段时间为了解决一个从128M升级到256M的DDR问题,搞的是焦头烂额。最后在别人讨论的情况下终于试出来了正确结果,下来还得自己总结下。

      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)


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP