123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # SPDX-License-Identifier: GPL-2.0+
- #
- # Copyright (C) 2017-2018 Texas Instruments Incorporated - http://www.ti.com/
- # Lokesh Vutla <lokeshvutla@ti.com>
- ifdef CONFIG_SPL_BUILD
- # Openssl is required to generate x509 certificate.
- # Error out if openssl is not available.
- ifeq ($(shell which openssl),)
- $(error "No openssl in $(PATH), consider installing openssl")
- endif
- SHA_VALUE= $(shell openssl dgst -sha512 -hex $(obj)/u-boot-spl.bin | sed -e "s/^.*= //g")
- IMAGE_SIZE= $(shell cat $(obj)/u-boot-spl.bin | wc -c)
- LOADADDR= $(shell echo $(CONFIG_SPL_TEXT_BASE) | sed -e "s/^0x//g")
- MAX_SIZE= $(shell printf "%d" $(CONFIG_SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE))
- # Parameters to get populated into the x509 template
- SED_OPTS= -e s/TEST_IMAGE_LENGTH/$(IMAGE_SIZE)/
- SED_OPTS+= -e s/TEST_IMAGE_SHA_VAL/$(SHA_VALUE)/
- SED_OPTS+= -e s/TEST_CERT_TYPE/1/ # CERT_TYPE_PRIMARY_IMAGE_BIN
- SED_OPTS+= -e s/TEST_BOOT_CORE/$(CONFIG_SYS_K3_BOOT_CORE_ID)/
- SED_OPTS+= -e s/TEST_BOOT_ARCH_WIDTH/32/
- SED_OPTS+= -e s/TEST_BOOT_ADDR/$(LOADADDR)/
- # Command to generate ecparam key
- quiet_cmd_genkey = OPENSSL $@
- cmd_genkey = openssl ecparam -out $@ -name prime256v1 -genkey
- # Command to generate x509 certificate
- quiet_cmd_gencert = OPENSSL $@
- cmd_gencert = cat $(srctree)/tools/k3_x509template.txt | sed $(SED_OPTS) > u-boot-spl-x509.txt; \
- openssl req -new -x509 -key $(KEY) -nodes -outform DER -out $@ -config u-boot-spl-x509.txt -sha512
- # If external key is not provided, generate key using openssl.
- ifeq ($(CONFIG_SYS_K3_KEY), "")
- KEY=u-boot-spl-eckey.pem
- else
- KEY=$(patsubst "%",%,$(CONFIG_SYS_K3_KEY))
- endif
- u-boot-spl-eckey.pem: FORCE
- $(call if_changed,genkey)
- # tiboot3.bin is mandated by ROM and ROM only supports R5 boot.
- # So restrict tiboot3.bin creation for CPU_V7R.
- ifdef CONFIG_CPU_V7R
- u-boot-spl-cert.bin: $(KEY) $(obj)/u-boot-spl.bin image_check FORCE
- $(call if_changed,gencert)
- image_check: $(obj)/u-boot-spl.bin FORCE
- @if [ $(IMAGE_SIZE) -gt $(MAX_SIZE) ]; then \
- echo "===============================================" >&2; \
- echo "ERROR: Final Image too big. " >&2; \
- echo "$< size = $(IMAGE_SIZE), max size = $(MAX_SIZE)" >&2; \
- echo "===============================================" >&2; \
- exit 1; \
- fi
- tiboot3.bin: u-boot-spl-cert.bin $(obj)/u-boot-spl.bin FORCE
- $(call if_changed,cat)
- ALL-y += tiboot3.bin
- endif
- ifdef CONFIG_ARM64
- SPL_ITS := u-boot-spl-k3.its
- $(SPL_ITS): FORCE
- $(srctree)/tools/k3_fit_atf.sh \
- $(patsubst %,$(obj)/dts/%.dtb,$(subst ",,$(CONFIG_SPL_OF_LIST))) > $@
- ALL-y += tispl.bin
- endif
- else
- ALL-y += u-boot.img
- endif
|