Hi,
am5728平台一个emif接口是可以支持2GBddr的吧,我使用sprac36b 这个配置ddr参数的工具,修改了uboot下ddr的初始化参数,但是探测到1GB的空间,另外1GB空间无法访问?这个是什么原因呢?
sdk版本ti-processor-sdk-linux-am57xx-evm-03.03.00.04,2片 64Mbit x 16 I/Os x 8banks ddr3,uboot下配置
.dmm_lisa_map_0 = 0x00000000,
.dmm_lisa_map_1 = 0x00000000,
.dmm_lisa_map_2 = 0x80700100,
.dmm_lisa_map_3 = 0xFF020100,
.is_ma_present = 0x1
};
static const struct emif_regs beagle_x15_emif1_ddr3_532mhz_emif_regs = {
.sdram_config_init = 0x61851bb2,
.sdram_config = 0x61851bb2,
.sdram_config2 = 0x0,
…
我修改emif_config寄存器
.sdram_config_init = 0x79851bb2,
.sdram_config = 0x79851bb2,
.sdram_config2 = 0x0,
ibank_pos=3, ebank_pso=1或者0,我就能探测到2GB的空间,CCS下也能使用memery file来测试2GB空间是能够正常访问的
但是在系统启动后malloc 100M左右的空间,写操作时内核报错,报错信息
[ 28.512600] Core dump to |/bin/false pipe failed
[ 28.521619] Core dump to |/bin/false pipe failed
[ 28.527388] Core dump to |/bin/false pipe failed
[ 28.646794] Core dump to |/bin/false pipe failed
[ 28.660191] Core dump to |/bin/false pipe failed
[ 28.665176] Kernel panic – not syncing: Attempted to kill init! exitcode=0x0000000b
[ 28.665176][ 28.674357] CPU1: stopping
[ 28.674364] CPU: 1 PID: 667 Comm: sh Not tainted 4.4.41-gf9f6f0db2d #69
[ 28.674366] Hardware name: Generic DRA74X (Flattened Device Tree)
[ 28.674371] Backtrace:[ 28.674388] [<c0013a88>] (dump_backtrace) from [<c0013c84>] (show_stack+0x18/0x1c)
[ 28.674397] r7:ed465f40 r6:20010193 r5:00000000 r4:c0962b0c
[ 28.674407] [<c0013c6c>] (show_stack) from [<c02b5b88>] (dump_stack+0x8c/0xa0)
[ 28.674415] [<c02b5afc>] (dump_stack) from [<c0016dfc>] (handle_IPI+0x184/0x198)
[ 28.674423] r7:ed465f40 r6:00000000 r5:00000001 r4:c0933408
[ 28.674429] [<c0016c78>] (handle_IPI) from [<c0009534>] (gic_handle_irq+0x78/0x7c)
[ 28.674437] r7:fa212000 r6:ed465f40 r5:fa21200c r4:c09388c0
[ 28.674443] [<c00094bc>] (gic_handle_irq) from [<c00147d4>] (__irq_svc+0x54/0x90)
[ 28.674446] Exception stack(0xed465f40 to 0xed465f88)
[ 28.674452] 5f40: ed465fb0 00000001 00000000 a0010030 ed464000 00000000 ed465fb0 00000000
[ 28.674458] 5f60: 00000000 ed464000 ed464000 ed465fac ed465fb0 ed465f90 c000fc74 c00135f0
[ 28.674461] 5f80: 60010013 ffffffff
[ 28.674470] r9:ed464000 r8:00000000 r7:ed465f74 r6:ffffffff r5:60010013 r4:c00135f0
[ 28.674478] [<c00135a0>] (do_work_pending) from [<c000fc74>] (slow_work_pending+0xc/0x20)
[ 28.674486] r7:00000000 r6:c0014cf0 r5:00000000 r4:b6e42a7e
[ 28.793393] —[ end Kernel panic – not syncing: Attempted to kill init! exitcode=0x0000000b
[ 28.793393]
这片DDR是 rowsize = 16,sprac36b给的配置是ibank_pos=0,ebank_pos=0, rowsize 是不使用的,那它的默认值是多少呢?
Jian Zhou:
原理图设计上检查过么?
hongbin li1:
回复 Jian Zhou:
原理图检查过,在gel文件中配置ibank_pos=3, ebank_pso=1或者0时,rowsize配置为16,我用CCS仿真器测试ddr2GB都能够正常访问,
ibank_pos=0, ebank_pso=0时,rowsize配置为16是不起作用的,然后只能访问1GBddr,原理图设计上都认为的没问题,您有什么建议吗?
Shine:
回复 hongbin li1:
ibank_pos=0, ebank_pso=0时,rowsize配置为16是不起作用的,具体的address mapping可以参考TRM文档。
15.3.4.12.1 Address Mapping for IBANK_POS = 0 and EBANK_POS = 0
www.ti.com/…/spruhz6j.pdf
hongbin li1:
回复 Shine:
这部分文档我看了,我的理解是ibank_pos=0, ebank_pso=0时,rowsize默认配置为16,我的理解对吗