Hi Linus, Le 24/10/2011 09:02, Linus Walleij a écrit : > When booting from Flash, the Integrator remaps its flash memory > from 0x24000000 to 0x00000000, and starts executing it at > 0x00000000. This ROM thus hides the RAM underneath and first > 0x40000 bytes of the memory cannot be tested by get_ram_size(). > So let's test from 0x40000 to the end of detected memory > instead. > > Signed-off-by: Linus Walleij<linus.wall...@linaro.org> > --- > ChangeLog v1->v2: > - Rebased to U-Boot ARM HEAD at Alberts request, see message > 4ea1c8e7.7090...@aribaud.net > --- > board/armltd/integrator/integrator.c | 19 +++++++++++++++---- > 1 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/board/armltd/integrator/integrator.c > b/board/armltd/integrator/integrator.c > index c8d2bc7..83f047c 100644 > --- a/board/armltd/integrator/integrator.c > +++ b/board/armltd/integrator/integrator.c > @@ -86,6 +86,15 @@ int misc_init_r (void) > return (0); > } > > +/* > + * The Integrator remaps the Flash memory to 0x00000000 and executes U-Boot > + * from there, which means we cannot test the RAM underneath the ROM at this > + * point. It will be unmapped later on, when we are executing from the > + * relocated in RAM U-Boot. We simply assume that this RAM is usable if the > + * RAM on higher addresses works fine. > + */ > +#define REMAPPED_FLASH_SZ 0x40000 > + > int dram_init (void) > { > gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; > @@ -111,15 +120,17 @@ extern void dram_query(void); > * > */ > sdram_shift = ((cm_reg_sdram& 0x0000001C)/4)%4; > - gd->bd->bi_dram[0].size = 0x01000000<< sdram_shift; > - gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, > + gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE + > + REMAPPED_FLASH_SZ, > 0x01000000<< sdram_shift); > } > #else > - gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; > - gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, > + gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE + > + REMAPPED_FLASH_SZ, > PHYS_SDRAM_1_SIZE); > #endif /* CM_SPD_DETECT */ > + /* We only have one bank of RAM, set it to whatever was detected */ > + gd->bd->bi_dram[0].size = gd->ram_size; > > return 0; > }
Applied to u-boot-arm/master, thanks! Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot