您的位置 首页 报告

6410平台上装备Linux的DDR参数

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

前段时间为了处理一个从128M升级到256M的DDR问题,搞的是焦头烂额。最终在他人评论的情况下总算试出来了正确成果,下来还得自己总结下。

自己的硬件渠道才选用的是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 //rico 1016
#define PHYS_SDRAM_1 MEMORY_BASE_ADDRESS
#define PHYS_SDRAM_1_SIZE 0x10000000 //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)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/264753.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部