[PATCH 05/13] imx: imx8mn_evk: correct stack/malloc adress

Peng Fan peng.fan at nxp.com
Wed Dec 30 01:55:21 CET 2020


> Subject: Re: [PATCH 05/13] imx: imx8mn_evk: correct stack/malloc adress
> 
> On Mon, Dec 28, 2020 at 7:28 AM Peng Fan (OSS) <peng.fan at oss.nxp.com>
> wrote:
> >
> > From: Peng Fan <peng.fan at nxp.com>
> >
> > Move SP to end of OCRAM space. Drop MALLOC_F to make it alloc from
> > stack space.
> >
> > Signed-off-by: Peng Fan <peng.fan at nxp.com>
> > ---
> >  drivers/power/power_i2c.c    | 8 ++++----
> >  include/configs/imx8mn_evk.h | 9 +++------
> >  2 files changed, 7 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/power/power_i2c.c b/drivers/power/power_i2c.c
> > index 5a0455e119..b67ac2f027 100644
> > --- a/drivers/power/power_i2c.c
> > +++ b/drivers/power/power_i2c.c
> > @@ -23,7 +23,7 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val)
> >
> >         if (check_reg(p, reg))
> >                 return -EINVAL;
> > -#if defined(CONFIG_DM_I2C)
> > +#if CONFIG_IS_ENABLED(DM_I2C)
> >         struct udevice *dev;
> >         int ret;
> >
> > @@ -67,7 +67,7 @@ int pmic_reg_write(struct pmic *p, u32 reg, u32 val)
> >                 return -EINVAL;
> >         }
> >
> > -#if defined(CONFIG_DM_I2C)
> > +#if CONFIG_IS_ENABLED(DM_I2C)
> >         return dm_i2c_write(dev, reg, buf, pmic_i2c_tx_num);  #else
> >         return i2c_write(pmic_i2c_addr, reg, 1, buf, pmic_i2c_tx_num);
> > @@ -83,7 +83,7 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)
> >         if (check_reg(p, reg))
> >                 return -EINVAL;
> >
> > -#if defined(CONFIG_DM_I2C)
> > +#if CONFIG_IS_ENABLED(DM_I2C)
> >         struct udevice *dev;
> >
> >         ret = i2c_get_chip_for_busnum(p->bus, pmic_i2c_addr, @@
> -131,7
> > +131,7 @@ int pmic_reg_read(struct pmic *p, u32 reg, u32 *val)  int
> > pmic_probe(struct pmic *p)  {
> >         debug("Bus: %d PMIC:%s probed!\n", p->bus, p->name); -#if
> > defined(CONFIG_DM_I2C)
> > +#if CONFIG_IS_ENABLED(DM_I2C)
> >         struct udevice *dev;
> >         int ret;
> >
> > diff --git a/include/configs/imx8mn_evk.h
> > b/include/configs/imx8mn_evk.h index a6333085fe..61db244e98 100644
> > --- a/include/configs/imx8mn_evk.h
> > +++ b/include/configs/imx8mn_evk.h
> > @@ -20,17 +20,14 @@
> >         (QSPI0_AMBA_BASE +
> CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR *
> > 512)
> >
> >  #ifdef CONFIG_SPL_BUILD
> > -#define CONFIG_SPL_STACK               0x95fff0
> > -#define CONFIG_SPL_BSS_START_ADDR      0x00950000
> > -#define CONFIG_SPL_BSS_MAX_SIZE                SZ_8K   /* 8 KB
> */
> > +#define CONFIG_SPL_STACK               0x980000
> > +#define CONFIG_SPL_BSS_START_ADDR      0x950000
> > +#define CONFIG_SPL_BSS_MAX_SIZE                SZ_4K   /* 8 KB
> */
> 
> If ATF sits at 960000 and CONFIG_SPL_BSS_START_ADDR starts at 0x950000,
> 8K should fit with extra space.  I think it should be able to go even larger.
> 
> I took your patch and applied it to the Beacon 8mn kit and, I was able to set
> the max size to SZ_64K with CONFIG_SPL_BSS_START_ADDR set to
> 0x950000

No need so large BSS area.

> 
> The reference manual states that OCRAM starts at 910000.  What is located
> in the space between 910000 and 950000?

As you see, it is SPL, nothing else. But spl + ddr firmware is very large.

Regards,
Peng.

> 
> >  #define CONFIG_SYS_SPL_MALLOC_START    0x42200000
> >  #define CONFIG_SYS_SPL_MALLOC_SIZE     SZ_512K /* 512 KB */
> >  #define CONFIG_SYS_ICACHE_OFF
> >  #define CONFIG_SYS_DCACHE_OFF
> >
> > -/* malloc f used before GD_FLG_FULL_MALLOC_INIT set */
> > -#define CONFIG_MALLOC_F_ADDR           0x00940000
> > -
> >  /* For RAW image gives a error info not panic */  #define
> > CONFIG_SPL_ABORT_ON_RAW_IMAGE
> >
> > --
> > 2.28.0
> >


More information about the U-Boot mailing list