diff options
Diffstat (limited to 'distribution/yocto-advanced/meta-schulung-extended/recipes-bsp')
8 files changed, 454 insertions, 0 deletions
diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/files/signed-config.its b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/files/signed-config.its new file mode 100644 index 0000000..9fcfe22 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/files/signed-config.its @@ -0,0 +1,47 @@ +/dts-v1/; + +/ { + description = "my u-boot dtb"; + #address-cells = <1>; + + images { + kernel@1 { + description = "my kernel"; + data = /incbin/("zImage"); + type = "kernel_noload"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0x4>; + entry = <0x8>; + kernel-version = <1>; + hash@1 { + algo = "sha256"; + }; + }; + fdt@1 { + description = "my dtb"; + data = /incbin/("dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + fdt-version = <1>; + hash@1 { + algo = "sha256"; + }; + }; + }; + configurations { + default = "conf@1"; + conf@1 { + description = "my conf"; + kernel = "kernel@1"; + fdt = "fdt@1"; + signature@1 { + algo = "sha256,rsa4096"; + key-name-hint = "dev"; + sign-images = "fdt", "kernel"; + }; + }; + }; +}; diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/qemu-boot-files.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/qemu-boot-files.bb new file mode 100644 index 0000000..e885d25 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/boot/qemu-boot-files.bb @@ -0,0 +1,62 @@ +# specify build dependencies +DEPENDS += "linux-basic" +DEPENDS += "u-boot" +DEPENDS += "u-boot-mkimage-native" +DEPENDS += "keys-native" + +# fit image configuration file +SRC_URI = "file://signed-config.its" + +# license information +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +# create signed fit image for kernel/devicetree and uimage for qemu booting +do_compile () { + # extract TEXT_BASE from u-boot configuration + TEXT_BASE=`grep CONFIG_SYS_TEXT_BASE \ + ${PKG_CONFIG_SYSROOT_DIR}${datadir}/u-boot/u-boot.cfg | \ + awk '{print $3}'` + + cp ${DEPLOY_DIR_IMAGE}/devicetree-${DTB} dtb + cp ${DEPLOY_DIR_IMAGE}/zImage . + cp ${WORKDIR}/signed-config.its . + + # create fit image with signed configuration + # and update the dtb to contain the public key + uboot-mkimage -f signed-config.its \ + -k ${STAGING_DIR_NATIVE}${datadir_native}/keys \ + -K dtb -r image.fit + + # create the final u-boot image by appending the new dtb + cat ${DEPLOY_DIR_IMAGE}/u-boot-nodtb.bin dtb > u-boot-dtb.bin + + # pack u-boot into a uimage file so we can + # trick qemu into booting u-boot + uboot-mkimage -A ${HOST_ARCH} -C none -T kernel -O linux \ + -d u-boot-dtb.bin -a $TEXT_BASE -e $TEXT_BASE u-boot.uimg +} + +# specify task dependencies for compiling +# - bitbake only knows about dependencies that are specified +# otherwise it assumes it can do things in parallel +# - the build dependencies ${DEPEND} only create a task dependency +# on do_install (do_deploy comes after do_install) +# - for linux-basic and u-boot-sample we need to wait for do_deploy +# to complete because our do_compile uses their deployed files +do_compile[depends] += "linux-basic:do_deploy" +do_compile[depends] += "u-boot:do_deploy" + +# use the deploy class (poky/meta/deploy.bbclass) +# - this officially creates a deploy task +# - this creates and sets ${DEPLOYDIR} +inherit deploy + +# deploy fit image (kernel/devicetree) and uimage (u-boot) +do_deploy () { + install -D -m 0644 image.fit ${DEPLOYDIR}/image.fit + install -D -m 0644 u-boot.uimg ${DEPLOYDIR}/u-boot.uimg +} + +# set do_deploy to occur after do_install +addtask do_deploy after do_install diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/files/vexpress/defconfig b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/files/vexpress/defconfig new file mode 100644 index 0000000..2344d27 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/files/vexpress/defconfig @@ -0,0 +1,151 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_CPUSETS=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_DCSCB=y +CONFIG_ARCH_VEXPRESS_TC2_PM=y +CONFIG_SMP=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_MCPM=y +CONFIG_VMSPLIT_2G=y +CONFIG_NR_CPUS=8 +CONFIG_ARM_PSCI=y +CONFIG_AEABI=y +CONFIG_CMA=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_CPU_IDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_PLATRAM=y +CONFIG_MTD_UBI=y +CONFIG_VIRTIO_BLK=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +# CONFIG_SATA_PMP is not set +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_I2C=y +CONFIG_I2C_VERSATILE=y +CONFIG_SENSORS_VEXPRESS=y +CONFIG_REGULATOR_VEXPRESS=y +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +# CONFIG_SND_DRIVERS is not set +CONFIG_SND_ARMAACI=y +CONFIG_HID_DRAGONRISE=y +CONFIG_HID_GYRATION=y +CONFIG_HID_TWINHAN=y +CONFIG_HID_NTRIG=y +CONFIG_HID_PANTHERLORD=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_GREENASIA=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_HID_ZEROPLUS=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=y +CONFIG_USB_STORAGE=y +CONFIG_USB_ISP1760=y +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_CRAMFS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZO=y +CONFIG_NFS_FS=y +CONFIG_ROOT_NFS=y +CONFIG_9P_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_SCHED_DEBUG is not set +CONFIG_DEBUG_USER=y +# CONFIG_CRYPTO_HW is not set diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.11.1.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.11.1.bb new file mode 100644 index 0000000..f02c964 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.11.1.bb @@ -0,0 +1,60 @@ +# use the kernel class (poky/meta/kernel.bbclass) +inherit kernel + +KERNEL_IMAGETYPE = "zImage" + +# license information/checksum +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" + +# specify kernel source (named as "upstream" for later reference) +# SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;name=upstream" + +# provide git reference for the exact commit +# - references must be used with git if no network available +# - reference for "v4.4" tag discovered with: git show-ref v4.4 +#SRCREV_upstream = "b5be40b90dbaa6bd337f3b77de361bfc0723468b" + +# by default for the git protocol, the repository is checked out into +# ${WORKDIR}/git, so bitbake must look there for the source code +# (the "destsuffix" SRC_URI option defaults to "git/" for git) +#S = "${WORKDIR}/git" + +SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz" + +# checksums for the downloaded file +SRC_URI[md5sum] = "9a75a70346aff3be6147e2478a581c18" +SRC_URI[sha256sum] = "7e46f9e216907942b0b07f2bb59708dc33501d4e2a0938164396386ebd21e608" + +# the https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.11.1.tar.xz extracts +# into a directory called linux-4.11.1 set this as source directory +S = "${WORKDIR}/linux-4.11.1" + +# specify kernel config (automatically searched in ./files/${MACHINE}/) +SRC_URI += "file://defconfig" + +# set a weak default for our DTB variable +# (this ensures that DTB definitely has a value and because of +# how we named the dummy value, will generate a useful message +# if DTB is not specified in some .conf somehwere) +DTB ??= "no-devicetree-specified.dtb" + +# create a compile function for the device tree +# - DTB is a variable we created +build_dtb () { + oe_runmake -f ${B}/Makefile ${DTB} +} +# ...and have it called after the compile task is finished +do_compile[postfuncs] += "build_dtb" + +# create a deploy function for the device tree +# - ${B} is set to the kernel build directory (set in kernel.bbclass) +# - ${ARCH} is set to the kernel architecture (set in kernel-arch.bbclass) +# - anything copied to ${DEPLOYDIR} will also appear as a deployed file +# (for example: tmp/deploy/images/vexpress/myfile) +deploy_dtb () { + install -D -m 0644 ${B}/arch/${ARCH}/boot/dts/${DTB} \ + ${DEPLOYDIR}/devicetree-${DTB} +} +# ...and have it called after the deploy task is finished +do_deploy[postfuncs] += "deploy_dtb" diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.4.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.4.bb new file mode 100644 index 0000000..7301b6e --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/kernel/linux-basic_4.4.bb @@ -0,0 +1,48 @@ +# use the kernel class (poky/meta/kernel.bbclass) +inherit kernel + +# license information/checksum +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" + +# specify kernel source (named as "upstream" for later reference) +SRC_URI = "git://git.yoctoproject.org/linux-yocto-4.4.git;name=upstream" + +# specify kernel config (automatically searched in ./files/${MACHINE}/) +SRC_URI += "file://defconfig" + +# provide git reference for the exact commit +# - references must be used with git if no network available +# - reference for "v4.4" tag discovered with: git show-ref v4.4 +SRCREV_upstream = "b5be40b90dbaa6bd337f3b77de361bfc0723468b" + +# by default for the git protocol, the repository is checked out into +# ${WORKDIR}/git, so bitbake must look there for the source code +# (the "destsuffix" SRC_URI option defaults to "git/" for git) +S = "${WORKDIR}/git" + +# set a weak default for our DTB variable +# (this ensures that DTB definitely has a value and because of +# how we named the dummy value, will generate a useful message +# if DTB is not specified in some .conf somehwere) +DTB ??= "no-devicetree-specified.dtb" + +# create a compile function for the device tree +# - DTB is a variable we created +# build_dtb () { +# oe_runmake ${DTB} +#} +# ...and have it called after the compile task is finished +do_compile[postfuncs] += "build_dtb" + +# create a deploy function for the device tree +# - ${B} is set to the kernel build directory (set in kernel.bbclass) +# - ${ARCH} is set to the kernel architecture (set in kernel-arch.bbclass) +# - anything copied to ${DEPLOYDIR} will also appear as a deployed file +# (for example: tmp/deploy/images/vexpress/myfile) +deploy_dtb () { + install -D -m 0644 ${B}/arch/${ARCH}/boot/dts/${DTB} \ + ${DEPLOYDIR}/devicetree-${DTB} +} +# ...and have it called after the deploy task is finished +do_deploy[postfuncs] += "deploy_dtb" diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/0001-setup-bootcmd-for-tftp.patch b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/0001-setup-bootcmd-for-tftp.patch new file mode 100644 index 0000000..18b0171 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/0001-setup-bootcmd-for-tftp.patch @@ -0,0 +1,27 @@ +From 284f9ad599ec5809ba9c06d4ba5945f4e9d0a369 Mon Sep 17 00:00:00 2001 +From: Your Name <you@example.com> +Date: Fri, 19 May 2017 23:10:09 +0200 +Subject: [PATCH] setup bootcmd for tftp + +Signed-off-by: Your Name <you@example.com> +--- + include/configs/vexpress_common.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h +index 0bc4ea5..da37125 100644 +--- a/include/configs/vexpress_common.h ++++ b/include/configs/vexpress_common.h +@@ -186,8 +186,7 @@ + + /* Basic environment settings */ + #define CONFIG_BOOTCOMMAND \ +- "run distro_bootcmd; " \ +- "run bootflash; " ++ "fatload mmc 0 0x64000000 image.fit; setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0p2 ip=192.168.7.2::192.168.7.1:255.255.255.0; bootm 0x64000000" + + #define BOOT_TARGET_DEVICES(func) \ + func(MMC, mmc, 1) \ +-- +2.1.4 + diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/defconfig b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/defconfig new file mode 100644 index 0000000..c5149b7 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/files/defconfig @@ -0,0 +1,25 @@ +CONFIG_ARM=y +CONFIG_TARGET_VEXPRESS_CA9X4=y +CONFIG_DISTRO_DEFAULTS=y +# CONFIG_SYS_MALLOC_F is not set +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_FIT_SIGNATURE=y +# CONFIG_DISPLAY_CPUINFO is not set +# CONFIG_DISPLAY_BOARDINFO is not set +# CONFIG_CMD_CONSOLE is not set +# CONFIG_CMD_BOOTD is not set +# CONFIG_CMD_IMLS is not set +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_EDITENV is not set +# CONFIG_CMD_ENV_EXISTS is not set +# CONFIG_CMD_LOADB is not set +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_MMC=y +# CONFIG_CMD_FPGA is not set +# CONFIG_CMD_ITEST is not set +# CONFIG_CMD_SETEXPR is not set +# CONFIG_CMD_NFS is not set +# CONFIG_CMD_MISC is not set +CONFIG_OF_CONTROL=y +CONFIG_DM=y diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/u-boot_%.bbappend b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/u-boot_%.bbappend new file mode 100644 index 0000000..64bd6c5 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-bsp/u-boot/u-boot_%.bbappend @@ -0,0 +1,34 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI += "file://defconfig" + +# only alter the default bootcmd if we build for the vexpress machine +SRC_URI_append_vexpress = " file://0001-setup-bootcmd-for-tftp.patch" +# take care +# SRC_URI_vexpress += "file://0001-setup-bootcmd-for-tftp.patch" +# is NOT the same. The result is that the old content of SRC_URI is lost!! + +do_configure_prepend () { + cp ${WORKDIR}/defconfig ${S}/.config + cd ${S}; oe_runmake oldconfig +} + +do_compile () { + export HOST_EXTRACFLAGS="${BUILD_CFLAGS}" + export HOST_EXTRACXXFLAGS="${BUILD_CXXFLAGS}" + export HOSTLDFLAGS="${BUILD_LDFLAGS}" + cd ${S}; oe_runmake u-boot-nodtb.bin + # instead of hardcoding the dtb it would be nicer to use the varialbe + # specified in vexpress.conf: UBOOT_MACHINE = "u-boot-nodtb" + # cd ${S}; oe_runmake ${UBOOT_MACHINE}.bin +} + +do_install () { + cd ${S}; install -D -m 0644 u-boot.cfg ${D}${datadir}/u-boot/u-boot.cfg +} + +FILES_${PN}-dev_append = " ${datadir}/u-boot/u-boot.cfg" + +do_deploy () { + cd ${S}; install -D -m 0644 u-boot-nodtb.bin ${DEPLOYDIR}/u-boot-nodtb.bin +} |
