[PATCH 4/7] binman: Add support for ATF BL31

Heinrich Schuchardt xypron.glpk at gmx.de
Tue Aug 25 06:04:56 CEST 2020


On 8/25/20 4:44 AM, Kever Yang wrote:
> Hi Simon,
>
> On 2020/8/22 上午10:36, Simon Glass wrote:
>> Add an entry for ARM Trusted Firmware's 'BL31' payload, which is the
>> device's main firmware. Typically this is U-Boot.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>>   tools/binman/README.entries        | 10 ++++++++++
>>   tools/binman/etype/atf_bl31.py     | 20 ++++++++++++++++++++
>>   tools/binman/ftest.py              |  9 +++++++++
>>   tools/binman/test/165_atf_bl31.dts | 16 ++++++++++++++++
>>   4 files changed, 55 insertions(+)
>>   create mode 100644 tools/binman/etype/atf_bl31.py
>>   create mode 100644 tools/binman/test/165_atf_bl31.dts
>>
>> diff --git a/tools/binman/README.entries b/tools/binman/README.entries
>> index 97bfae16116..85b8ec9fa73 100644
>> --- a/tools/binman/README.entries
>> +++ b/tools/binman/README.entries
>> @@ -11,6 +11,16 @@ features to produce new behaviours.
>>       +Entry: atf-bl31: Entry containing an ARM Trusted Firmware (ATF)
>> BL31 blob
>> +-------------------------------------------------------------------------
>>
>> +
>> +Properties / Entry arguments:
>> +    - atf-bl31-path: Filename of file to read into entry
>> +
>> +This entry holds the run-time firmware started by ATF.
>> +
>> +
>> +
>>   Entry: blob: Entry containing an arbitrary binary blob
>>   ------------------------------------------------------
>>   diff --git a/tools/binman/etype/atf_bl31.py
>> b/tools/binman/etype/atf_bl31.py
>> new file mode 100644
>> index 00000000000..fd7223843b1
>> --- /dev/null
>> +++ b/tools/binman/etype/atf_bl31.py
>> @@ -0,0 +1,20 @@
>> +# SPDX-License-Identifier: GPL-2.0+
>> +# Copyright (c) 2016 Google, Inc
>> +# Written by Simon Glass <sjg at chromium.org>
>> +#
>> +# Entry-type module for Intel Management Engine binary blob
>> +#
>> +
>> +from binman.etype.blob_named_by_arg import Entry_blob_named_by_arg
>> +
>> +class Entry_atf_bl31(Entry_blob_named_by_arg):
>> +    """Entry containing an ARM Trusted Firmware (ATF) BL31 blob
>> +
>> +    Properties / Entry arguments:
>> +        - atf-bl31-path: Filename of file to read into entry
>> +
>> +    This entry holds the run-time firmware started by ATF.
>> +    """
>> +    def __init__(self, section, etype, node):
>> +        super().__init__(section, etype, node, 'atf-bl31')
>> +        self.external = True
>> diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
>> index 8d687162185..30c9c764327 100644
>> --- a/tools/binman/ftest.py
>> +++ b/tools/binman/ftest.py
>> @@ -75,6 +75,7 @@ REFCODE_DATA          = b'refcode'
>>   FSP_M_DATA            = b'fsp_m'
>>   FSP_S_DATA            = b'fsp_s'
>>   FSP_T_DATA            = b'fsp_t'
>> +ATF_BL31_DATA         = b'bl31'
>>     # The expected size for the device tree in some tests
>>   EXTRACT_DTB_SIZE = 0x3c9
>> @@ -168,6 +169,7 @@ class TestFunctional(unittest.TestCase):
>>                           os.path.join(cls._indir, 'files'))
>>             TestFunctional._MakeInputFile('compress', COMPRESS_DATA)
>> +        TestFunctional._MakeInputFile('bl31.bin', ATF_BL31_DATA)
>
>
> Should this be 'bl31.elf' from ARM TF project instead of 'bl31.bin'?

The file that I need to include from the TF-A project is:

<trusted-firmware-a>/build/sun50i_a64/debug/bl31.bin

Best regards

Heinrich

>
> Thanks,
>
> - Kever
>
>>             # Travis-CI may have an old lz4
>>           cls.have_lz4 = True
>> @@ -3505,5 +3507,12 @@ class TestFunctional(unittest.TestCase):
>>           self.assertIn("Missing required properties/entry args:
>> cros-ec-rw-path",
>>                         str(e.exception))
>>   +    def testPackBl31(self):
>> +        """Test that an image with an ATF BL31 binary can be created"""
>> +        data = self._DoReadFile('165_atf_bl31.dts')
>> +        self.assertEqual(ATF_BL31_DATA, data[:len(ATF_BL31_DATA)])
>> +
>> +ATF_BL31_DATA
>> +
>>   if __name__ == "__main__":
>>       unittest.main()
>> diff --git a/tools/binman/test/165_atf_bl31.dts
>> b/tools/binman/test/165_atf_bl31.dts
>> new file mode 100644
>> index 00000000000..2b7547d70f9
>> --- /dev/null
>> +++ b/tools/binman/test/165_atf_bl31.dts
>> @@ -0,0 +1,16 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +
>> +/dts-v1/;
>> +
>> +/ {
>> +    #address-cells = <1>;
>> +    #size-cells = <1>;
>> +
>> +    binman {
>> +        size = <16>;
>> +
>> +        atf-bl31 {
>> +            filename = "bl31.bin";
>> +        };
>> +    };
>> +};
>
>



More information about the U-Boot mailing list