At present rockchip 64-bit boards make use of a FIT-generator script written in Python. The script supports splitting an ELF file into several 'loadable' nodes in the FIT. Binman does not current support this feature.
This series adds binman support for ELF splitting. This works by adding a new 'fit,operation' property to the FIT subnodes, allowing this new way of generating nodes. It also provides support for optional entries, by allowing them to be marked absent when the contents are obtained. Some other fixes and improvements are needed along the way. A new, common binman description is added for 64-bit boards which includes the required u-boot.itb file. The existing script is removed, so that only a few zynq boards are now using a SPL_FIT_GENERATOR script: avnet_ultrazedev_cc_v1_0_ultrazedev_som_v1_0 xilinx_zynqmp_virt Migration of those is hopefully in progress. Note however that tools/k3_fit_atf.sh remains, used by a few boards that enable CONFIG_TI_SECURE_DEVICE so this series is copied there too: am335x_hs_evm am335x_hs_evm_uart am43xx_hs_evm am57xx_hs_evm am57xx_hs_evm_usb am65x_hs_evm_a53 am65x_hs_evm_r5 dra7xx_hs_evm dra7xx_hs_evm_usb j721e_hs_evm_a72 j721e_hs_evm_r5 k2e_hs_evm k2g_hs_evm k2hk_hs_evm k2l_hs_evm Ivan Mikhaylov has sent a patch to help with these, but I need to take a look at the testing side. In any case they should really be using binman for the image generation. Changes in v6: - Add new patch to update entry docs - Add new patch to disable USE_SPL_FIT_GENERATOR by default - Add new patch to allow a binman entry to be marked absent - Update op-tee to support new v1 binary header Changes in v5: - Update commit message to mention using parts of one image in another - Rename from 'Include binman script in 64-bit boards' - Drop duplicate #include in rk3368-u-boot.dtsi - Keep the name as fit for puma - Drop redundant check for CONFIG_ROCKCHIP_SPI_IMAGE - Drop imply of BINMAN in Kconfig (rely on ARCH_ROCKCHIP instead) - Rename blob to fit for puma and also SPI image Changes in v3: - Add an offset to the FIT description - Add support for writing sections in binman - Rebase to master Changes in v2: - Rename op-tee to tee-os - Drop use of .itb2 - Drop patches previously applied - Add various suggestions from Alper Nebi Yasak - Add patches to refactor binman's FIT support Simon Glass (12): binman: Allow writing section contents to a file binman: Tidy up comment in fit _gen_node binman: Update entry docs binman: Support optional entries binman: Add a way to check for a valid ELF file binman: Support new op-tee binary format rockchip: evb-rk3288: Drop raw-image support rockchip: Use multiple-images for rk3399 rockchip: Support building the all output files in binman rockchip: Convert all boards to use binman rockchip: Drop the FIT generator script treewide: Disable USE_SPL_FIT_GENERATOR by default Makefile | 11 +- arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi | 4 +- arch/arm/dts/rk3399-u-boot.dtsi | 3 +- arch/arm/dts/rockchip-u-boot.dtsi | 76 ++++- arch/arm/mach-rockchip/make_fit_atf.py | 267 ------------------ boot/Kconfig | 6 +- configs/am335x_evm_defconfig | 1 - configs/am335x_hs_evm_defconfig | 1 - configs/am335x_hs_evm_uart_defconfig | 1 - configs/am43xx_evm_defconfig | 1 - configs/am43xx_evm_rtconly_defconfig | 1 - configs/am43xx_evm_usbhost_boot_defconfig | 1 - configs/am43xx_hs_evm_defconfig | 1 - configs/am57xx_evm_defconfig | 1 - configs/am57xx_hs_evm_defconfig | 1 - configs/am57xx_hs_evm_usb_defconfig | 1 - configs/am65x_evm_a53_defconfig | 1 - configs/am65x_evm_r5_defconfig | 1 - configs/am65x_hs_evm_a53_defconfig | 1 - configs/am65x_hs_evm_r5_defconfig | 1 - ...edev_cc_v1_0_ultrazedev_som_v1_0_defconfig | 1 + configs/cgtqmx8_defconfig | 1 - configs/chromebook_link64_defconfig | 1 - configs/dh_imx6_defconfig | 1 - configs/display5_defconfig | 1 - configs/display5_factory_defconfig | 1 - configs/dra7xx_evm_defconfig | 1 - configs/dra7xx_hs_evm_defconfig | 1 - configs/dra7xx_hs_evm_usb_defconfig | 1 - configs/evb-ast2600_defconfig | 1 - configs/evb-rk3229_defconfig | 1 - configs/evb-rk3288_defconfig | 2 +- configs/gwventana_emmc_defconfig | 1 - configs/gwventana_gw5904_defconfig | 1 - configs/gwventana_nand_defconfig | 1 - configs/imx6qdl_icore_mipi_defconfig | 1 - configs/imx6qdl_icore_mmc_defconfig | 1 - configs/imx6qdl_icore_rqs_defconfig | 1 - configs/imx8mm-cl-iot-gate-optee_defconfig | 1 - configs/imx8mm-cl-iot-gate_defconfig | 1 - configs/imx8mm-icore-mx8mm-ctouch2_defconfig | 1 - configs/imx8mm-icore-mx8mm-edimm2.2_defconfig | 1 - configs/imx8mm-mx8menlo_defconfig | 1 - configs/imx8mm_beacon_defconfig | 1 - configs/imx8mm_data_modul_edm_sbc_defconfig | 1 - configs/imx8mm_evk_defconfig | 1 - configs/imx8mm_evk_fspi_defconfig | 1 - configs/imx8mm_venice_defconfig | 1 - configs/imx8mn_beacon_2g_defconfig | 1 - configs/imx8mn_beacon_defconfig | 1 - configs/imx8mn_bsh_smm_s2_defconfig | 1 - configs/imx8mn_bsh_smm_s2pro_defconfig | 1 - configs/imx8mn_ddr4_evk_defconfig | 1 - configs/imx8mn_evk_defconfig | 1 - configs/imx8mn_var_som_defconfig | 1 - configs/imx8mn_venice_defconfig | 1 - configs/imx8mp-icore-mx8mp-edimm2.2_defconfig | 1 - configs/imx8mp_dhcom_pdk2_defconfig | 1 - configs/imx8mp_evk_defconfig | 1 - configs/imx8mp_rsb3720a1_4G_defconfig | 1 - configs/imx8mp_rsb3720a1_6G_defconfig | 1 - configs/imx8mp_venice_defconfig | 1 - configs/imx8mq_cm_defconfig | 1 - configs/imx8mq_evk_defconfig | 1 - configs/imx8mq_phanbell_defconfig | 1 - configs/imx8qm_rom7720_a1_4G_defconfig | 1 - configs/iot2050_defconfig | 1 - configs/j7200_evm_a72_defconfig | 1 - configs/j7200_evm_r5_defconfig | 1 - configs/j7200_hs_evm_a72_defconfig | 1 - configs/j7200_hs_evm_r5_defconfig | 1 - configs/j721e_evm_a72_defconfig | 1 - configs/j721e_evm_r5_defconfig | 1 - configs/j721e_hs_evm_a72_defconfig | 1 - configs/j721e_hs_evm_r5_defconfig | 1 - configs/j721s2_evm_a72_defconfig | 1 - configs/j721s2_evm_r5_defconfig | 1 - configs/j721s2_hs_evm_a72_defconfig | 1 - configs/j721s2_hs_evm_r5_defconfig | 1 - configs/kontron-sl-mx6ul_defconfig | 1 - configs/kontron-sl-mx8mm_defconfig | 1 - configs/kontron_pitx_imx8m_defconfig | 1 - configs/kontron_sl28_defconfig | 1 - configs/librem5_defconfig | 1 - configs/ls1046ardb_qspi_spl_defconfig | 1 - configs/mccmon6_nor_defconfig | 1 - configs/mccmon6_sd_defconfig | 1 - configs/mx6sabreauto_defconfig | 1 - configs/mx6sabresd_defconfig | 1 - configs/phycore-imx8mm_defconfig | 1 - configs/phycore-imx8mp_defconfig | 1 - configs/pico-imx6_defconfig | 1 - configs/pico-imx8mq_defconfig | 1 - configs/qemu-x86_64_defconfig | 1 - configs/sandbox_noinst_defconfig | 1 - configs/sandbox_spl_defconfig | 1 - configs/sandbox_vpl_defconfig | 1 - configs/socfpga_agilex_atf_defconfig | 1 - configs/socfpga_agilex_vab_defconfig | 1 - configs/socfpga_arria10_defconfig | 1 - configs/socfpga_chameleonv3_defconfig | 1 - configs/socfpga_n5x_atf_defconfig | 1 - configs/socfpga_n5x_vab_defconfig | 1 - configs/socfpga_stratix10_atf_defconfig | 1 - configs/stm32mp15_dhcom_basic_defconfig | 1 - configs/stm32mp15_dhcor_basic_defconfig | 1 - configs/verdin-imx8mm_defconfig | 1 - configs/verdin-imx8mp_defconfig | 1 - configs/wandboard_defconfig | 1 - configs/xilinx_zynq_virt_defconfig | 1 - configs/xilinx_zynqmp_virt_defconfig | 1 + tools/binman/binman.rst | 27 ++ tools/binman/control.py | 1 + tools/binman/elf.py | 16 ++ tools/binman/elf_test.py | 10 + tools/binman/entries.rst | 222 +++++++++++++-- tools/binman/entry.py | 22 ++ tools/binman/etype/_testing.py | 3 + tools/binman/etype/fit.py | 85 +++--- tools/binman/etype/section.py | 28 +- tools/binman/etype/tee_os.py | 70 ++++- tools/binman/ftest.py | 63 +++++ tools/binman/image.py | 3 - tools/binman/test/261_section_fname.dts | 29 ++ tools/binman/test/262_absent.dts | 20 ++ tools/binman/test/263_tee_os_opt.dts | 22 ++ tools/binman/test/264_tee_os_opt_fit.dts | 33 +++ 127 files changed, 670 insertions(+), 457 deletions(-) delete mode 100755 arch/arm/mach-rockchip/make_fit_atf.py create mode 100644 tools/binman/test/261_section_fname.dts create mode 100644 tools/binman/test/262_absent.dts create mode 100644 tools/binman/test/263_tee_os_opt.dts create mode 100644 tools/binman/test/264_tee_os_opt_fit.dts -- 2.39.0.314.g84b9a713c41-goog