[U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support

Alexander Graf agraf at suse.de
Wed May 9 07:30:15 UTC 2018



On 07.05.18 04:13, rick at andestech.com wrote:
> 
> 
>> -----Original Message-----
>> From: Alexander Graf [mailto:agraf at suse.de]
>> Sent: Monday, May 07, 2018 4:59 AM
>> To: u-boot at lists.denx.de
>> Cc: Heinrich Schuchardt; schwab at suse.de; Greentime Hu; Rick Jian-Zhi Chen(陳
>> 建志)
>> Subject: Re: [U-Boot] [PATCH v3 0/8] riscv: Enable efi_loader support
>>
>>
>>
>> On 23.04.18 07:59, Alexander Graf wrote:
>>> We now have RISC-V support in U-Boot - which is great!
>>>
>>> However, not that we're finally making progress to converge on
>>> efi_loader and distro boot for booting on ARM platforms, we really
>>> want to make sure there is no technical reason not to do the same on
>>> RISC-V as well.
>>>
>>> So this patch set introduces distro boot and efi_loader support for
>>> RISC-V!
>>>
>>> So far, I've only tested it with the selftest and hello world target
>>> in U-Boot, as the number of target binaries to run is still slim. But
>>> it should at least give us a good starting point.
>>
>> Rick, can this go into 2018.07?
>>
>> Via which tree do you want to push it? I can take it via the efi one or you can take
>> it if you like ;).
>>
>>
> 
> Yes
> I prefer to u-boot-riscv.git
> If this can enter main line, I will fetch it
> I think you can take it via the efi one. :)
> 
> 
> But when I verify the efi flow this days.
> I find one issue and still clarify it now.
> 
> I find the auto flow can not be disabled from make menuconfig
> Following are the experiments I do:
> 
> Currently the boot flow will auto scan *.efi file from sd card and tftp server.
> If I do not insert sd card and tftp server caple.
> 
> The boot message will as below:
> 
> U-Boot 2018.03-00351-g1dd246f-dirty (Apr 23 2018 - 15:34:32 +0800)
> 
> DRAM:  1 GiB
> No arch specific invalidate_icache_all available!
> MMC:
> Loading Environment from SPI Flash... SF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB
> *** Warning - bad CRC, using default environment
> 
> Failed (-5)
> In:    serial at f0300000
> Out:   serial at f0300000
> Err:   serial at f0300000
> Net:   no alias for ethernet0
> 
> Warning: mac at e0100000 (eth0) using random MAC address - 66:7d:d7:be:c0:10
> eth0: mac at e0100000
> Hit any key to stop autoboot:  0
> No MMC device available
> BOOTP broadcast 1
> BOOTP broadcast 2
> BOOTP broadcast 3
> BOOTP broadcast 4
> BOOTP broadcast 5
> BOOTP broadcast 6
> BOOTP broadcast 7
> BOOTP broadcast 8
> BOOTP broadcast 9
> BOOTP broadcast 10
> BOOTP broadcast 11
> BOOTP broadcast 12
> BOOTP broadcast 13
> BOOTP broadcast 14
> BOOTP broadcast 15
> BOOTP broadcast 16
> BOOTP broadcast 17
> 
> Retry time exceeded; starting again
> BOOTP broadcast 1
> BOOTP broadcast 2
> BOOTP broadcast 3
> BOOTP broadcast 4
> BOOTP broadcast 5
> BOOTP broadcast 6
> BOOTP broadcast 7
> BOOTP broadcast 8
> BOOTP broadcast 9
> BOOTP broadcast 10
> BOOTP broadcast 11
> BOOTP broadcast 12
> BOOTP broadcast 13
> BOOTP broadcast 14
> BOOTP broadcast 15
> BOOTP broadcast 16
> BOOTP broadcast 17
> 
> Retry time exceeded; starting again
> RISC-V #
> 
> 
> Then I think if I don't want enter this auto flow, what can I do ?
> 
> 1 Remove CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig
>  But it still enter auto flow.
> 
> 2 Add #ifdef CONFIG_DISTRO_DEFAULTS to encapsulate the CONFIG_EXTRA_ENV_SETTINGS in nx25-ae250.h
>  And Remove CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig
>  And it will NOT enter auto flow
> 
> #ifdef CONFIG_DISTRO_DEFAULTS
> /* Enable distro boot */
> #define BOOT_TARGET_DEVICES(func) \
>         func(MMC, mmc, 0) \
>         func(DHCP, dhcp, na)
> 
> #include <config_distro_bootcmd.h>
> 
> #define CONFIG_EXTRA_ENV_SETTINGS       \
>                                 "kernel_addr_r=0x00080000\0" \
>                                 "pxefile_addr_r=0x01f00000\0" \
>                                 "scriptaddr=0x01f00000\0" \
>                                 "fdt_addr_r=0x02000000\0" \
>                                 "ramdisk_addr_r=0x02800000\0" \
>                                 BOOTENV
> #endif
> 
> 3 Add #ifdef CONFIG_DISTRO_DEFAULTS to encapsulate the CONFIG_EXTRA_ENV_SETTINGS in nx25-ae250.h
>  And do NOT Remove CONFIG_DISTRO_DEFAULTS=y from nx25-ae250_defconfig
>  But disable CONFIG_DISTRO_DEFAULTS from make menuconfig
>    General setup  --->
>      [ ] Select defaults suitable for booting general purpose Linux distributions
>  And it still enter auto flow
> 
> Offering this information for you.

This is the same for all distro enabled boards. The basic idea is that
U-Boot ships with something that "just boots" for simple use cases.

If you want something more advanced, you usually want to put something
very target specific in there anyway, such as "bootm $nor_flash". In
that case, you adapt the CONFIG_BOOTCOMMAND parameter to whatever you want.

The boot command can also be overridden using the environment. So if you
have working environment store, you can change the U-Boot variable
"bootcmd" and U-Boot will run that instead when it boots.

The alternative to this default behavior would be no bootcmd at all
which means you just get dropped into the U-Boot prompt. While that's
reasonably useful for developers, it isn't for people deploying U-Boot
on real target systems :).


Alex


More information about the U-Boot mailing list