
Devices that belong to the K3 architecture require SYSFW which is a FIT image consisting of a signed system firmware image and board config binaries.
Board config binaries are needed to bring up SYSFW during U-Boot SPL startup. The board config data is given in YAML as input. These board configs contain board-specific information such as resource management, power management and security.
The following series intends to plumb the system firmware generation into U-Boot using binman for packaging. Thus it will eliminate the need for additional custom repositories for SYSFW generation and also moves t owards the community standard build flow.
The series also plumbs the generation of tispl.bin into the build flow. This image is required for loading u-boot in K3 devices. The image is packaged using ATF, OPTEE and DM (Device Manager).
Please note that the following series has implemented the above for J721E general purpose board. The board configs and device trees added are specific to J721E GP devices.
Also note the introduction of two new etypes for sysfw and ti-dm.
The binman tests for sysfw has coverage of 90%, this is believed to be because of the requirement of sysfw to access a signing script located outside the binman directory. Logs of the binman test is located here: https://pastebin.ubuntu.com/p/n5CdT7TFJg/
On running CI tests on Github, errors were produced during world builds of keystone2_keystone3 and siemens (I0T2050 which is based on AM65x). This patch series is intended for only J721E and future work is to expand to the remaining K3 devices as well. The errors that come are mainly due to the boards other than J721E trying to generate tispl.bin. Error logs of the CI test is located here: https://pastebin.ubuntu.com/p/rpMrWzH7tv/
Neha Malcom Francis (8): tools: config: yaml: Add board config class to generate config binaries binman: etype: sysfw: Add entry type for sysfw schema: yaml: Add board config schema config: yaml: j721e_evm: Add board config for J721E EVM binman: sysfw: Add support for packaging tiboot3.bin and sysfw.itb binman: dtsi: sysfw: j721e: Use binman to package sysfw.itb binman: etype: dm: Add entry type for TI DM binman: dtsi: tispl: j721e: Use binman to package tispl.bin
Makefile | 1 + arch/arm/dts/j721e-a72-binman.dtsi | 92 + arch/arm/dts/j721e-r5-binman.dtsi | 75 + .../k3-j721e-common-proc-board-u-boot.dtsi | 1 + .../k3-j721e-r5-common-proc-board-u-boot.dtsi | 1 + arch/arm/mach-k3/config.mk | 54 +- board/ti/common/schema.yaml | 355 ++ board/ti/j721e/Kconfig | 2 + board/ti/j721e/config.yaml | 3162 +++++++++++++++++ scripts/Makefile.spl | 4 - test/py/requirements.txt | 1 + tools/binman/entries.rst | 21 + tools/binman/etype/sysfw.py | 60 + tools/binman/etype/ti_dm.py | 22 + tools/binman/ftest.py | 14 + tools/binman/test/225_ti_dm.dts | 13 + tools/binman/test/226_sysfw.dts | 13 + tools/tibcfg_gen.py | 116 + 18 files changed, 3969 insertions(+), 38 deletions(-) create mode 100644 arch/arm/dts/j721e-a72-binman.dtsi create mode 100644 arch/arm/dts/j721e-r5-binman.dtsi create mode 100644 board/ti/common/schema.yaml create mode 100644 board/ti/j721e/config.yaml create mode 100644 tools/binman/etype/sysfw.py create mode 100644 tools/binman/etype/ti_dm.py create mode 100644 tools/binman/test/225_ti_dm.dts create mode 100644 tools/binman/test/226_sysfw.dts create mode 100644 tools/tibcfg_gen.py