diff --git a/meta-corstone700/COPYING.MIT b/meta-corstone700/COPYING.MIT new file mode 100644 index 00000000..fb950dc6 --- /dev/null +++ b/meta-corstone700/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/meta-corstone700/conf/distro/iota-tiny.conf b/meta-corstone700/conf/distro/iota-tiny.conf new file mode 100644 index 00000000..32d33f16 --- /dev/null +++ b/meta-corstone700/conf/distro/iota-tiny.conf @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: Apache-2.0 +# +# Copyright (c) 2018 ARM Limited +# +# Iota OpenEmbedded distribution configuration file +# + +require conf/distro/poky-tiny.conf + +DISTRO_NAME = "Iota - Tiny Linux Distribution" +DISTRO = "iota-tiny" +DISTRO_VERSION = "0.1" + +INHERIT += "image-buildinfo" + +TCLIBC = "musl" diff --git a/meta-corstone700/conf/layer.conf b/meta-corstone700/conf/layer.conf new file mode 100644 index 00000000..18b1eed6 --- /dev/null +++ b/meta-corstone700/conf/layer.conf @@ -0,0 +1,17 @@ +# corstone700 has a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# corstone700 has a packages directory, add to BBFILES +BBFILES += " \ + ${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "meta-corstone700" +BBFILE_PATTERN_meta-corstone700 := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-corstone700 = "10" +LAYERSERIES_COMPAT_meta-corstone700 = "thud" + +NAME_GCC_ARM_NONE_EABI = "gcc-arm-none-eabi" +INSTALL_GCC_ARM_NONE_EABI = "${bindir}/${NAME_GCC_ARM_NONE_EABI}" +TC_GCC_ARM_NONE_EABI = "${STAGING_BINDIR_NATIVE}/${NAME_GCC_ARM_NONE_EABI}" +TC_GCC_ARM_NONE_EABI_BIN = "${TC_GCC_ARM_NONE_EABI}/bin" \ No newline at end of file diff --git a/meta-corstone700/conf/machine/corstone700.conf b/meta-corstone700/conf/machine/corstone700.conf new file mode 100644 index 00000000..f03d5a84 --- /dev/null +++ b/meta-corstone700/conf/machine/corstone700.conf @@ -0,0 +1,17 @@ +#@TYPE: Machine +#@NAME: corstone700 machine +#@DESCRIPTION: Machine configuration for the corstone700 board + +TUNE_FEATURES = "aarch32" + +require conf/machine/include/arm/arch-armv8.inc + +PREFERRED_PROVIDER_virtual/kernel = "linux-iota-corstone700" + +IMAGE_FSTYPES += "tar.bz2 wic cpio.gz" + +WKS_FILE = "iota-corstone700.wks" + +EXTRA_IMAGEDEPENDS_append = " trusted-firmware-a boot-firmware" + +SERIAL_CONSOLES = "115200;ttyAMA0" diff --git a/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware.bb b/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware.bb new file mode 100644 index 00000000..d4c5edfd --- /dev/null +++ b/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware.bb @@ -0,0 +1,46 @@ +SUMMARY = "Boot Processor firmware" +DESCRIPTION = "Boot Processor firmware" +DEPENDS += " coreutils-native gcc-arm-none-eabi-native trusted-firmware-a " +LICENSE="BSD" +LIC_FILES_CHKSUM = "file://license.md;md5=e44b2531cd6ffe9dece394dbe988d9a0" + +# Use Yocto-built python3 executable +inherit python3native + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI = "gitsm://${USER}@git.linaro.org/landing-teams/working/arm/boot-firmware.git;protocol=https;branch=corstone700-19.02" +SRCREV = "${AUTOREV}" + +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" + +COMPATIBLE_MACHINE = "(corstone700)" + +PLATFORM = "corstone-700" + +LDFLAGS[unexport] = "1" + +do_compile() { + export PATH=${TC_GCC_ARM_NONE_EABI_BIN}:$PATH + mkdir -p ${B} + oe_runmake -C ${S} BUILD_BASE=${B} \ + BUILD_PLAT=${B}/${PLATFORM}/ \ + PRODUCT=${PLATFORM} \ + CROSS_COMPILE=arm-none-eabi- \ + clean \ + all + cp ${S}/build/product/${PLATFORM}/se_ramfw/release/bin/firmware.bin ${B}/se_ramfw.bin + cp ${S}/build/product/${PLATFORM}/se_romfw/release/bin/firmware.bin ${B}/se_romfw.bin + + oe_runmake -C ${S}/tools/spitoc BUILD_BASE=${B} \ + BUILD_PLAT=${B}/${PLATFORM}/ \ + all + cp ${S}/tools/spitoc/spitoc ${B}/spitoc +} + +do_install() { + install -D -p -m 0644 ${B}/se_ramfw.bin ${DEPLOY_DIR_IMAGE}/se_ramfw.bin + install -D -p -m 0644 ${B}/se_romfw.bin ${DEPLOY_DIR_IMAGE}/se_romfw.bin + ${B}/spitoc --seram ${DEPLOY_DIR_IMAGE}/se_ramfw.bin --offset 1 --fip ${DEPLOY_DIR_IMAGE}/corstone700.fip --offset 33 --out ${DEPLOY_DIR_IMAGE}/spitoc.bin +} diff --git a/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware/license.md b/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware/license.md new file mode 100644 index 00000000..afcb6ddf --- /dev/null +++ b/meta-corstone700/recipes-bsp/boot-firmware/boot-firmware/license.md @@ -0,0 +1,39 @@ +License +======= + +Copyright (c) 2011-2017, Arm Limited. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of Arm nor the names of its contributors may be used to + endorse or promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +__Note:__ +Individual files contain the following tag instead of the full license text. + + SPDX-License-Identifier: BSD-3-Clause + +This enables machine processing of license information based on the SPDX +License Identifiers that are available here: http://spdx.org/licenses/ diff --git a/meta-corstone700/recipes-bsp/trusted-firmware-a/trusted-firmware-a.bbappend b/meta-corstone700/recipes-bsp/trusted-firmware-a/trusted-firmware-a.bbappend new file mode 100644 index 00000000..795e6606 --- /dev/null +++ b/meta-corstone700/recipes-bsp/trusted-firmware-a/trusted-firmware-a.bbappend @@ -0,0 +1,43 @@ +DEPENDS_corstone700 += " dtc-native coreutils-native " + +LIC_FILES_CHKSUM_corstone700 = "file://license.rst;md5=c709b197e22b81ede21109dbffd5f363" + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI_corstone700 = "\ + git://${USER}@git.linaro.org/landing-teams/working/arm/arm-tf.git;protocol=https;branch=corstone700-19.02 \ + " +SRCREV_corstone700 = "${AUTOREV}" + +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" + +COMPATIBLE_MACHINE = "(corstone700)" + +PLATFORM_corstone700 = "corstone700" + +LDFLAGS[unexport] = "1" + +do_compile_corstone700() { + mkdir -p ${B} + + oe_runmake -C ${S} BUILD_BASE=${B} \ + BUILD_PLAT=${B}/${PLATFORM}/ \ + PLAT=${PLATFORM} \ + DEBUG=1 \ + ARCH=aarch32 \ + CROSS_COMPILE=${TARGET_PREFIX} \ + AARCH32_SP=sp_min \ + RESET_TO_SP_MIN=1 \ + ARM_LINUX_KERNEL_AS_BL33=1 \ + PRELOADED_BL33_BASE=0x08500000 \ + ARM_PRELOADED_DTB_BASE=0x02800000 \ + ENABLE_STACK_PROTECTOR=strong \ + ENABLE_PIE=1 \ + all \ + fip +} + +do_install_corstone700() { + install -D -p -m 0644 ${B}/${PLATFORM}/fip.bin ${DEPLOY_DIR_IMAGE}/${PLATFORM}.fip +} diff --git a/meta-corstone700/recipes-devtools/gcc-arm-none-eabi-native_7.3.1/gcc-arm-none-eabi-native_7.3.1.bb b/meta-corstone700/recipes-devtools/gcc-arm-none-eabi-native_7.3.1/gcc-arm-none-eabi-native_7.3.1.bb new file mode 100644 index 00000000..01ed4de9 --- /dev/null +++ b/meta-corstone700/recipes-devtools/gcc-arm-none-eabi-native_7.3.1/gcc-arm-none-eabi-native_7.3.1.bb @@ -0,0 +1,31 @@ +# Recipe for fetching and installing the prebuilt gcc-arm toolchain for +# bare-metal targets. +# Recipe based on the meta-ti layer: +# http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-ti/devtools/gcc-arm-none-eabi-native_4.9.2015q3.bb?h=master +# +# Whilst most of the tools built in sdk-700 relies on the linaro-provided +# toolchain, some recipes require the baremetal ARM GCC toolchain. The baremetal +# ARM GCC toolchain is distributed as precompiled binaries. This recipe fetches +# the toolchain and installs it in sysroot. +# Recipes may then 'DEPENDS' on this recipe to fetch the toolchain, making the +# toolchain available in the staging directory of the depending recipe. + +GCC_ARM_VERSION = "gcc-arm-none-eabi-7-2018-q2-update" +LICENSE="GPLv3" +LIC_FILES_CHKSUM = "file://share/doc/gcc-arm-none-eabi/license.txt;md5=f77466c63f5787f4bd669c402aabe061" + +inherit native + +SRC_URI = "https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/${GCC_ARM_VERSION}-linux.tar.bz2;name=tc32" +SRC_URI[tc32.md5sum] = "299ebd3f1c2c90930d28ab82e5d8d6c0" + +S = "${WORKDIR}/${GCC_ARM_VERSION}" + +do_install() { + install -d ${D}${INSTALL_GCC_ARM_NONE_EABI} + cp -r ${S}/. ${D}${INSTALL_GCC_ARM_NONE_EABI} +} + +FILES_${PN} = "${INSTALL_GCC_ARM_NONE_EABI}/" + +INSANE_SKIP_${PN} = "already-stripped" diff --git a/meta-corstone700/recipes-kernel/linux/linux-iota-corstone700.bb b/meta-corstone700/recipes-kernel/linux/linux-iota-corstone700.bb new file mode 100644 index 00000000..5f750af8 --- /dev/null +++ b/meta-corstone700/recipes-kernel/linux/linux-iota-corstone700.bb @@ -0,0 +1,18 @@ +SUMMARY = "Linux Kernel provided and supported by ARM/Linaro for Cortex-A32" + +require recipes-kernel/linux/linux-iota.inc + +# Override do_kernel_configme to avoid kernel being assembled into a linux-yocto style kernel +# https://www.yoctoproject.org/docs/1.8/ref-manual/ref-manual.html#ref-tasks-kernel_configme +do_kernel_configme() { +} + +KERNEL_IMAGETYPE = "xipImage" +KBUILD_DEFCONFIG = "corstone700_defconfig" +KBRANCH = "" + +SRC_URI = "\ + git://${USER}@git.linaro.org/landing-teams/working/arm/kernel-release.git;protocol=https;branch=corstone700-19.02 \ + " + +SRCREV = "${AUTOREV}" diff --git a/meta-corstone700/recipes-kernel/linux/linux-iota.inc b/meta-corstone700/recipes-kernel/linux/linux-iota.inc new file mode 100644 index 00000000..7a48a947 --- /dev/null +++ b/meta-corstone700/recipes-kernel/linux/linux-iota.inc @@ -0,0 +1,16 @@ +DESCRIPTION = "Linux Kernel provided and supported by ARM and Linaro with \ +focus on vexpress and other ARM models and hardware. Trying to be as much \ +as possible close to upstream tree." +SECTION = "kernel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" +SRCREV = "${AUTOREV}" +SRCREV_FORMAT = "kernel" + +require recipes-kernel/linux/linux-yocto.inc + +KERNEL_VERSION_SANITY_SKIP = "1" + +S = "${WORKDIR}/git" + +COMPATIBLE_MACHINE = "(corstone700)"