[U-Boot] [PATCH 19/39] x86: Build a .rom file which can be flashed to an x86 machine

Simon Glass sjg at chromium.org
Tue Nov 11 01:28:43 CET 2014


Hi Bin,

On 9 November 2014 23:36, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Fri, Nov 7, 2014 at 4:20 AM, Simon Glass <sjg at chromium.org> wrote:
>> On x86 machines U-Boot needs to be added to a large ROM image which is
>> then flashed onto the target board. The ROM has a particular format so it
>> makes sense for U-Boot to build this image automatically. Unfortunately
>> it relies on binary blobs so we cannot require this for the default
>> build as yet.
>>
>> Create a u-boot.rom output file for this purpose.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>>  Makefile                          | 27 ++++++++++++++++++++++++++-
>>  arch/x86/Kconfig                  |  4 ++++
>>  include/configs/chromebook_link.h |  2 ++
>>  3 files changed, 32 insertions(+), 1 deletion(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 9c8a580..86d0510 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -743,6 +743,9 @@ ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
>>  endif
>>  ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
>>
>> +# We can't do this yet due to the need for binary blobs
>> +# ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
>> +
>>  # enable combined SPL/u-boot/dtb rules for tegra
>>  ifneq ($(CONFIG_TEGRA),)
>>  ifeq ($(CONFIG_SPL),y)
>> @@ -804,7 +807,8 @@ OBJCOPYFLAGS_u-boot.srec := -O srec
>>  u-boot.hex u-boot.srec: u-boot FORCE
>>         $(call if_changed,objcopy)
>>
>> -OBJCOPYFLAGS_u-boot.bin := -O binary
>> +OBJCOPYFLAGS_u-boot.bin := -O binary \
>> +               $(if $(CONFIG_X86_RESET_VECTOR),-R .start16 -R .resetvec)
>>
>>  binary_size_check: u-boot.bin FORCE
>>         @file_size=$(shell wc -c u-boot.bin | awk '{print $$1}') ; \
>> @@ -943,6 +947,27 @@ u-boot-nand.gph: u-boot.bin FORCE
>>         $(call if_changed,mkimage)
>>         @dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
>>
>> +# x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
>> +# reset vector) at the top, Intel ME at the bottom, and U-Boot in the middle.
>> +ifneq ($(CONFIG_X86_RESET_VECTOR),)
>> +rom: u-boot.rom FORCE
>> +
>> +u-boot.rom: u-boot-x86-16bit.bin u-boot-dtb.bin \
>
> The u-boot-dtb.bin means we have to use device tree for all x86 board
> port. Is this a must-have?

Yes I'd like to use device tree, since it is a convenient way of
getting configuration into U-Boot.

>
>> +               $(srctree)/board/$(BOARDDIR)/descriptor.bin
>
> I don't see where the descriptor.bin is created?

This needs to be downloaded and provided, as with mrc.bin, etc.

I think I will adjust it (later) so that it builds an empty u-boot.rom
and prints a warning on stdout if the binaries are not available. That
way the buildman build will still succeed, but the user will see the
problem. It might also be useful to have U-Boot report missing
binaries when it starts up.

Regards,
Simon


More information about the U-Boot mailing list