6410平台上配置Linux的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
....
#define CONFIG_NR_DRAM_BANKS 1
#define PHYS_SDRAM_1
#define PHYS_SDRAM_1_SIZE 0x10000000 //rico
首先只用了DMC1一个BANK,其次SDRAM的大小要改成256M。
2,UBOOT中的smdk6410.h
#define DMC1_MEM_CFG
#define DMC1_MEM_CFG2
#define DMC1_CHIP0_CFG
0x50<8)+(0xF0<0))
#define DMC_DDR_32_CFG
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
#else
#define PHYS_SIZE
6410平台LinuxDDR参 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)