On Thursday, August 06, 2015 at 07:03:24 PM, Stefano Babic wrote: > Hi Marek, > > On 06/08/2015 16:28, Marek Vasut wrote: > > On Thursday, August 06, 2015 at 04:14:34 PM, Fabio Estevam wrote: > >> Hi Stefano and Marek, > >> > >> Thanks for the suggestions. > >> > >> On Thu, Aug 6, 2015 at 10:38 AM, Stefano Babic <sba...@denx.de> wrote: > >>> There is the possibility to set a malloc area inside SPL: > >>> > >>> CONFIG_SYS_SPL_MALLOC_START > >>> CONFIG_SYS_SPL_MALLOC_SIZE > >>> you do not need a lot of space, and you can try to put it inside the > >>> IRAM. > >>> > >>> This should guarantee that spi_alloc_slave() works. > >> > >> So I tried moving them to the internal RAM: > >> > >> --- a/include/configs/imx6_spl.h > >> +++ b/include/configs/imx6_spl.h > >> @@ -70,8 +70,8 @@ > >> > >> #else > >> #define CONFIG_SPL_BSS_START_ADDR 0x18200000 > >> #define CONFIG_SPL_BSS_MAX_SIZE 0x100000 /* 1 MB > >> */ > >> > >> -#define CONFIG_SYS_SPL_MALLOC_START 0x18300000 > >> -#define CONFIG_SYS_SPL_MALLOC_SIZE 0x3200000 /* 50 MB */ > >> +#define CONFIG_SYS_SPL_MALLOC_START 0x900000 > >> +#define CONFIG_SYS_SPL_MALLOC_SIZE 0x8000 > >> > >> #define CONFIG_SYS_TEXT_BASE 0x17800000 > >> #endif > >> #endif > >> > >> but still getting spi_alloc_slave() to fail. > > > > You want to avoid this "CONFIG_SYS_SPL_MALLOC_*" stuff, as it increases > > the SPL size by 3kiB compared to MALLOC_F . Also, MALLOC_F needs just > > the base address of the malloc area to work (see my email). > > It does not matter at the moment, because Fabio's issue is not yet > solved. But is it not CONFIG_SYS_SPL_MALLOC the preferred way for SPL ? > Setting the array with MALLOC_F looks like a hack. And > CONFIG_SYS_SPL_MALLOC is *already* set for i.MX6, lool at > include/configs/imx6_spl.h: > > #define CONFIG_SYS_SPL_MALLOC_START 0x18300000 > #define CONFIG_SYS_SPL_MALLOC_SIZE 0x3200000 /* 50 MB */ > > This is in RAM, of course. Increasing the size by 3KiB is not IMHO for > i.MX6 a problem, there is enough space in IRAM. But what is surprising > is that Fabio gets a Null pointer by malloc().
The malloc is set up only at the beginning of board_init_r(), but Fabio needs to use the SPI in board_init_f(), so of course he does not have the malloc operational at that point. The MALLOC_F if intended to be used before RAM is operational (ie. before board_init_r() is invoked), so it looks like the correct tool to use here. Setting up a full malloc() in your small OCRAM is on the other hand a really bad idea. Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot