提交 d498630e 编写于 作者: S Simon Glass

binman: Add an etype for external binary blobs

It is useful to be able to distinguish between ordinary blobs such as
u-boot.bin and external blobs that cannot be build by the U-Boot build
system. If the external blobs are not available for some reason, then we
know that a value image cannot be built.

Introduce a new 'blob-ext' entry type for that.
Signed-off-by: NSimon Glass <sjg@chromium.org>
Reviewed-by: NBin Meng <bmeng.cn@gmail.com>
上级 12164485
......@@ -42,6 +42,16 @@ obtained from the list of available device-tree files, managed by the
Entry: blob-ext: Entry containing an externally built binary blob
-----------------------------------------------------------------
Note: This should not be used by itself. It is normally used as a parent
class by other entry types.
See 'blob' for Properties / Entry arguments.
Entry: blob-named-by-arg: A blob entry which gets its filename property from its subclass
-----------------------------------------------------------------------------------------
......
# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2016 Google, Inc
# Written by Simon Glass <sjg@chromium.org>
#
# Entry-type module for external blobs, not built by U-Boot
#
import os
from binman.etype.blob import Entry_blob
from dtoc import fdt_util
from patman import tools
from patman import tout
class Entry_blob_ext(Entry_blob):
"""Entry containing an externally built binary blob
Note: This should not be used by itself. It is normally used as a parent
class by other entry types.
See 'blob' for Properties / Entry arguments.
"""
def __init__(self, section, etype, node):
Entry_blob.__init__(self, section, etype, node)
self.external = True
def ObtainContents(self):
self._filename = self.GetDefaultFilename()
self._pathname = tools.GetInputFilename(self._filename)
self.ReadBlobContents()
return True
......@@ -3364,6 +3364,18 @@ class TestFunctional(unittest.TestCase):
# Just check that the data appears in the file somewhere
self.assertIn(U_BOOT_SPL_DATA, data)
def testExtblob(self):
"""Test an image with an external blob"""
data = self._DoReadFile('157_blob_ext.dts')
self.assertEqual(REFCODE_DATA, data)
def testExtblobMissing(self):
"""Test an image with a missing external blob"""
with self.assertRaises(ValueError) as e:
self._DoReadFile('158_blob_ext_missing.dts')
self.assertIn("Filename 'missing-file' not found in input path",
str(e.exception))
if __name__ == "__main__":
unittest.main()
// SPDX-License-Identifier: GPL-2.0+
/dts-v1/;
/ {
#address-cells = <1>;
#size-cells = <1>;
binman {
blob-ext {
filename = "refcode.bin";
};
};
};
// SPDX-License-Identifier: GPL-2.0+
/dts-v1/;
/ {
#address-cells = <1>;
#size-cells = <1>;
binman {
size = <0x80>;
blob-ext {
filename = "missing-file";
};
};
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册