summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorQuentin Schulz <quentin.schulz@theobroma-systems.com>2022-09-02 15:10:49 +0200
committerKever Yang <kever.yang@rock-chips.com>2022-09-04 20:00:39 +0800
commit6cc29dc854916be4c8b10b956c65b4b1ff217eee (patch)
tree4423b349afbc16bd4f200d17dbe11f2f77b60595 /tools
parent4d91df0548a8d71e3a2fd769b6ee65e76a764f25 (diff)
downloadu-boot-6cc29dc854916be4c8b10b956c65b4b1ff217eee.tar.gz
binman: allow user-defined filenames for mkimage entry
mkimage entry currently creates a file whose name is derived from the section name containing said entry. Let's allow the user to define a filename for the mkimage-generated binary by using the 'filename' DT property. Cc: Quentin Schulz <foss+uboot@0leil.net> Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/binman/etype/mkimage.py11
-rw-r--r--tools/binman/ftest.py7
-rw-r--r--tools/binman/test/254_mkimage_filename.dts18
3 files changed, 33 insertions, 3 deletions
diff --git a/tools/binman/etype/mkimage.py b/tools/binman/etype/mkimage.py
index 5f4bc6fa3c..c2288c48ee 100644
--- a/tools/binman/etype/mkimage.py
+++ b/tools/binman/etype/mkimage.py
@@ -21,11 +21,13 @@ class Entry_mkimage(Entry):
- multiple-data-files: boolean to tell binman to pass all files as
datafiles to mkimage instead of creating a temporary file the result
of datafiles concatenation
+ - filename: filename of output binary generated by mkimage
The data passed to mkimage via the -d flag is collected from subnodes of the
mkimage node, e.g.::
mkimage {
+ filename = "imximage.bin";
args = "-n test -T imximage";
u-boot-spl {
@@ -38,8 +40,9 @@ class Entry_mkimage(Entry):
mkimage -d <data_file> -n test -T imximage <output_file>
The output from mkimage then becomes part of the image produced by
- binman. If you need to put multiple things in the data file, you can use
- a section, or just multiple subnodes like this::
+ binman but also is written into `imximage.bin` file. If you need to put
+ multiple things in the data file, you can use a section, or just multiple
+ subnodes like this::
mkimage {
args = "-n test -T imximage";
@@ -121,6 +124,7 @@ class Entry_mkimage(Entry):
self._multiple_data_files = fdt_util.GetBool(self._node, 'multiple-data-files')
self._mkimage_entries = OrderedDict()
self._imagename = None
+ self._filename = fdt_util.GetString(self._node, 'filename')
self.align_default = None
def ReadNode(self):
@@ -164,7 +168,8 @@ class Entry_mkimage(Entry):
[self._imagename], 'mkimage-n', 1024)
if image_data is None:
return False
- output_fname = tools.get_output_filename('mkimage-out.%s' % uniq)
+ outfile = self._filename if self._filename else 'mkimage-out.%s' % uniq
+ output_fname = tools.get_output_filename(outfile)
args = ['-d', input_fname]
if self._data_to_imagename:
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index e0850b760b..3ced14b7e9 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -5921,6 +5921,13 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
self.assertIn('Could not complete processing of contents',
str(exc.exception))
+ def testMkimageFilename(self):
+ """Test using mkimage to build a binary with a filename"""
+ retcode = self._DoTestFile('254_mkimage_filename.dts')
+ self.assertEqual(0, retcode)
+ fname = tools.get_output_filename('mkimage-test.bin')
+ self.assertTrue(os.path.exists(fname))
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/test/254_mkimage_filename.dts b/tools/binman/test/254_mkimage_filename.dts
new file mode 100644
index 0000000000..4483790ae8
--- /dev/null
+++ b/tools/binman/test/254_mkimage_filename.dts
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+/dts-v1/;
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ binman {
+ mkimage {
+ filename = "mkimage-test.bin";
+ args = "-T script";
+
+ u-boot-spl {
+ };
+ };
+ };
+};