s5pv210 512M内存配置问题(Android--uboot)(100分求教)
情况是这样。
深圳友坚的开发板。自己在这个基础上改成了 64Mbx16bit的内存。
双通道。
DMC0,DMC1分别并联2片。
根据内存的datasheet,此内存行线是A0~A12,列线是A0~A9,
目前做了如下修改,但是uboot都跑不起来。打印第一个OK之后就停止了。
====smdkv210singke.h=======
#define CONFIG_NR_DRAM_BANKS 2 //
#define PHYS_SDRAM_1 0x20000000
#define PHYS_SDRAM_1_SIZE 0x10000000
#define PHYS_SDRAM_2 0x40000000
#define PHYS_SDRAM_2_SIZE 0x10000000
......
#define DMC0_MEMCONFIG_0 0x20F01213 //F0目前尚不清楚意义是什么按原来的值配置的,datasheet中说是AXI base address的偏移量,也被用来间接表示此块内存的大小,但没给出计算方法。不知有没有人知道这个值是如何确定的
#define DMC0_MEMCONFIG_1 0x28F01213 //同上
#define DMC1_MEMCONFIG_0 0x40F01213
#define DMC1_MEMCONFIG_1 0x48F01213
============lowlevelInit.S===================
修改mmu_table为
.section .mmudata, "a"
.align 14
// the following alignment creates the mmu table at address 0x4000.
.globl mmu_table
mmu_table:
.set __base,0
// Access for iRAM
.rept 0x100
FL_SECTION_ENTRY __base,3,0,0,0
.set __base,__base+1
.endr
// Not Allowed
.rept 0x200 - 0x100
.word 0x00000000
.endr
.set __base,0x200
// should be accessed
.rept 0x300 - 0x200
FL_SECTION_ENTRY __base,3,0,1,1
.set __base,__base+1
.endr
.rept 0x400 - 0x300
.word 0x00000000
.endr
.set __base,0x400
// should be accessed
.rept 0x500 - 0x400
FL_SECTION_ENTRY __base,3,0,1,1
.set __base,__base+1
.endr
.rept 0x800 - 0x500
.word 0x00000000
.endr
.set __base,0x800
// should be accessed
.rept 0xb00 - 0x800
FL_SECTION_ENTRY __base,3,0,0,0
.set __base,__base+1
.endr
/* .rept 0xc00 - 0xb00
.word 0x00000000
.endr */
.set __base,0xB00
.rept 0xc00 - 0xb00
FL_SECTION_ENTRY __base,3,0,0,0
.set __base,__base+1
.endr
//.set __base,0x200
// 256MB for SDRAM with cacheable
//.rept 0xD00 - 0xC00
//FL_SECTION_ENTRY __base,3,0,1,1
//.set __base,__base+1
//.endr
// access is not allowed.
@.rept 0xD00 - 0xC80
@.word 0x00000000
@.endr
.set __base,0xD00
// 1:1 mapping for debugging with non-cacheable
.rept 0x1000 - 0xD00
FL_SECTION_ENTRY __base,3,0,0,0
.set __base,__base+1
.endr
以上是全部修改,编译出来的uboot在目标板上仅输出一个OK后就重置了。
如果您知道,请您花几分钟的时间告诉一下小弟吧。实在感激不尽