1
0
mirror of https://git.yoctoproject.org/meta-ti synced 2026-06-08 03:40:52 +00:00

conf, recipes-bsp: support building for K3 R5F cores via multiconfig

K3 Multicore SoC architecture defines different functional domains, each
containing specific processing cores and peripherals. Early boot is normally
handled by running bootloader and loading SYSFW on MCU Cortex-R5F core:
https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/am65x/README
https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/j721e/README

This change adds support for building bootloader and SYSFW ITB image for
K3 Cortex-R5F cores via multiconfig.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
This commit is contained in:
Denys Dmytriyenko
2020-05-05 02:41:56 +00:00
parent 79e77ea1cf
commit f814840465
13 changed files with 219 additions and 6 deletions
+11
View File
@@ -0,0 +1,11 @@
#@TYPE: Machine
#@NAME: AM65xx SR2.0 EVM (R5F)
#@DESCRIPTION: Machine configuration for the TI AM65xx SR2.0 EVM (R5F core)
# Booting SR2 requires different SYSFW, the rest is handled at runtime
require conf/machine/am65xx-evm-k3r5.conf
SOC_FAMILY_append = ":k3r5-sr2"
SYSFW_SOC = "am65x_sr2"
SYSFW_SYMLINK = "sysfw.itb"
+12
View File
@@ -0,0 +1,12 @@
#@TYPE: Machine
#@NAME: AM65xx EVM (R5F)
#@DESCRIPTION: Machine configuration for the TI AM65xx EVM (R5F core)
require conf/machine/include/k3r5.inc
SYSFW_SOC = "am65x"
SYSFW_CONFIG = "evm"
SYSFW_SUFFIX = "gp"
SYSFW_SYMLINK = ""
UBOOT_MACHINE = "am65x_evm_r5_defconfig"
+6
View File
@@ -4,6 +4,8 @@
require conf/machine/include/am65xx.inc
BBMULTICONFIG += "k3r5-sr2"
MACHINE_FEATURES += "touchscreen"
SERIAL_CONSOLES = "115200;ttyS2 115200;ttyS1"
@@ -23,3 +25,7 @@ UBOOT_MACHINE = "am65x_evm_a53_defconfig"
OPTEEMACHINE = "k3"
OPTEEFLAVOR = "am65x"
OPTEEOUTPUTMACHINE = "k3"
IMAGE_BOOT_FILES += "sysfw-am65x-evm.itb"
do_image_wic[mcdepends] += "mc::k3r5-sr2:ti-sci-fw:do_deploy"
do_image_tar[mcdepends] += "mc::k3r5-sr2:ti-sci-fw:do_deploy"
+13
View File
@@ -0,0 +1,13 @@
#@TYPE: Machine
#@NAME: AM65xx HS EVM (R5F)
#@DESCRIPTION: Machine configuration for the TI AM65xx HS EVM (R5F core)
require conf/machine/include/k3r5.inc
SYSFW_SOC = "am65x"
SYSFW_CONFIG = "evm"
SYSFW_SUFFIX = "hs"
UBOOT_MACHINE = "am65x_hs_evm_r5_defconfig"
TI_SECURE_DEV_PKG = "${TI_SECURE_DEV_PKG_K3}"
+19 -1
View File
@@ -2,10 +2,28 @@
#@NAME: AM65xx HS EVM
#@DESCRIPTION: Machine configuration for the TI AM65xx HS EVM
require conf/machine/am65xx-evm.conf
require conf/machine/include/am65xx.inc
MACHINE_FEATURES += "touchscreen"
SERIAL_CONSOLES = "115200;ttyS2 115200;ttyS1"
SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
KERNEL_DEVICETREE = " \
ti/k3-am654-base-board.dtb ti/k3-am654-gp.dtbo \
ti/k3-am654-evm-hdmi.dtbo ti/k3-am654-idk.dtbo \
ti/k3-am654-evm-oldi-lcd1evm.dtbo ti/k3-am654-evm-tc358876.dtbo \
ti/k3-am654-pcie-usb2.dtbo ti/k3-am654-pcie-usb3.dtbo \
ti/k3-am654-base-board-jailhouse.dtbo \
ti/k3-am654-evm-prupwm.dtbo \
"
UBOOT_MACHINE = "am65x_hs_evm_a53_defconfig"
OPTEEMACHINE = "k3"
OPTEEFLAVOR = "am65x"
OPTEEOUTPUTMACHINE = "k3"
UBOOT_ENTRYPOINT = "0x80080000"
UBOOT_LOADADDRESS = "0x80080000"
UBOOT_RD_LOADADDRESS = "0x84000000"
+8 -5
View File
@@ -1,8 +1,12 @@
# TI K3 Aarch64 profile for Cortex-A53/A72 cores
require conf/machine/include/ti-soc.inc
SOC_FAMILY_append = ":k3"
require conf/machine/include/arm/arch-arm64.inc
BBMULTICONFIG += "k3r5"
# Increase this everytime you change something in the kernel
MACHINE_KERNEL_PR = "r0"
@@ -34,9 +38,8 @@ MACHINE_FEATURES = "kernel26 apm usbgadget usbhost vfat ext2 screen alsa etherne
IMAGE_FSTYPES += "tar.xz wic.xz"
# Please note that booting K3 platform also requires
# tiboot3.bin and sysfw.itb, which are provided by meta-arago
# u-boot-k3-r5 and ti-sci-fw recipes
IMAGE_BOOT_FILES ?= "${SPL_BINARY} u-boot.${UBOOT_SUFFIX}"
IMAGE_BOOT_FILES ?= "${SPL_BINARY} u-boot.${UBOOT_SUFFIX} tiboot3.bin sysfw.itb"
WKS_FILE ?= "sdimage-3part.wks"
do_image_wic[depends] += "u-boot:do_deploy"
do_image_wic[depends] += "virtual/bootloader:do_deploy"
do_image_wic[mcdepends] += "mc::k3r5:virtual/bootloader:do_deploy mc::k3r5:ti-sci-fw:do_deploy"
do_image_tar[mcdepends] += "mc::k3r5:virtual/bootloader:do_deploy mc::k3r5:ti-sci-fw:do_deploy"
+23
View File
@@ -0,0 +1,23 @@
# TI K3 Armv7 profile for Cortex-R5F cores
require conf/machine/include/ti-soc.inc
SOC_FAMILY_append = ":k3r5"
# The closest of existing tunes for Cortex-R5F
DEFAULTTUNE = "armv7athf"
require conf/machine/include/tune-cortexa8.inc
# R5 runs early bootloader and loads SYSFW
# https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/am65x/README
# https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti/j721e/README
PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot-ti-staging"
PREFERRED_PROVIDER_u-boot = "u-boot-ti-staging"
SPL_BINARY = ""
UBOOT_SUFFIX = "bin"
UBOOT_BINARY = "tiboot3.${UBOOT_SUFFIX}"
UBOOT_IMAGE = "tiboot3-${MAINMACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
UBOOT_SYMLINK = "tiboot3-${MAINMACHINE}.${UBOOT_SUFFIX}"
PACKAGECONFIG_pn-u-boot-ti-staging = ""
+11
View File
@@ -0,0 +1,11 @@
#@TYPE: Machine
#@NAME: J7 EVM (R5F)
#@DESCRIPTION: Machine configuration for the TI J7 EVM (R5F core)
require conf/machine/include/k3r5.inc
SYSFW_SOC = "j721e"
SYSFW_CONFIG = "evm"
SYSFW_SUFFIX = "gp"
UBOOT_MACHINE = "j721e_evm_r5_defconfig"
+13
View File
@@ -0,0 +1,13 @@
#@TYPE: Machine
#@NAME: J7 HS EVM (R5F)
#@DESCRIPTION: Machine configuration for the TI J7 HS EVM (R5F core)
require conf/machine/include/k3r5.inc
SYSFW_SOC = "j721e"
SYSFW_CONFIG = "evm"
SYSFW_SUFFIX = "hs"
UBOOT_MACHINE = "j721e_hs_evm_r5_defconfig"
TI_SECURE_DEV_PKG = "${TI_SECURE_DEV_PKG_K3}"
+3
View File
@@ -0,0 +1,3 @@
require k3r5.conf
MACHINE_append = "-sr2"
+5
View File
@@ -0,0 +1,5 @@
MAINMACHINE := "${MACHINE}"
DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MAINMACHINE}"
MACHINE_append = "-k3r5"
@@ -0,0 +1,94 @@
SUMMARY = "TI SCI firmware (SYSFW)"
LICENSE = "TI-TFL"
LIC_FILES_CHKSUM = "file://LICENSE.ti;md5=b5aebf0668bdf95621259288c4a46d76"
DEPENDS = "openssl-native u-boot-mkimage-native dtc-native"
CLEANBROKEN = "1"
PR = "r0"
# Loaded by R5F core
COMPATIBLE_MACHINE = "k3r5"
COMPATIBLE_MACHINE_aarch64 = "null"
PACKAGE_ARCH = "${MACHINE_ARCH}"
TI_SECURE_DEV_PKG ?= ""
export TI_SECURE_DEV_PKG
SRCREV = "6b02b1ea07da65a68444e86439ad5b031e9fd5a2"
BRANCH ?= "ti-linux-firmware"
SRCREV_imggen = "79f3807e0b169f2029dec9f3a679c231f4deb625"
SRCREV_FORMAT = "imggen"
SRC_URI = " \
git://git.ti.com/processor-firmware/ti-linux-firmware.git;protocol=git;branch=${BRANCH} \
git://git.ti.com/k3-image-gen/k3-image-gen.git;protocol=git;branch=master;destsuffix=imggen;name=imggen \
"
S = "${WORKDIR}/git"
SYSFW_SOC ?= "unknown"
SYSFW_CONFIG ?= "unknown"
SYSFW_PREFIX = "ti-sci-firmware"
SYSFW_SUFFIX ?= "unknown"
SYSFW_BASE = "${SYSFW_PREFIX}-${SYSFW_SOC}-${SYSFW_SUFFIX}"
SYSFW_TISCI = "${S}/ti-sysfw/${SYSFW_BASE}*.bin"
SYSFW_BINARY = "sysfw-${SYSFW_SOC}-${SYSFW_CONFIG}.itb"
SYSFW_VBINARY = "sysfw-${PV}-${SYSFW_SOC}-${SYSFW_CONFIG}.itb"
SYSFW_IMAGE = "sysfw-${SYSFW_SOC}-${SYSFW_CONFIG}.itb"
SYSFW_SYMLINK ?= "sysfw.itb"
CFLAGS[unexport] = "1"
LDFLAGS[unexport] = "1"
AS[unexport] = "1"
LD[unexport] = "1"
do_configure[noexec] = "1"
EXTRA_OEMAKE = "\
CROSS_COMPILE=${TARGET_PREFIX} SYSFW_DL_URL='' SYSFW_HS_DL_URL='' SYSFW_HS_INNER_CERT_DL_URL='' \
SYSFW_PATH="${SYSFW_TISCI}" SOC=${SYSFW_SOC} CONFIG=${SYSFW_CONFIG} \
"
EXTRA_OEMAKE_HS = " \
HS=1 SYSFW_HS_PATH="${S}/ti-sysfw/${SYSFW_BASE}-enc.bin" SYSFW_HS_INNER_CERT_PATH="${S}/ti-sysfw/${SYSFW_BASE}-cert.bin" \
"
EXTRA_OEMAKE_append = "${@['',' ${EXTRA_OEMAKE_HS}']['${SYSFW_SUFFIX}' == 'hs']}"
do_compile() {
cd ${WORKDIR}/imggen/
oe_runmake
}
do_install() {
install -d ${D}/boot
install -m 644 ${WORKDIR}/imggen/${SYSFW_BINARY} ${D}/boot/${SYSFW_VBINARY}
ln -sf ${SYSFW_VBINARY} ${D}/boot/${SYSFW_IMAGE}
if [ ! -z "${SYSFW_SYMLINK}" ]; then
ln -sf ${SYSFW_VBINARY} ${D}/boot/${SYSFW_SYMLINK}
fi
}
FILES_${PN} = "/boot"
inherit deploy
do_deploy () {
install -d ${DEPLOYDIR}
install -m 644 ${WORKDIR}/imggen/${SYSFW_BINARY} ${DEPLOYDIR}/${SYSFW_VBINARY}
rm -f ${DEPLOYDIR}/${SYSFW_IMAGE}
ln -sf ${SYSFW_VBINARY} ${DEPLOYDIR}/${SYSFW_IMAGE}
if [ ! -z "${SYSFW_SYMLINK}" ]; then
rm -f ${DEPLOYDIR}/${SYSFW_SYMLINK}
ln -sf ${SYSFW_VBINARY} ${DEPLOYDIR}/${SYSFW_SYMLINK}
fi
install -m 644 ${SYSFW_TISCI} ${DEPLOYDIR}/
}
addtask deploy before do_build after do_compile
+1
View File
@@ -57,6 +57,7 @@ export TI_SECURE_DEV_PKG
SPL_UART_BINARY = "u-boot-spl.bin"
SPL_UART_BINARY_keystone = ""
SPL_UART_BINARY_k3 = ""
SPL_UART_BINARY_k3r5 = ""
SPL_UART_BINARY_lego-ev3 = ""
SPL_UART_IMAGE ?= "${SPL_UART_BINARY}-${MACHINE}-${PV}-${PR}"