mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
binman: Support ELF files for U-Boot and SPL
For sandbox we want to put ELF files in the image since that is what we need to execute. Add support for this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
f8f8df6eb8
commit
fe1ae3ecc3
6 changed files with 130 additions and 0 deletions
|
@ -361,6 +361,17 @@ it available to u_boot_ucode.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Entry: u-boot-elf: U-Boot ELF image
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Properties / Entry arguments:
|
||||||
|
- filename: Filename of u-boot (default 'u-boot')
|
||||||
|
|
||||||
|
This is the U-Boot ELF image. It does not include a device tree but can be
|
||||||
|
relocated to any address for execution.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Entry: u-boot-img: U-Boot legacy image
|
Entry: u-boot-img: U-Boot legacy image
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
|
@ -444,6 +455,17 @@ to activate.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Entry: u-boot-spl-elf: U-Boot SPL ELF image
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
Properties / Entry arguments:
|
||||||
|
- filename: Filename of SPL u-boot (default 'spl/u-boot')
|
||||||
|
|
||||||
|
This is the U-Boot SPL ELF image. It does not include a device tree but can
|
||||||
|
be relocated to any address for execution.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Entry: u-boot-spl-nodtb: SPL binary without device tree appended
|
Entry: u-boot-spl-nodtb: SPL binary without device tree appended
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
39
tools/binman/etype/u_boot_elf.py
Normal file
39
tools/binman/etype/u_boot_elf.py
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
# Copyright (c) 2018 Google, Inc
|
||||||
|
# Written by Simon Glass <sjg@chromium.org>
|
||||||
|
#
|
||||||
|
# Entry-type module for U-Boot ELF image
|
||||||
|
#
|
||||||
|
|
||||||
|
from entry import Entry
|
||||||
|
from blob import Entry_blob
|
||||||
|
|
||||||
|
import fdt_util
|
||||||
|
import tools
|
||||||
|
|
||||||
|
class Entry_u_boot_elf(Entry_blob):
|
||||||
|
"""U-Boot ELF image
|
||||||
|
|
||||||
|
Properties / Entry arguments:
|
||||||
|
- filename: Filename of u-boot (default 'u-boot')
|
||||||
|
|
||||||
|
This is the U-Boot ELF image. It does not include a device tree but can be
|
||||||
|
relocated to any address for execution.
|
||||||
|
"""
|
||||||
|
def __init__(self, section, etype, node):
|
||||||
|
Entry_blob.__init__(self, section, etype, node)
|
||||||
|
self._strip = fdt_util.GetBool(self._node, 'strip')
|
||||||
|
|
||||||
|
def ReadBlobContents(self):
|
||||||
|
if self._strip:
|
||||||
|
uniq = self.GetUniqueName()
|
||||||
|
out_fname = tools.GetOutputFilename('%s.stripped' % uniq)
|
||||||
|
tools.WriteFile(out_fname, tools.ReadFile(self._pathname))
|
||||||
|
tools.Run('strip', out_fname)
|
||||||
|
self.SetContents(tools.ReadFile(out_fname))
|
||||||
|
else:
|
||||||
|
self.SetContents(tools.ReadFile(self._pathname))
|
||||||
|
return True
|
||||||
|
|
||||||
|
def GetDefaultFilename(self):
|
||||||
|
return 'u-boot'
|
24
tools/binman/etype/u_boot_spl_elf.py
Normal file
24
tools/binman/etype/u_boot_spl_elf.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
# Copyright (c) 2018 Google, Inc
|
||||||
|
# Written by Simon Glass <sjg@chromium.org>
|
||||||
|
#
|
||||||
|
# Entry-type module for U-Boot SPL ELF image
|
||||||
|
#
|
||||||
|
|
||||||
|
from entry import Entry
|
||||||
|
from blob import Entry_blob
|
||||||
|
|
||||||
|
class Entry_u_boot_spl_elf(Entry_blob):
|
||||||
|
"""U-Boot SPL ELF image
|
||||||
|
|
||||||
|
Properties / Entry arguments:
|
||||||
|
- filename: Filename of SPL u-boot (default 'spl/u-boot')
|
||||||
|
|
||||||
|
This is the U-Boot SPL ELF image. It does not include a device tree but can
|
||||||
|
be relocated to any address for execution.
|
||||||
|
"""
|
||||||
|
def __init__(self, section, etype, node):
|
||||||
|
Entry_blob.__init__(self, section, etype, node)
|
||||||
|
|
||||||
|
def GetDefaultFilename(self):
|
||||||
|
return 'spl/u-boot-spl'
|
|
@ -1708,6 +1708,22 @@ class TestFunctional(unittest.TestCase):
|
||||||
fmap_util.FMAP_AREA_LEN * 3, fentries[2].size)
|
fmap_util.FMAP_AREA_LEN * 3, fentries[2].size)
|
||||||
self.assertEqual('FMAP', fentries[2].name)
|
self.assertEqual('FMAP', fentries[2].name)
|
||||||
|
|
||||||
|
def testElf(self):
|
||||||
|
"""Basic test of ELF entries"""
|
||||||
|
with open(self.TestFile('bss_data')) as fd:
|
||||||
|
TestFunctional._MakeInputFile('spl/u-boot-spl', fd.read())
|
||||||
|
with open(self.TestFile('bss_data')) as fd:
|
||||||
|
TestFunctional._MakeInputFile('-boot', fd.read())
|
||||||
|
data = self._DoReadFile('96_elf.dts')
|
||||||
|
|
||||||
|
def testElfStripg(self):
|
||||||
|
"""Basic test of ELF entries"""
|
||||||
|
with open(self.TestFile('bss_data')) as fd:
|
||||||
|
TestFunctional._MakeInputFile('spl/u-boot-spl', fd.read())
|
||||||
|
with open(self.TestFile('bss_data')) as fd:
|
||||||
|
TestFunctional._MakeInputFile('-boot', fd.read())
|
||||||
|
data = self._DoReadFile('97_elf_strip.dts')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
14
tools/binman/test/96_elf.dts
Normal file
14
tools/binman/test/96_elf.dts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
/ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
binman {
|
||||||
|
u-boot-elf {
|
||||||
|
};
|
||||||
|
u-boot-spl-elf {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
15
tools/binman/test/97_elf_strip.dts
Normal file
15
tools/binman/test/97_elf_strip.dts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
/ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
binman {
|
||||||
|
u-boot-elf {
|
||||||
|
strip;
|
||||||
|
};
|
||||||
|
u-boot-spl-elf {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
Loading…
Add table
Reference in a new issue