哎,没有人鸟我啊。继续调查中,知道好用为止。
昨天改了关于内存的下面几点。
tiny4412的内存是两块K4B2G1646C-HCH9(2Gb 128Mb*16banks)
Super4412的内存是两块K4B4G1646B-HCK0(4Gb 256Mb*16banks)
察看Exynos 4412 datasheet,18章中MEMCONFIG0和MEMCONFIG1寄存器有以下几位设置有问题。
chip_col[11:8] Number of Column Address Bits
chip_row[7:4] Number of Row Address Bits
chip_bank[3:0] Number of Banks
在文件mem_init_4412.S的L73,L75,L215,L217分别对这些bit进行了如下设置
ldr r1, =0x40e01323 @Interleaved?
str r1, [r0, #DMC_MEMCONFIG0]
ldr r1, =0x60e01323
str r1, [r0, #DMC_MEMCONFIG1]
最后12bit的值为0x323,对应含义为column=10bits, row=14bits, bank=8
然而对于Super4412的内存column=10bits, row=15bits, bank=16
其中bank的设置很奇怪,控制器的这一位寄存器最大只能支持到8banks,但是采用的DDR都是16banks的,不明白应该怎么设置了。
所以只是把row从14改成15.也就是将最后的323改成333。
另外需要把1GB的内存设置改成2GB,
首先修改tiny4412.h,如下
#else
#define CONFIG_NR_DRAM_BANKS 4
#endif
改成:
#else
#define CONFIG_NR_DRAM_BANKS 8
#endif
然后修改board/samsung/tiny4412/tiny4412.c L197加上下面代码
gd->bd->bi_dram[4].start = PHYS_SDRAM_5;
gd->bd->bi_dram[4].size = PHYS_SDRAM_5_SIZE;
gd->bd->bi_dram[5].start = PHYS_SDRAM_6;
gd->bd->bi_dram[5].size = PHYS_SDRAM_6_SIZE;
gd->bd->bi_dram[6].start = PHYS_SDRAM_7;
gd->bd->bi_dram[6].size = PHYS_SDRAM_7_SIZE;
gd->bd->bi_dram[7].start = PHYS_SDRAM_8;
gd->bd->bi_dram[7].size = PHYS_SDRAM_8_SIZE;
编译启动后依然不行,继续调查中。。。。。。。哎