[U-Boot] [PATCH V2 2/2] common: add new boot media kconfig entry
Masahiro Yamada
yamada.masahiro at socionext.com
Wed Jun 29 02:33:42 CEST 2016
Hi.
2016-06-28 15:39 GMT+09:00 Peng Fan <van.freenix at gmail.com>:
> Hi Masahiro,
> On Tue, Jun 28, 2016 at 02:24:00PM +0900, Masahiro Yamada wrote:
>>Hi.
>>
>>
>>2016-06-28 14:02 GMT+09:00 Peng Fan <van.freenix at gmail.com>:
>>> Hi Tom,
>>>
>>> On Fri, Jun 24, 2016 at 06:57:44PM -0400, Tom Rini wrote:
>>>>On Sun, Jun 19, 2016 at 06:20:52PM +0800, Peng Fan wrote:
>>>>> Hi Masahiro,
>>>>>
>>>>> +Simon
>>>>> On Fri, Jun 17, 2016 at 07:08:23PM +0900, Masahiro Yamada wrote:
>>>>> >2016-06-17 18:39 GMT+09:00 Peng Fan <van.freenix at gmail.com>:
>>>>> >> Add CONFIG_{SD|NAND|ONENAND|SPI|QSPI|SATA}_BOOT kconfig entries.
>>>>> >>
>>>>> >> SoCs supports loading U-Boot from different medias to DRAM, such as
>>>>> >> i.MX6/7 supports loading U-Boot to DRAM from sd/emmc/nand/qspi/spi/sata
>>>>> >> and etc. For i.MX, imximage will generate different IVT headers according
>>>>> >> to boot medias.
>>>>> >>
>>>>> >> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>>>>> >> Cc: Simon Glass <sjg at chromium.org>
>>>>> >> Cc: Heiko Schocher <hs at denx.de>
>>>>> >> Cc: Joe Hershberger <joe.hershberger at ni.com>
>>>>> >> Cc: Bin Meng <bmeng.cn at gmail.com>
>>>>> >> Cc: Christophe Ricard <christophe-h.ricard at st.com>
>>>>> >> Cc: Nikita Kiryanov <nikita at compulab.co.il>
>>>>> >> Cc: Francois Retief <fgretief at spaceteq.co.za>
>>>>> >> Cc: Tom Rini <trini at konsulko.com>
>>>>> >> ---
>>>>> >>
>>>>> >> V2:
>>>>> >> Move NOR_BOOT to the patch 1/2.
>>>>> >> The idea of this patch is for adding different boot media support for
>>>>> >> i.MXes. And I'll post out following patches if this patch is accepted.
>>>>> >> I ran moveconfig.py, but I did not include the results into a patch.
>>>>> >> This patch does not break the boards which defined NAND_BOOT/SD_BOOT and
>>>>> >> etc, and I prefer to let board owners to move to defconfig later.
>>>>> >>
>>>>> >> common/Kconfig | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>>>>> >> 1 file changed, 48 insertions(+)
>>>>> >>
>>>>> >> diff --git a/common/Kconfig b/common/Kconfig
>>>>> >> index 04d092c..f0f6ee1 100644
>>>>> >> --- a/common/Kconfig
>>>>> >> +++ b/common/Kconfig
>>>>> >> @@ -108,6 +108,54 @@ config NOR_BOOT
>>>>> >> as the ROM only partially sets up pinmux. We also default to using
>>>>> >> NOR for environment.
>>>>> >>
>>>>> >> +config NAND_BOOT
>>>>> >> + bool "Support for booting from NAND flash"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via NAND flash. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> +config ONENAND_BOOT
>>>>> >> + bool "Support for booting from ONENAND"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via ONENAND. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> +config QSPI_BOOT
>>>>> >> + bool "Support for booting from QSPI flash"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via QSPI flash. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> +config SATA_BOOT
>>>>> >> + bool "Support for booting from SATA"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via SATA. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> +config SD_BOOT
>>>>> >> + bool "Support for booting from SD/EMMC"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via SD/EMMC. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> +config SPI_BOOT
>>>>> >> + bool "Support for booting from SPI flash"
>>>>> >> + default n
>>>>> >> + help
>>>>> >> + Enabling this will make a U-Boot binary that is capable of being
>>>>> >> + booted via SPI flash. This is not a must, some SoCs need this,
>>>>> >> + somes not.
>>>>> >> +
>>>>> >> endmenu
>>>>> >
>>>>> >
>>>>> >Do you intend to replace
>>>>> >CONFIG_SPL_NOR_SUPPORT
>>>>> >CONFIG_SPL_NAND_SUPPORT
>>>>> >CONFIG_SPL_USB_SUPPORT
>>>>> >CONFIG_SPL_MMC_SUPPORT
>>>>> >etc. with these options?
>>>>> >
>>>>>
>>>>> I missed these.
>>>>>
>>>>> >
>>>>> >Currently, common/spl/spl.c uses CONFIG_SPL_*_SUPPORT
>>>>> >to enable/disable capable boot devices.
>>>>>
>>>>> I think we could use a common option to replace the ones used in SPL.
>>>>
>>>>I'm not sure that CONFIG_xxx_BOOT and CONFIG_SPL_xxx_SUPPORT are the
>>>>same thing. For example, CONFIG_NOR_BOOT on am335x means "we are
>>>>building to support booting from NOR, so include all of that stuff
>>>>that's normally not included". While CONFIG_SPL_NAND_SUPPORT means
>>>>include NAND support in SPL, which is not mutually exclusive with MMC,
>>>>etc.
>>>
>>> ok. Then, better keep them. For i.MX6, CONFIG_XX_BOOT have the same meaning
>>> with am335x as you said.
>>>
>>> Do you have other comments? If not touching SPL, I would like to see this
>>> patch set applied.
>>>
>>> Thanks,
>>> Peng.
>>>>
>>
>>
>>I am not familiar with TI SoCs,
>
> Me too.
I missed to read git-log, I meant:
I am not familiar with i.MX SoCs.
(and I am not familiar with TI SoC, either)
>>so please help me to understand this.
>>
>>
>>+config NOR_BOOT
>>+ bool "Boot from NOR"
>>+ default n
>>+ help
>>+ U-Boot image is stored in NOR flash.
>>
>>
>>In the statement "U-Boot image is stored in NOR flash",
>>what "U-Boot" stands for?
>>SPL? or U-Boot proper?
>>
>>
>>If it points to SPL, it makes sense.
>
> In my case,
> SPL + U-Boot + OS. means SPL
> Only U-Boot + OS. means U-Boot.
So, this board disables SPL
for an in-place executable device, like NOR.
I did likewise for my boards before,
and I found this was a PITA.
For a boot mode with SPL,
lowlevel_init code must be compiled into SPL.
For a boot mode without SPL,
lowlevel_init code must go into U-Boot proper.
Then, I ended up sprinkling ifdef CONFIG_SPL and
ifdef CONFIG_SPL_BUILD here are there.
This also loaded me per boot-mode testing
because boot sequence is too different for with/without SPL.
In my personal opinion, SPL should be enabled all the time.
Even for NOR boot, we can split the boot image
into SPL and U-Boot proper by using common/spl/spl_nor.c
Now, my SoC "select SPL"
and I can use an identical boot image
regardless of boot mode.
This may not be always possible,
but I am wondering if we could do someting
to mitigate the pain from per boot-mode defconfig.
>>
>>Theoretically, we can store SPL and U-Boot proper in different devices.
>>
>>CONFIG_FOO_BOOT means that SPL is stored in a FOO device.
>>(In other words, the hard-wired Boot ROM loads the SPL from the device FOO.
>>
>>
>>CONFIG_SPL_FOO_SUPPORT means that SPL supports loading U-Boot proper
>>from FOO a device.
>>In other words, the U-Boot proper can be stored in FOO device.
>
> From doc/README.SPL
> To support generic U-Boot libraries and drivers in the SPL binary one can
> optionally define CONFIG_SPL_XXX_SUPPORT. Currently following options
> are supported:
>
> ....
> CONFIG_SPL_MMC_SUPPORT (drivers/mmc/libmmc.o)
> ....
> CONFIG_SPL_NAND_SUPPORT (drivers/mtd/nand/libnand.o)
>
>>
>>
>>Correct?
>>
>>
>>One more question,
>>what will happen if both CONFIG_NOR_BOOT and CONFIG_NAND_BOOT are enabled?
>
> In my case, we do not allow CONFIG_NOR_BOOT and CONFIG_NAND_BOOT both defined.
> If both defined, U-Boot(I do not use spl) may not boot up in my case.
Perhaps, we should use a "choice" menu
to choose CONFIG_*_BOOT exclusively,
but I am not sure if it is the case for other vendors.
It looks like CONFIG_*_BOOT is used by TI as well as Freescale.
At least for my SoCs, I do not need these options at all
because one single boot image can boot from any device.
This patch is adding
# CONFIG_NOR_BOOT is not set
# CONFIG_NAND_BOOT is not set
# CONFIG_QSPI_BOOT is not set
...
to my .config, which does not make sense.
Perhaps, can we define these symbols in an SoC Kconfig,
or surround them with "if <SOC>"?
--
Best Regards
Masahiro Yamada
More information about the U-Boot
mailing list