6410平臺上配置Linux的DDR參數(shù)
自己的硬件平臺才采用的是6410的DMC1即32位的DRAM控制器,兩個16位128M的DDR的地址線是共在一起連在6410的16根地址線上,數(shù)據(jù)線是并在一起成32位連在6410上,其它控制腳對應接上。軟件之前寫入128M運行OK,改成256M出現(xiàn)頁面分配錯誤導致fatal error而死機。最后發(fā)覺是少改了一個地方。
本文引用地址:http://www.ex-cimer.com/article/201611/319060.htm綜合起來有以下三個地方要確認:
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的時序參數(shù)照規(guī)格書確認即可。此處說明的是DDR初始化時要寫入DDR控制器的幾個寄存器參數(shù),包括位寬,片選要求等等。我之前導致死機的錯誤在于片選有錯誤,所以改成256M后導致頁面地址尋址錯誤。
3,Kernel中的.config
可以用vi .config進入。保證CONFIG_SMDK6410_RAMSIZE_256M打開,替換掉CONFIG_SMDK6410_RAMSIZE_128M即可。體現(xiàn)在archarmmach-s3c6400includemachMemory.h:
#ifdef CONFIG_SMDK6410_RAMSIZE_256M
#define PHYS_SIZE
#else
#define PHYS_SIZE
評論