diff options
author | Simon Glass <sjg@chromium.org> | 2018-06-01 09:38:11 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-06-07 11:25:07 -0800 |
commit | dd57c13bbc28df6f1bc849ec55d1703f4ca0398e (patch) | |
tree | 28401cbca4c07d4cde33fc1944a100c46378fd92 /tools/binman | |
parent | 48ae412424ddfda64f45a9d679a960357e57433e (diff) |
binman: Allow unit addresses for binaries
Allow the same binary to appear multiple times in an image by using the
device-tree unit-address feature (u-boot@0, u-boot@1).
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman')
-rw-r--r-- | tools/binman/README | 4 | ||||
-rw-r--r-- | tools/binman/etype/entry.py | 5 | ||||
-rw-r--r-- | tools/binman/ftest.py | 5 | ||||
-rw-r--r-- | tools/binman/test/54_unit_address.dts | 15 |
4 files changed, 29 insertions, 0 deletions
diff --git a/tools/binman/README b/tools/binman/README index b20098177e..196dda1fb4 100644 --- a/tools/binman/README +++ b/tools/binman/README @@ -387,6 +387,10 @@ end-at-4gb: Examples of the above options can be found in the tests. See the tools/binman/test directory. +It is possible to have the same binary appear multiple times in the image, +either by using a unit number suffix (u-boot@0, u-boot@1) or by using a +different name for each and specifying the type with the 'type' attribute. + Special properties ------------------ diff --git a/tools/binman/etype/entry.py b/tools/binman/etype/entry.py index c331312c49..23e436a2e9 100644 --- a/tools/binman/etype/entry.py +++ b/tools/binman/etype/entry.py @@ -72,7 +72,12 @@ class Entry(object): """ if not etype: etype = fdt_util.GetString(node, 'type', node.name) + + # Convert something like 'u-boot@0' to 'u_boot' since we are only + # interested in the type. module_name = etype.replace('-', '_') + if '@' in module_name: + module_name = module_name.split('@')[0] module = modules.get(module_name) # Import the module if we have not already done so. diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index a3abbc4b84..b5e8736fbb 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -909,6 +909,11 @@ class TestFunctional(unittest.TestCase): sym_values + U_BOOT_SPL_DATA[16:]) self.assertEqual(expected, data) + def testPackUnitAddress(self): + """Test that we support multiple binaries with the same name""" + data = self._DoReadFile('54_unit_address.dts') + self.assertEqual(U_BOOT_DATA + U_BOOT_DATA, data) + if __name__ == "__main__": unittest.main() diff --git a/tools/binman/test/54_unit_address.dts b/tools/binman/test/54_unit_address.dts new file mode 100644 index 0000000000..3216dbbcc1 --- /dev/null +++ b/tools/binman/test/54_unit_address.dts @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0+ + +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + binman { + u-boot@0 { + }; + u-boot@1 { + }; + }; +}; |