coreboot/util
Julius Werner e9879c0fbd CBFS: Automate ROM image layout and remove hardcoded offsets
Non-x86 boards currently need to hardcode the position of their CBFS
master header in a Kconfig. This is very brittle because it is usually
put in between the bootblock and the first CBFS entry, without any
checks to guarantee that it won't overlap either of those. It is not fun
to debug random failures that move and disappear with tiny alignment
changes because someone decided to write "ORBC1112" over some part of
your data section (in a way that is not visible in the symbolized .elf
binaries, only in the final image). This patch seeks to prevent those
issues and reduce the need for manual configuration by making the image
layout a completely automated part of cbfstool.

Since automated placement of the CBFS header means we can no longer
hardcode its position into coreboot, this patch takes the existing x86
solution of placing a pointer to the header at the very end of the
CBFS-managed section of the ROM and generalizes it to all architectures.
This is now even possible with the read-only/read-write split in
ChromeOS, since coreboot knows how large that section is from the
CBFS_SIZE Kconfig (which is by default equal to ROM_SIZE, but can be
changed on systems that place other data next to coreboot/CBFS in ROM).

Also adds a feature to cbfstool that makes the -B (bootblock file name)
argument on image creation optional, since we have recently found valid
use cases for CBFS images that are not the first boot medium of the
device (instead opened by an earlier bootloader that can already
interpret CBFS) and therefore don't really need a bootblock.

BRANCH=None
BUG=None
TEST=Built and booted on Veyron_Pinky, Nyan_Blaze and Falco.

Change-Id: Ifcc755326832755cfbccd6f0a12104cba28a20af
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/229975
2014-12-03 06:09:54 +00:00
..
abuild coreboot: Move ARCH_* from board/Kconfig to cpu or soc Kconfig. 2014-05-08 22:36:06 +00:00
acpi GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
amdtools Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
bimgtool bimgtool: add verification mode 2014-11-22 01:40:46 +00:00
cbfstool CBFS: Automate ROM image layout and remove hardcoded offsets 2014-12-03 06:09:54 +00:00
cbmem timestamp: Add bootblock start and end to timestamp constants 2014-10-17 05:52:39 +00:00
crossgcc build: mipsel cross compiler support 2014-07-23 11:08:36 +00:00
dtd_parser GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
dumpmmcr dumpmmcr: Fix compilation warnings in printf 2012-01-26 09:57:56 +01:00
ectool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
exynos Fix copyright header in util/exynos/*.py 2014-09-08 23:08:45 +00:00
genprof coreboot: Rename coreboot_ram stage to ramstage 2014-05-07 23:30:23 +00:00
getpir GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
gitconfig gitconfig: Match the Change-Id line more exactly 2012-08-27 15:41:33 +02:00
i915tool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
ifdtool ifdtool: Dump more registers from FD 2012-11-12 06:56:03 +01:00
inteltool inteltool: remove unused file descriptor variable and ifdefs 2013-04-08 18:17:59 +02:00
ipqheader Add proper license to the ipqheader tool 2014-10-28 07:46:46 +00:00
k8resdump GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
kconfig kconfig: add named choice group 2013-05-13 17:18:52 -07:00
lbtdump Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
lint build system: Split linking into multiple steps 2012-11-27 22:02:02 +01:00
mkelfImage mkelfimage: Add EM_AARCH64 as elf image type for arm64 2014-08-28 01:14:28 +00:00
mptable mptable: realign comments with code 2012-06-20 12:46:55 +02:00
msrtool GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
nrv2b Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
nvramtool coreboot: add -MG to makefile to make it pass clang. 2013-08-12 17:24:32 -07:00
optionlist GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
resetcf Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
rockchip coreboot: rk3288: add make_idb.py & update bootblock 2014-08-28 20:12:48 +00:00
romcc GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
runfw ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
sconfig sconfig: add cpu device type 2014-09-06 13:10:45 +00:00
scripts chromeos: add internal scripts to handle 3rdparty files 2013-04-12 13:18:10 -07:00
showdevicetree ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
superiotool libpayload, superiotool: README: Prepend coreboot/ to path of change directory line 2013-04-04 17:22:15 +02:00
vgabios Rename devices -> device 2012-11-30 23:59:58 +01:00
xcompile Allow for different BFD elf formats per architecture 2014-09-01 11:06:54 +00:00