From patchwork Wed Feb 12 09:43:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Weijie Gao X-Patchwork-Id: 236215 List-Id: U-Boot discussion From: weijie.gao at mediatek.com (Weijie Gao) Date: Wed, 12 Feb 2020 17:43:38 +0800 Subject: [PATCH v5 16/20] tools: binman: add etype file for u-boot-lzma-img Message-ID: <1581500618-12956-1-git-send-email-weijie.gao@mediatek.com> This patch adds etype u-boot-lzma-img for binman. README.entries is also updated. Reviewed-by: Stefan Roese Signed-off-by: Weijie Gao Reviewed-by: Simon Glass --- Changes since v3: add a test to make sure 100% code coverage --- tools/binman/README.entries | 15 ++++++++++++ tools/binman/etype/u_boot_lzma_img.py | 28 +++++++++++++++++++++++ tools/binman/ftest.py | 7 ++++++ tools/binman/test/156_u_boot_lzma_img.dts | 11 +++++++++ 4 files changed, 61 insertions(+) create mode 100644 tools/binman/etype/u_boot_lzma_img.py create mode 100644 tools/binman/test/156_u_boot_lzma_img.dts diff --git a/tools/binman/README.entries b/tools/binman/README.entries index 6a816bba6b..0aea9b8f6d 100644 --- a/tools/binman/README.entries +++ b/tools/binman/README.entries @@ -747,6 +747,21 @@ applications. +Entry: u-boot-lzma-img: U-Boot legacy image with contents compressed by LZMA +---------------------------------------------------------------------------- + +Properties / Entry arguments: + - filename: Filename of u-boot-lzma.img (default 'u-boot-lzma.img') + +This is the U-Boot binary as a packaged image, in legacy format. It has a +header which allows it to be loaded at the correct address for execution. +Its contents are compressed by LZMA. + +You should use FIT (Flat Image Tree) instead of the legacy image for new +applications. + + + Entry: u-boot-nodtb: U-Boot flat binary without device tree appended -------------------------------------------------------------------- diff --git a/tools/binman/etype/u_boot_lzma_img.py b/tools/binman/etype/u_boot_lzma_img.py new file mode 100644 index 0000000000..966d6a46da --- /dev/null +++ b/tools/binman/etype/u_boot_lzma_img.py @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 MediaTek Inc. All Rights Reserved. +# Author: Weijie Gao +# +# Entry-type module for U-Boot legacy image with contents compressed by LZMA +# + +from entry import Entry +from blob import Entry_blob + +class Entry_u_boot_lzma_img(Entry_blob): + """U-Boot legacy image with contents compressed by LZMA + + Properties / Entry arguments: + - filename: Filename of u-boot-lzma.img (default 'u-boot-lzma.img') + + This is the U-Boot binary as a packaged image, in legacy format. It has a + header which allows it to be loaded at the correct address for execution. + Its contents are compressed by LZMA. + + You should use FIT (Flat Image Tree) instead of the legacy image for new + applications. + """ + def __init__(self, section, etype, node): + Entry_blob.__init__(self, section, etype, node) + + def GetDefaultFilename(self): + return 'u-boot-lzma.img' diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 872b855444..0ff7487b96 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -39,6 +39,7 @@ import tout # Contents of test files, corresponding to different entry types U_BOOT_DATA = b'1234' U_BOOT_IMG_DATA = b'img' +U_BOOT_LZMA_IMG_DATA = b'lzma-img' U_BOOT_SPL_DATA = b'56780123456789abcdefghi' U_BOOT_TPL_DATA = b'tpl9876543210fedcbazyw' BLOB_DATA = b'89' @@ -115,6 +116,7 @@ class TestFunctional(unittest.TestCase): # Create some test files TestFunctional._MakeInputFile('u-boot.bin', U_BOOT_DATA) TestFunctional._MakeInputFile('u-boot.img', U_BOOT_IMG_DATA) + TestFunctional._MakeInputFile('u-boot-lzma.img', U_BOOT_LZMA_IMG_DATA) TestFunctional._MakeInputFile('spl/u-boot-spl.bin', U_BOOT_SPL_DATA) TestFunctional._MakeInputFile('tpl/u-boot-tpl.bin', U_BOOT_TPL_DATA) TestFunctional._MakeInputFile('blobfile', BLOB_DATA) @@ -1078,6 +1080,11 @@ class TestFunctional(unittest.TestCase): data = self._DoReadFile('036_u_boot_img.dts') self.assertEqual(U_BOOT_IMG_DATA, data) + def testUBootLzmaImg(self): + """Test that u-boot-lzma.img can be put in a file""" + data = self._DoReadFile('156_u_boot_lzma_img.dts') + self.assertEqual(U_BOOT_LZMA_IMG_DATA, data) + def testNoMicrocode(self): """Test that a missing microcode region is detected""" with self.assertRaises(ValueError) as e: diff --git a/tools/binman/test/156_u_boot_lzma_img.dts b/tools/binman/test/156_u_boot_lzma_img.dts new file mode 100644 index 0000000000..f49d014216 --- /dev/null +++ b/tools/binman/test/156_u_boot_lzma_img.dts @@ -0,0 +1,11 @@ +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + binman { + u-boot-lzma-img { + }; + }; +};