[U-Boot] [PATCH 00/13] binman: Support run-time access to binman image positions
Simon Glass
sjg at chromium.org
Tue Nov 14 01:54:53 UTC 2017
Binman construct images consisting of multiple binary files. These files
sometimes need to know (at run timme) where their peers are located. For
example, SPL may want to know where U-Boot is located in the image, so
that it can jump to U-Boot correctly on boot.
This series implements this, allowing binaries within the image to become
aware of each other without any significant run-time overhead.
It can be used for:
- SPL jumping to the correct location for U-Boot
- SPL finding an FPGA image to program
- U-Boot locating some configuration data (e.g. serial #) in the image
A way to handle this with binman was requested by Marek Vasut some weeks
ago.
As a demonstration, this converts Tegra to use binman to find U-Boot from
within SPL.
Simon Glass (13):
binman: Add a function to read ELF symbols
binman: Add support for including spl/u-boot-spl.dtb
binman: Add support for including spl/u-boot-spl-nodtb.bin
binman: Drop a stale comment about the 'board' feature
binman: Add tests binaries with binman symbols
binman: Adjust size of test SPL binary
binman: Support enabling debug in tests
binman: Support accessing binman tables at run time
binman: arm: Include the binman symbol table
binman: Add binman symbol support to SPL
binman: Add binman support to spl_ram.c
binman: Add documentation for the symbol feature
binman: tegra: Convert to use binman
Makefile | 6 ++
arch/arm/config.mk | 6 +-
arch/arm/cpu/u-boot-spl.lds | 7 ++
arch/arm/dts/tegra-u-boot.dtsi | 40 +++++++++
arch/arm/dts/tegra114-u-boot.dtsi | 3 +
arch/arm/dts/tegra124-nyan-big-u-boot.dtsi | 2 +
arch/arm/dts/tegra124-u-boot.dtsi | 3 +
arch/arm/dts/tegra20-u-boot.dtsi | 11 +--
arch/arm/dts/tegra210-u-boot.dtsi | 3 +
arch/arm/dts/tegra30-u-boot.dtsi | 3 +
arch/arm/mach-tegra/Kconfig | 1 +
common/spl/spl.c | 16 +++-
common/spl/spl_ram.c | 19 +++-
include/binman_sym.h | 80 +++++++++++++++++
include/spl.h | 11 +++
tools/binman/README | 32 ++++++-
tools/binman/binman.py | 11 ++-
tools/binman/control.py | 3 +
tools/binman/elf.py | 129 +++++++++++++++++++++++++++
tools/binman/elf_test.py | 122 +++++++++++++++++++++++++
tools/binman/etype/entry.py | 8 ++
tools/binman/etype/u_boot_spl.py | 6 ++
tools/binman/etype/u_boot_spl_bss_pad.py | 7 +-
tools/binman/etype/u_boot_spl_dtb.py | 17 ++++
tools/binman/etype/u_boot_spl_nodtb.py | 17 ++++
tools/binman/etype/u_boot_with_ucode_ptr.py | 9 +-
tools/binman/ftest.py | 68 +++++++++++---
tools/binman/image.py | 79 +++++++++++++++-
tools/binman/image_test.py | 46 ++++++++++
tools/binman/test/21_image_pad.dts | 2 +-
tools/binman/test/24_sorted.dts | 4 +-
tools/binman/test/28_pack_4gb_outside.dts | 4 +-
tools/binman/test/29_x86-rom.dts | 6 +-
tools/binman/test/51_u_boot_spl_dtb.dts | 13 +++
tools/binman/test/52_u_boot_spl_nodtb.dts | 11 +++
tools/binman/test/53_symbols.dts | 20 +++++
tools/binman/test/Makefile | 18 +++-
tools/binman/test/bss_data.c | 2 +-
tools/binman/test/u_boot_binman_syms | Bin 0 -> 4921 bytes
tools/binman/test/u_boot_binman_syms.c | 14 +++
tools/binman/test/u_boot_binman_syms.lds | 30 +++++++
tools/binman/test/u_boot_binman_syms_bad | Bin 0 -> 4890 bytes
tools/binman/test/u_boot_binman_syms_bad.c | 1 +
tools/binman/test/u_boot_binman_syms_bad.lds | 29 ++++++
tools/binman/test/u_boot_binman_syms_size | Bin 0 -> 4825 bytes
tools/binman/test/u_boot_binman_syms_size.c | 12 +++
tools/binman/test/u_boot_ucode_ptr.c | 2 +-
47 files changed, 880 insertions(+), 53 deletions(-)
create mode 100644 arch/arm/dts/tegra-u-boot.dtsi
create mode 100644 arch/arm/dts/tegra114-u-boot.dtsi
create mode 100644 arch/arm/dts/tegra124-u-boot.dtsi
create mode 100644 arch/arm/dts/tegra210-u-boot.dtsi
create mode 100644 arch/arm/dts/tegra30-u-boot.dtsi
create mode 100644 include/binman_sym.h
create mode 100644 tools/binman/elf.py
create mode 100644 tools/binman/elf_test.py
create mode 100644 tools/binman/etype/u_boot_spl_dtb.py
create mode 100644 tools/binman/etype/u_boot_spl_nodtb.py
create mode 100644 tools/binman/image_test.py
create mode 100644 tools/binman/test/51_u_boot_spl_dtb.dts
create mode 100644 tools/binman/test/52_u_boot_spl_nodtb.dts
create mode 100644 tools/binman/test/53_symbols.dts
create mode 100755 tools/binman/test/u_boot_binman_syms
create mode 100644 tools/binman/test/u_boot_binman_syms.c
create mode 100644 tools/binman/test/u_boot_binman_syms.lds
create mode 100755 tools/binman/test/u_boot_binman_syms_bad
create mode 120000 tools/binman/test/u_boot_binman_syms_bad.c
create mode 100644 tools/binman/test/u_boot_binman_syms_bad.lds
create mode 100755 tools/binman/test/u_boot_binman_syms_size
create mode 100644 tools/binman/test/u_boot_binman_syms_size.c
--
2.15.0.448.gf294e3d99a-goog
More information about the U-Boot
mailing list