diff options
| author | John Ogness <john.ogness@linutronix.de> | 2017-12-19 11:16:28 +0100 |
|---|---|---|
| committer | John Ogness <john.ogness@linutronix.de> | 2017-12-19 11:16:28 +0100 |
| commit | 6e7e1b7172813fc4ecb60597f903dd21a4616159 (patch) | |
| tree | dbfe0b8f1a3d51c275722ba86d4ffe109ee88aef /distribution | |
| parent | 270520b4a2eac8725c8575c3180964289722e191 (diff) | |
update yocto-advanced: sync to devel/manut/yocto
The devel/manut/yocto heavily diverted from master. Sync
with latest version 8cd4956a9b48a316eab6dc6d1b1f6cd51362fecf.
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Diffstat (limited to 'distribution')
49 files changed, 1420 insertions, 162 deletions
diff --git a/distribution/yocto-advanced/TUTORIAL.bash b/distribution/yocto-advanced/TUTORIAL.bash new file mode 100755 index 0000000..ecdf805 --- /dev/null +++ b/distribution/yocto-advanced/TUTORIAL.bash @@ -0,0 +1,47 @@ +#!/bin/bash + +# +# This script shows the steps for building and executing qemu, the boot files, +# and root filesystems. +# + + +# make meta-schulung-extended a git repository (optional) +# +#cd meta-schulung-extended +#git init +#git add . +#git commit -a -m 'initial commit' +#cd .. + +# get a local copy of poky +git clone -b krogoth git://git.yoctoproject.org/poky.git + +# setup (and switch to) the build environment +cd poky +TEMPLATECONF=../meta-schulung-extended/conf source ./oe-init-build-env ../build-schulung + +# build qemu, u-boot/kernel/devicetree, root filesystem +bitbake qemu-native qemu-boot-files core-image-schulung meta-ide-support + +# start the core image in qemu +DEPLOY=tmp/deploy/images/vexpress +SD=$DEPLOY/core-image-schulung-vexpress.ext4 +UBOOT=$DEPLOY/u-boot.uimg +QEMU_AUDIO_DRV=none \ + ./tmp/work/armv7ahf-neon-poky-linux-gnueabi/meta-ide-support/1.0-r3/recipe-sysroot-native/usr/bin/qemu-system-arm \ + -M vexpress-a9 \ + -m 128 \ + -nographic \ + -net nic -net user,tftp=$DEPLOY \ + -drive file=${SD},if=sd,format=raw \ + -kernel $UBOOT + + + +# from the U-Boot prompt: +# => dhcp 0x64000000 image.fit +# => setenv bootargs console=ttyAMA0,115200 root=/dev/mmcblk0 +# => bootm 0x64000000 + +# either run "poweroff" or powercut virtual machine with "CTRL-a, x" diff --git a/distribution/yocto-advanced/exportsrc.bblcass b/distribution/yocto-advanced/exportsrc.bbclass index c123111..c123111 100644 --- a/distribution/yocto-advanced/exportsrc.bblcass +++ b/distribution/yocto-advanced/exportsrc.bbclass diff --git a/distribution/yocto-advanced/meta-schulung-extended/classes/exportsrc.bbclass b/distribution/yocto-advanced/meta-schulung-extended/classes/exportsrc.bbclass new file mode 100644 index 0000000..c123111 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/classes/exportsrc.bbclass @@ -0,0 +1,8 @@ +do_exportsrc () { + DEPLOY_DIR_SRC="${DEPLOY_DIR}/src-export/${MACHINE}" + mkdir -p "${DEPLOY_DIR_SRC}" + tar cjf "${DEPLOY_DIR_SRC}/${PN}-${PV}-${PR}.tar.bz2" -C "${WORKDIR}" "${BP}" +} + +addtask exportsrc after do_configure before do_compile + diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/bblayers.conf.sample b/distribution/yocto-advanced/meta-schulung-extended/conf/bblayers.conf.sample new file mode 100644 index 0000000..89e9964 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/bblayers.conf.sample @@ -0,0 +1,12 @@ +# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +POKY_BBLAYERS_CONF_VERSION = "2" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-poky \ + ##OEROOT##/../meta-schulung-extended \ + " diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung-poky.conf b/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung-poky.conf new file mode 100644 index 0000000..4a0d6cf --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung-poky.conf @@ -0,0 +1,19 @@ +# whatever poky does +require conf/distro/poky.conf + +# but call it schulung-poky +DISTRO = "schulung-poky" + +# and keep named compatibility with poky +DISTROOVERRIDES = "poky" + +# debian/jessie works great +SANITY_TESTED_DISTROS = "DebianGNULinux-8" + +# if this distribution is designed for internal use, it may +# be appropriate to set PREMIRRORS here for internal mirrors +#PREMIRRORS ?= "" + +# set preferred kernel and version for this distribution +PREFERRED_PROVIDER_virtual/kernel ?= "linux-basic" +PREFERRED_VERSION_virtual/kernel ?= "4.4" diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung.conf b/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung.conf new file mode 100644 index 0000000..9a2c552 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/distro/schulung.conf @@ -0,0 +1,27 @@ +# whatever poky does +require conf/distro/poky.conf + +# but call it schulung-poky +DISTRO = "schulung" +DISTRO_NAME = "Schulung (Yocto Schulung Example Distro)" +DISTRO_VERSION = "1.0" +DISTRO_CODENAME = "pyro" +SDK_VENDOR = "-schulungsdk" + +MAINTAINER = "YourName <you@schulung>" + +TARGET_VENDOR = "-schulung" + +# and keep named compatibility with poky +DISTROOVERRIDES = "poky" + +# debian/jessie works great +SANITY_TESTED_DISTROS = "debian-8" + +# remove some distro features added in poky.conf +DISTRO_FEATURES_remove = "alsa argp bluetooth irda pcmcia usbgadget usbhost wifi zeroconf 3g nfc x11 ipv6 opengl ptest wayland pulseaudio bluez5 gobject-introspection-data" + +# enable systemd as init daemon +#DISTRO_FEATURES_remove = "sysvinit" +#DISTRO_FEATURES += "systemd" +#VIRTUAL-RUNTIME_init_manager = "systemd" diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/layer.conf b/distribution/yocto-advanced/meta-schulung-extended/conf/layer.conf new file mode 100644 index 0000000..874701b --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/layer.conf @@ -0,0 +1,26 @@ +# add this layer to the search path for bitbake +BBPATH .= ":${LAYERDIR}" + +# specify where all bb and bbappend files for this layer are +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb" +BBFILES += "${LAYERDIR}/recipes-*/*/*.bbappend" + +# name this layer +# (...and add it to bitbake's list of known layers) +BBFILE_COLLECTIONS += "schulung" + +# specify the pattern that can be used to match file paths with this layer +BBFILE_PATTERN_schulung = "^${LAYERDIR}/" + +# specify the priority of this layer +BBFILE_PRIORITY_schulung = "10" + +# specify the version of this layer +# (should only be incremented on significant changes that will cause +# compatibility issues with other layers) +LAYERVERSION_schulung = "1" + +# layers this layer depends on +# (look at the BBFILE_COLLECTIONS value in a layer's +# layer.conf to see what its name is) +LAYERDEPENDS_schulung = "core" diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/local.conf.sample b/distribution/yocto-advanced/meta-schulung-extended/conf/local.conf.sample new file mode 100644 index 0000000..6d66139 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/local.conf.sample @@ -0,0 +1,7 @@ +DISTRO ?= "schulung" +MACHINE ?= "vexpress" +PACKAGE_CLASSES ?= "package_ipk" +PATCHRESOLVE ?= "noop" +DL_DIR ?= "/home/devel/downloads" +SSTATE_DIR ?= "/home/devel/sstate-cache" +CONF_VERSION = "1" diff --git a/distribution/yocto-advanced/meta-schulung-extended/conf/machine/vexpress.conf b/distribution/yocto-advanced/meta-schulung-extended/conf/machine/vexpress.conf new file mode 100644 index 0000000..3c542eb --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/conf/machine/vexpress.conf @@ -0,0 +1,69 @@ +# build hardware floating point binaries +# (tune-coretexa8.inc sets "armv7a-neon" as default) +DEFAULTTUNE ?= "armv7athf-neon" + +# build for cortex a8 +# (for our vexpress board we could use tune-cortexa9.inc, but +# we wanted to stay compatible with beaglebone/cortex-a8) +require conf/machine/include/tune-cortexa8.inc + +# for generating a qemu-boot.conf file +require conf/machine/include/qemu.inc +QB_SYSTEM_NAME = "qemu-system-arm" +QB_MACHINE = "-machine vexpress-a9" +QB_DEFAULT_KERNEL = "u-boot.uimg" +# for using tftpboot set QB_NETWORK_DEVICE to "-net user,tftp=tmp/deploy/images/vexpress" +QB_NETWORK_DEVICE = "-device virtio-net-device,mac=@MAC@ -net user" +QB_DEFAULT_FSTYPE = "wic" +QB_DRIVE_TYPE = "/dev/mmcblk" +QB_OPT_APPEND = "-nographic" +KERNEL_IMAGETYPE ?= "u-boot.uimg" + +# machine features are used to install additional packages and can +# be set to values like: +# MACHINE_FEATURES="alsa bluetooth usbgadget screen rtc qemu-usermode" +MACHINE_FEATURES="" + +# build tarballs of root filesystems +IMAGE_FSTYPES += "tar.gz" + +# build ext4 images +IMAGE_FSTYPES += "ext4" + +# build ext2 images +IMAGE_FSTYPES += "ext2" + +# build sdcard image +IMAGE_FSTYPES += "wic wic.bmap" +WKS_FILE ?= "vexpress.wks" +do_image_wic[depends] += "qemu-boot-files:do_deploy mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot" +# files that should be stored on the /boot partition of the sdcard +IMAGE_BOOT_FILES = "image.fit" + +# build ubi images +# (the "ubi" image type requires addition hardware-specific details for +# creating the image... what variables are needed and how they are used +# can be seen in image_types.bbclass, in the IMAGE_CMD_ubifs function) +MKUBIFS_ARGS = "-m 1 -e 524160 -c 256" +UBINIZE_ARGS = "-m 1 -p 524288 -s 1" +UBI_VOLNAME = "rootfs" +IMAGE_FSTYPES += "ubi" + +# set the default device tree for this board +# (this is a variable we created, used by the linux-basic recipe) +DTB ?= "vexpress-v2p-ca9.dtb" + +# set the baud rate and device for the serial console +# (bitbake.conf adds value to a ${SERIAL_CONSOLES} list, but it is up to +# invididual recipes to do something useful with this information +SERIAL_CONSOLE = "115200 ttyAMA0" + +# use linux-basic as kernel recipe +PREFERRED_PROVIDER_virtual/kernel = "linux-basic" +# and install the kernel modules into the rootfs +MACHINE_EXTRA_RRECOMMENDS = "kernel-modules" + +# use u-boot as bootloader +PREFERRED_PROVIDER_virtual/bootloader = "u-boot" +# build the make target 'u-boot-nodtb' +UBOOT_MACHINE = "u-boot-nodtb" diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello-init.sh b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello-init.sh new file mode 100644 index 0000000..1d40092 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello-init.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +case $1 in +start) + exec hello + ;; +stop) + exit 0 + ;; +esac + +exit 1 diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello.c b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello.c new file mode 100644 index 0000000..aea8503 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/files/hello.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +/* + * A simple application to greet the world. + */ + +int main(void) +{ + printf("Hello, world!\n"); + return 0; +} + diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/hello_1.0.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/hello_1.0.bb new file mode 100644 index 0000000..3f9b9c2 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-app/greeting/hello_1.0.bb @@ -0,0 +1,49 @@ +# packages require licenses! +LICENSE = "MIT" + +# if the license is not "CLOSED", a checksum is required +# (we are using a common license file since this +# application does not provide LICENSE text) +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +# specify files needed to build the package +SRC_URI = " \ + file://hello.c \ + file://hello-init.sh \ +" + +S = "${WORKDIR}" + +# specify a new compile task +# - by default, poky calls "make", but we have no Makefile +# - this task is called from the ${S} directory, ${WORKDIR}/${PN}/${PV} +# - poky appropriately sets ${CC}, ${CFLAGS}, ${LDFLAGS} and exports +# them to the shell process environment +do_compile () { + $CC $CFLAGS $LDFLAGS -o${B}/hello ${S}/hello.c +} + +# specify an install task +# - by default, do_install is empty +# - this task is called from the ${S} directory, ${WORKDIR}/${PN}-${PV} +# - anything copy to ${D} will be packaged +# - by default, poky sets ${base_bindir} to "/bin" +do_install () { + install -D -m 0755 ${B}/hello ${D}${base_bindir}/hello + + # install the init script + install -D -m 0755 ${WORKDIR}/hello-init.sh \ + ${D}${sysconfdir}/init.d/hello +} + +# specify the name of the init script +# (it is will be expected to be in /etc/init.d) +INITSCRIPT_NAME="hello" + +# setup the init script +# (this will create the link: /etc/rcS.d/S20hello) +INITSCRIPT_PARAMS = "start 20 S ." + +# use the update-rc.d class to setup the init scripts +# (this class uses INITSCRIPT_NAME and INITSCRIPT_PARAMS) +inherit update-rc.d 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 +} diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.24.1.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.24.1.bb new file mode 100644 index 0000000..de441f7 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.24.1.bb @@ -0,0 +1,64 @@ +# source file +SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=upstream" + +# source file checksums +SRC_URI[upstream.md5sum] = "be98a40cadf84ce2d6b05fa41a275c6a" +SRC_URI[upstream.sha256sum] = "37d03132cc078937360b392170b7a1d0e5b322eee9f57c0b82292a8b1f0afe3d" + +# license information +LICENSE = "GPLv2 & bzip2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb" + +# specify additional arguments used by "oe_runmake" +# - busybox requires "CROSS_COMPILE" to specify the toolchain prefix +# (${TARGET_PREFIX} is correctly set to this in bitbake.conf) +# - busybox requires "CONFIG_SYSROOT" to specify the sysroot +# - if V=1 is used the busybox Makefiles produce verbose build output, +# which helps to investigate any possible build errors +EXTRA_OEMAKE += "CROSS_COMPILE=${TARGET_PREFIX}" +EXTRA_OEMAKE += "CONFIG_SYSROOT=${PKG_CONFIG_SYSROOT_DIR}" +EXTRA_OEMAKE += "V=1" + +# configure busybox using the shipped defconfig +do_configure () { + oe_runmake defconfig +} + +# build busybox and the links file +# - the links file is a text file listing all the links that +# should be created to use all configured busybox features +# - ${TARGET_CC_ARCH} is set in bitbake.conf and specifies the architecture- +# specific compiler options (for example, hardware floating point) +# (busybox needs this additional information in CFLAGS) +do_compile () { + export CFLAGS="${TARGET_CC_ARCH} ${CFLAGS}" + oe_runmake busybox_unstripped + oe_runmake busybox.links +} + +# install the busybox binary and the links file +# - the links file needs to be adjusted if non-default definitions +# for ${prefix}, ${base_sbindir}, ${base_bindir} are used +do_install () { + # fixup the links file if bitbake is using different paths + test "${prefix}" != "/usr" && \ + sed -i -e "s:^/usr/:${prefix}/:" busybox.links + test "${base_sbindir}" != "/sbin" && \ + sed -i -e "s:^/sbin/:${base_sbindir}/:" busybox.links + test "${base_bindir}" != "/bin" && \ + sed -i -e "s:^/bin/:${base_bindir}/:" busybox.links + + install -D -m 0755 busybox_unstripped ${D}${base_bindir}/busybox + install -D -m 0644 busybox.links ${D}${datadir}/busybox/busybox.links + + # NOTE: We do _not_ create the busybox links here because it should + # _not_ be busybox's decision which files appear on the + # root filesystem. That is a decision to be made by the root + # filesystem recipe. A root filesystem recipe can use the + # links file to determine what links can be created. +} + +# the links file belongs in the -dev package +# (it will not be installed in the root filesystem) +# - the links file will be used when building the root filesystem +FILES_${PN}-dev_append = " ${datadir}/busybox/busybox.links" diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.26.2.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.26.2.bb new file mode 100644 index 0000000..8eaf3f8 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/busybox_1.26.2.bb @@ -0,0 +1,83 @@ +# source file +SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=upstream \ + file://hwclock.sh \ + file://busybox-udhcpd \ +" + +# source file checksums +SRC_URI[upstream.md5sum] = "bb59d25ee2643db20f212eec539429f1" +SRC_URI[upstream.sha256sum] = "da3e44913fc1a9c9b7c5337ea5292da518683cbff32be630777f565d6036af16" + +# license information +LICENSE = "GPLv2 & bzip2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=de10de48642ab74318e893a61105afbb" + +# specify additional arguments used by "oe_runmake" +# - busybox requires "CROSS_COMPILE" to specify the toolchain prefix +# (${TARGET_PREFIX} is correctly set to this in bitbake.conf) +# - busybox requires "CONFIG_SYSROOT" to specify the sysroot +# - if V=1 is used the busybox Makefiles produce verbose build output, +# which helps to investigate any possible build errors +EXTRA_OEMAKE += "CROSS_COMPILE=${TARGET_PREFIX}" +EXTRA_OEMAKE += "CONFIG_SYSROOT=${PKG_CONFIG_SYSROOT_DIR}" +EXTRA_OEMAKE += "V=1" + +# configure busybox using the shipped defconfig +do_configure () { + oe_runmake defconfig +} + +# build busybox and the links file +# - the links file is a text file listing all the links that +# should be created to use all configured busybox features +# - ${TARGET_CC_ARCH} is set in bitbake.conf and specifies the architecture- +# specific compiler options (for example, hardware floating point) +# (busybox needs this additional information in CFLAGS) +do_compile () { + export CFLAGS="${TARGET_CC_ARCH} ${CFLAGS}" + oe_runmake busybox_unstripped + oe_runmake busybox.links +} + +# install the busybox binary and the links file +# - the links file needs to be adjusted if non-default definitions +# for ${prefix}, ${base_sbindir}, ${base_bindir} are used +do_install () { + # fixup the links file if bitbake is using different paths + test "${prefix}" != "/usr" && \ + sed -i -e "s:^/usr/:${prefix}/:" busybox.links + test "${base_sbindir}" != "/sbin" && \ + sed -i -e "s:^/sbin/:${base_sbindir}/:" busybox.links + test "${base_bindir}" != "/bin" && \ + sed -i -e "s:^/bin/:${base_bindir}/:" busybox.links + + install -D -m 0755 busybox_unstripped ${D}${base_bindir}/busybox + install -D -m 0644 busybox.links ${D}${datadir}/busybox/busybox.links + + # NOTE: We do _not_ create the busybox links here because it should + # _not_ be busybox's decision which files appear on the + # root filesystem. That is a decision to be made by the root + # filesystem recipe. A root filesystem recipe can use the + # links file to determine what links can be created. + + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/hwclock.sh ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/busybox-udhcpd ${D}${sysconfdir}/init.d/ +} + +# the links file belongs in the -dev package +# (it will not be installed in the root filesystem) +# - the links file will be used when building the root filesystem +FILES_${PN}-dev_append = " ${datadir}/busybox/busybox.links" + + +PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock" + +FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd" +FILES_${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc" +FILES_${PN}-hwclock = "${sysconfdir}/init.d/hwclock.sh" + +INITSCRIPT_PACKAGES = "${PN}-udhcpd ${PN}-hwclock" + +INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh" +INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd" diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/busybox-udhcpd b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/busybox-udhcpd new file mode 100755 index 0000000..c43903e --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/busybox-udhcpd @@ -0,0 +1,43 @@ +#!/bin/sh +DAEMON=/usr/sbin/udhcpd +NAME=udhcpd +DESC="Busybox UDHCP Server" +ARGS="/etc/udhcpd.conf" + +test -f $DAEMON || exit 1 + +set -e + +case "$1" in + start) + echo -n "starting $DESC: $NAME... " + if [ ! -f /etc/udhcpd.conf ]; then + echo "error: /etc/udhcpd.conf is missing." + exit 1 + fi + /sbin/start-stop-daemon -S -b -n $NAME -a $DAEMON -- $ARGS + echo "done." + ;; + stop) + echo -n "stopping $DESC: $NAME... " + /sbin/start-stop-daemon -K -n $NAME + echo "done." + ;; + restart) + echo "restarting $DESC: $NAME... " + $0 stop + $0 start + echo "done." + ;; + reload) + echo -n "reloading $DESC: $NAME... " + killall -HUP $(basename ${DAEMON}) + echo "done." + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/hwclock.sh b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/hwclock.sh new file mode 100644 index 0000000..be5f94d --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/busybox/files/hwclock.sh @@ -0,0 +1,83 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: hwclock +# Required-Start: +# Required-Stop: $local_fs +# Default-Start: S +# Default-Stop: 0 6 +# Short-Description: Set system clock +# Description: Set system clock to hardware clock, according to the UTC +# setting in /etc/default/rcS (see also rcS(5)). +### END INIT INFO +# +# WARNING: If your hardware clock is not in UTC/GMT, this script +# must know the local time zone. This information is +# stored in /etc/localtime. This might be a problem if +# your /etc/localtime is a symlink to something in +# /usr/share/zoneinfo AND /usr isn't in the root +# partition! The workaround is to define TZ either +# in /etc/default/rcS, or in the proper place below. + +[ ! -x /sbin/hwclock ] && exit 0 + +[ -f /etc/default/rcS ] && . /etc/default/rcS + +[ "$UTC" = "yes" ] && tz="--utc" || tz="--localtime" +case "$1" in + start) + if [ "$VERBOSE" != no ] + then + echo "System time was `date`." + echo "Setting the System Clock using the Hardware Clock as reference..." + fi + + if [ "$HWCLOCKACCESS" != no ] + then + if [ -z "$TZ" ] + then + hwclock $tz --hctosys + else + TZ="$TZ" hwclock $tz --hctosys + fi + fi + + if [ "$VERBOSE" != no ] + then + echo "System Clock set. System local time is now `date`." + fi + ;; + stop|restart|reload|force-reload) + # + # Updates the Hardware Clock with the System Clock time. + # This will *override* any changes made to the Hardware Clock. + # + # WARNING: If you disable this, any changes to the system + # clock will not be carried across reboots. + # + if [ "$VERBOSE" != no ] + then + echo "Saving the System Clock time to the Hardware Clock..." + fi + if [ "$HWCLOCKACCESS" != no ] + then + hwclock $tz --systohc + fi + if [ "$VERBOSE" != no ] + then + echo "Hardware Clock updated to `date`." + fi + exit 0 + ;; + show) + if [ "$HWCLOCKACCESS" != no ] + then + hwclock $tz --show + fi + ;; + *) + echo "Usage: hwclock.sh {start|stop|show|reload|restart}" >&2 + echo " start sets kernel (system) clock from hardware (RTC) clock" >&2 + echo " stop and reload set hardware (RTC) clock from kernel (system) clock" >&2 + exit 1 + ;; +esac diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/images/core-image-schulung.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/images/core-image-schulung.bb new file mode 100644 index 0000000..516bca3 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/images/core-image-schulung.bb @@ -0,0 +1,50 @@ +# use the core-image class (poky/meta/core-image.bbclass) +inherit core-image + +# add package management to the image +# (the package management type depends on PACKAGE_CLASSES) +IMAGE_FEATURES += "package-management" + +# do not install any particular locales +# (they are big and we don't need them) +IMAGE_LINUGUAS = " " + +# set the size of the partition for the image +# (see image.bbclass for related limits) +IMAGE_ROOTFS_SIZE ?= "32768" + +# specify packages for the root filesystem +# (IMAGE_INSTALL is defined in and used by core-image.bbclass +# for a list of packages to be installed, use = to ignore the +# packages added by 'packagegroup-core-boot') +# IMAGE_INSTALL += "hello schulung-rootfs openssh" +IMAGE_INSTALL = "hello schulung-rootfs" + +# set a root password +# inherit extrausers +# EXTRA_USERS_PARAMS = "usermod -P foo root;" + +# busybox must be installed so we have access to busybox.links +# (for DEPENDS packages, the -dev variant of the package +# is also installed in the sysroot) +DEPENDS += "busybox" + +# create a function to create the busybox links +# - anything copied to ${IMAGE_ROOTFS} will also appear in the root filesystem +# (this is set in bitbake.conf to ${WORKDIR}/rootfs) +setup_busybox_links () { + for lnfile in `cat ${PKG_CONFIG_SYSROOT_DIR}${datadir}/busybox/busybox.links`; do + # do not create /linuxrc link, we do not need it + test $lnfile = /linuxrc && continue + + # create parent directory if necessary + install -d ${IMAGE_ROOTFS}`dirname $lnfile` + + # link creation is allowed to fail if a file is already there + ln -s ${base_bindir}/busybox ${IMAGE_ROOTFS}$lnfile || true + done +} +# ...and have it called after the rootfs task is finished +do_rootfs[postfuncs] += "setup_busybox_links" + +# using "do_rootfs_append ()" as function would have the same effect diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/keys/keys-native.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/keys/keys-native.bb new file mode 100644 index 0000000..0d97038 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/keys/keys-native.bb @@ -0,0 +1,27 @@ +# openssl is needed during build time to generate the keys +DEPENDS += "openssl-native dtc-native" + +# specify a license (required for packages) +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +# perform key generation as the compile task +do_compile () { + openssl genpkey -algorithm RSA -out dev.key \ + -pkeyopt rsa_keygen_bits:4096 + openssl req -batch -new -x509 -sha512 -key dev.key -out dev.crt + openssl x509 -noout -text -in dev.crt + + # this combined file could be used by kernel module signing + cat dev.crt dev.key > dev.pem +} + +# install the keys to the datadir +do_install () { + install -D -m 0644 dev.key ${D}/${datadir}/keys/dev.key + install -D -m 0644 dev.crt ${D}/${datadir}/keys/dev.crt + install -D -m 0644 dev.pem ${D}/${datadir}/keys/dev.pem +} + +# this is a native package +inherit native diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/busybox_inittab b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/busybox_inittab new file mode 100644 index 0000000..66942e4 --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/busybox_inittab @@ -0,0 +1,13 @@ +# Boot-time system configuration/initialization script. +# This is run first except when booting in single-user mode. +::sysinit:/etc/init.d/rcS + +# start an "askfirst" shell on the console (whatever that may be) +::askfirst:-/bin/sh + +# stuff to do when restarting the init process +::restart:/sbin/init + +# stuff to do before rebooting +::ctrlaltdel:/sbin/reboot +::shutdown:/bin/umount -a -r diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/rcS b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/rcS new file mode 100644 index 0000000..e0d039a --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/files/rcS @@ -0,0 +1,18 @@ +#!/bin/sh + +# mount important virtual filesystems +mount -t devtmpfs none /dev +mount -t proc none /proc +mount -t sysfs none /sys + +# make sure there is a startup direcdtory +test -d /etc/rcS.d || exit 0 + +# start all startup scripts in startup directory +for scr in `ls /etc/rcS.d`; do + case $scr in + S*) + /etc/rcS.d/$scr start + ;; + esac +done diff --git a/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/schulung-rootfs_1.0.bb b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/schulung-rootfs_1.0.bb new file mode 100644 index 0000000..4c4992a --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/recipes-core/rootfs/schulung-rootfs_1.0.bb @@ -0,0 +1,36 @@ +# license information +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +# increase this value to force a rebuild of the recipe +PR = "r0" + +# specify _runtime_ dependency on busybox (for package manager) +# (i.e. busybox can't be uninstalled because schulung-rootfs depends on it) +# - since runtime dependencies are related to specific packages, they are +# specified in per package variables (i.e. RDEPENDS_${PN}, not RDEPENDS) +RDEPENDS_${PN} = "busybox" + +# specify inittab configuration file and master startup script +SRC_URI = "file://busybox_inittab file://rcS" + +# install scripts, configurations, important empty directories +do_install () { + # install the scripts/configurations + install -D -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d/rcS + install -D -m 0644 ${WORKDIR}/busybox_inittab ${D}${sysconfdir}/inittab + + # create skeleton directories + install -d ${D}/tmp + install -d ${D}/dev + install -d ${D}/proc + install -d ${D}/sys +} + +# manually add some directories because they are not automatically identified +# (if this is not done, poky will complain about files +# in ${D} that do not belong to any package) +FILES_${PN} += "/tmp" +FILES_${PN} += "/dev" +FILES_${PN} += "/proc" +FILES_${PN} += "/sys" diff --git a/distribution/yocto-advanced/meta-schulung-extended/scripts/lib/wic/canned-wks/vexpress.wks b/distribution/yocto-advanced/meta-schulung-extended/scripts/lib/wic/canned-wks/vexpress.wks new file mode 100644 index 0000000..89ef56b --- /dev/null +++ b/distribution/yocto-advanced/meta-schulung-extended/scripts/lib/wic/canned-wks/vexpress.wks @@ -0,0 +1,8 @@ +# short-description: Create a Phytec AM335x disk image (SD card) +# long-description: Creates a partitioned disk image for Phytec AM335x BSPs +# boards that the user can directly dd to an SD card and boot. + +part /boot --source bootimg-partition --fstype=vfat --label boot --ondisk mmc --active --align 4096 --size 20 +part / --source rootfs --fstype=ext2 --label root --ondisk mmc --align 1024 --use-uuid + +bootloader --timeout=0 diff --git a/distribution/yocto-advanced/pres_yocto-advanced.tex b/distribution/yocto-advanced/pres_yocto-advanced.tex index 8aabc24..13b673e 100644 --- a/distribution/yocto-advanced/pres_yocto-advanced.tex +++ b/distribution/yocto-advanced/pres_yocto-advanced.tex @@ -1,6 +1,7 @@ \input{configpres} \title{YOCTO - Advanced} +\date{} \maketitle \begin{frame} @@ -9,28 +10,54 @@ \item Using BSP layers \item Create layers \& recipes for own applications \item Define a distribution - \item Create a customized image class - \item Build images + \item Integrate own Kernel \end{itemize} \end{frame} +\input{yocto-local-conf} \input{yocto-layers} -\input{yocto-ti-layer} +%\input{yocto-wega-layer} +\input{yocto-create-own-layer} +\input{yocto-add-simple-application} +\input{yocto-add-autotools-based-src} \input{yocto-layer-imx6} -\input{yocto-flash-official-bb-img} -\input{yocto-bbb-machine-conf} \input{yocto-add-own-kernel} -\input{yocto-u-boot-integration} -\input{yocto-sdcard-generation} +%\input{yocto-flash-official-bb-img} +%\input{yocto-bbb-machine-conf} +%\input{yocto-u-boot-integration} +%\input{yocto-sdcard-generation} \input{yocto-distro-definitions} -\input{yocto-create-own-layer} \input{yocto-extend-image} -\input{yocto-local-conf} -\input{yocto-excercise-build-bbb-img} -\input{yocto-add-simple-application} -\input{yocto-add-autotools-based-src} -\input{yocto-add-qt-cmake-projects} +%\input{yocto-add-qt-cmake-projects} \input{yocto-img-customization} +\begin{frame}[fragile] +\frametitle{override default config files} +default templates can be overridden by setting TEMPLATECONF +to e.g. meta-foo/conf during ./oe-init-buildenv. + +Then meta-foo/conf bblayers.conf.sample and local.conf.sample will +be used. + +The default location is specified in + +\begin{verbatim} +% cat .templateconf +# Template settings +TEMPLATECONF=${TEMPLATECONF:-meta-yocto/conf} +\end{verbatim} +\end{frame} +\input{yocto-scripts} \input{yocto-resume} +\begin{frame} + \frametitle{Application Development Excercise} +\begin{itemize} +\item generate a standalone or integrated SDK +\item configure the SDK in eclipse +\item build and remote debug yesterdays application on the beaglebone-black +\item integrate the application into the image +\item build the image including your application +\end{itemize} +\end{frame} + \input{tailpres} diff --git a/distribution/yocto-advanced/yocto-add-autotools-based-src.tex b/distribution/yocto-advanced/yocto-add-autotools-based-src.tex index 7c99f69..772a80b 100644 --- a/distribution/yocto-advanced/yocto-add-autotools-based-src.tex +++ b/distribution/yocto-advanced/yocto-add-autotools-based-src.tex @@ -5,7 +5,6 @@ └── files └── autohello-1.0.tar.gz \end{verbatim} -\pause \begin{verbatim} DESCRIPTION = "GNU Helloworld application" SECTION = "examples" diff --git a/distribution/yocto-advanced/yocto-add-own-kernel.tex b/distribution/yocto-advanced/yocto-add-own-kernel.tex index 7f86ecc..8d190f9 100644 --- a/distribution/yocto-advanced/yocto-add-own-kernel.tex +++ b/distribution/yocto-advanced/yocto-add-own-kernel.tex @@ -1,7 +1,7 @@ \subsection{Writing recipes} \begin{frame}[fragile] \frametitle{adding a kernel} -create the file 'meta-mini/recipes-bsp/linux-vanilla/linux-vanilla\_3.16.1.bb': +create the file 'meta-mybsp/recipes-bsp/linux-vanilla/linux-vanilla\_3.16.1.bb': \begin{verbatim} SECTION = "kernel" DESCRIPTION = "Linux vanilla kernel" @@ -26,7 +26,7 @@ S = "${WORKDIR}/git BRANCH = "master" SRC_URI = "https://www.kernel.org/pub/linux/kernel/v3.x/linux-${PV}.tar.xz \ - file://defconfig" + file://defconfig" SRC_URI[md5sum] = "e7a985a243b7941b6bc6240fcbc797fc" SRC_URI[sha256sum] = "be37dda8ea090525661d64e5c7fc8580f313b7f9ba8592e32120f1332b @@ -35,7 +35,7 @@ KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" LINUX_VERSION_EXTENSION = "-linutronix" do_configure_prepend() { - cp '${WORKDIR}/defconfig' '${S}/.config' + cp '${WORKDIR}/defconfig' '${S}/.config' } \end{verbatim} \end{frame} @@ -43,7 +43,7 @@ do_configure_prepend() { \begin{frame}[fragile] \frametitle{adding a defconfig} copy your .config file to -'meta-mini/recipes-bsp/linux-vanilla/files/beaglebone-black/defconfig' +'meta-mybsp/recipes-bsp/linux-vanilla/files/beaglebone-black/defconfig' \end{frame} \begin{frame}[fragile] @@ -52,7 +52,7 @@ add \begin{verbatim} PREFERRED_PROVIDER_virtual/kernel = "linux-vanilla" \end{verbatim} -to meta-mini/machine/beaglebone-black.conf +to meta-mybsp/machine/beaglebone-black.conf \end{frame} \begin{frame}[fragile] @@ -66,7 +66,6 @@ PROVIDES += "virtual/kernel" PREFERRED\_PROVIDER\_virtual/kernel = "linux-vanilla" -\pause \vspace{2em} also a preferred version can be set: diff --git a/distribution/yocto-advanced/yocto-add-qt-cmake-projects.tex b/distribution/yocto-advanced/yocto-add-qt-cmake-projects.tex index 2e5fa41..ad33a7b 100644 --- a/distribution/yocto-advanced/yocto-add-qt-cmake-projects.tex +++ b/distribution/yocto-advanced/yocto-add-qt-cmake-projects.tex @@ -6,7 +6,6 @@ │ └── hellocm-0.1.tar.bz2 └── hellocm_0.1.bb \end{verbatim} -\pause \begin{verbatim} DESCRIPTION = "hellocm cmake example" LICENSE = "MIT" @@ -28,7 +27,6 @@ FILES_{PN} = "${bindir}/hellocm" │ └── helloqt-1.0.tar.bz2 └── helloqt_1.0.bb \end{verbatim} -\pause \begin{verbatim} DESCRIPTION = "helloqt QT example" LICENSE = "MIT" diff --git a/distribution/yocto-advanced/yocto-add-simple-application.tex b/distribution/yocto-advanced/yocto-add-simple-application.tex index cf7fa57..18d3130 100644 --- a/distribution/yocto-advanced/yocto-add-simple-application.tex +++ b/distribution/yocto-advanced/yocto-add-simple-application.tex @@ -13,7 +13,7 @@ autotools and cmake based projects and qt applications. \frametitle{as simple as posible} use this folder layout \begin{verbatim} -poky/meta-mini/recipes-hello % tree +poky/meta-foo/recipes-hello % tree hello ├── files │ └── hello.c diff --git a/distribution/yocto-advanced/yocto-bbb-machine-conf.tex b/distribution/yocto-advanced/yocto-bbb-machine-conf.tex index 7345952..5fe0bb5 100644 --- a/distribution/yocto-advanced/yocto-bbb-machine-conf.tex +++ b/distribution/yocto-advanced/yocto-bbb-machine-conf.tex @@ -10,7 +10,7 @@ if no machine fits your needs, define your own! \begin{frame}[fragile] \frametitle{create a beaglebone-black machine config} -create the file 'meta-mini/conf/machine/beaglebone-black.conf': +create the file 'meta-mybsp/conf/machine/beaglebone-black.conf': \begin{verbatim} #@TYPE: Machine #@NAME: BeagleBone Black diff --git a/distribution/yocto-advanced/yocto-create-own-layer.tex b/distribution/yocto-advanced/yocto-create-own-layer.tex index 95d4916..91a95d9 100644 --- a/distribution/yocto-advanced/yocto-create-own-layer.tex +++ b/distribution/yocto-advanced/yocto-create-own-layer.tex @@ -3,7 +3,7 @@ \frametitle{with yocto helper script} \begin{verbatim} poky/build-ti % cd .. -poky % yocto-layer create mini +poky % yocto-layer create foo Please enter the layer priority you'd like to use for the layer: [default: 6] <return> Would you like to have an example recipe created? (y/n) @@ -16,22 +16,22 @@ Would you like to have an example bbappend file created? (y/n) \begin{frame}[fragile] \frametitle{manage the layer with git} \begin{verbatim} -poky % cd meta-mini -poky/meta-mini % git init . -poky/meta-mini % git add * -poky/meta-mini % git commit -sam 'inital version' +poky % cd meta-foo +poky/meta-foo % git init . +poky/meta-foo % git add * +poky/meta-foo % git commit -sam 'inital version' \end{verbatim} \end{frame} \begin{frame}[fragile] -\frametitle{minimal distribution} +\frametitle{foomal distribution} distros are defined in a layer, e.g. -meta-linutronix/conf/distro/mini.conf: +meta-linutronix/conf/distro/foo.conf: \begin{verbatim} -meta-mini/conf/distro/mini.conf: -DISTRO = "mini" -DISTRO_NAME = "mini 1.0 (for foo devices)" +meta-foo/conf/distro/foo.conf: +DISTRO = "foo" +DISTRO_NAME = "foo 1.0 (for foo devices)" DISTRO_VERSION = "1.0" DISTRO_CODENAME = "mal" \end{verbatim} @@ -83,7 +83,7 @@ OELAYOUT_ABI = "8" \begin{frame}[fragile] \frametitle{add distro to git repo} \begin{verbatim} -poky/meta-mini % git add conf/distro/mini.conf -poky/meta-mini % git commit -sam 'add mini distro' +poky/meta-foo % git add conf/distro/foo.conf +poky/meta-foo % git commit -sam 'add foo distro' \end{verbatim} \end{frame} diff --git a/distribution/yocto-advanced/yocto-distro-definitions.tex b/distribution/yocto-advanced/yocto-distro-definitions.tex index d556131..dbd2ec4 100644 --- a/distribution/yocto-advanced/yocto-distro-definitions.tex +++ b/distribution/yocto-advanced/yocto-distro-definitions.tex @@ -3,9 +3,7 @@ \frametitle{why define a distribution?} \begin{itemize} \item naming of the toolchain (codenames, vendor) - \pause \item version numbers - \pause \item enable default features \end{itemize} \end{frame} @@ -29,7 +27,6 @@ (OSS compatibility kernel modules installed if available) \item[bluetooth] bluetooth support (integrated BT only) \item[irda] IrDA support - \pause \item[wifi] WiFi support (integrated only). \item[keyboard] keyboard support (e.g. keymaps will be loaded during boot) \end{description} @@ -83,10 +80,26 @@ Normally the distro features are used in package groups in a core layer. e.g. 'meta/recipes-core/packagegroups/packagegroup-base.bb': \begin{verbatim} PACKAGES = ' \ - .. - ${@base_contains("DISTRO_FEATURES", \ - "opengl", "packagegroup-opengl", "", d)} \ - .. - ' + .. + ${@base_contains("DISTRO_FEATURES", \ + "opengl", "packagegroup-opengl", "", d)} \ + .. + ' \end{verbatim} \end{frame} + +\begin{frame}[fragile] +\frametitle{Yocto with local mirror} +\begin{description} +\item [PREMIRRORS] list of mirrors that are tried before SRC\_URI +\item [MIRRORS] list of mirrors that are tried after SRC\_URI +\item [BB\_FETCH\_PREMIRRORONLY = "1"] only use sources from PREMIRRORS +\item [BB\_NO\_NETWORK = "1"] throws error instead of accessing internet +\end{description} +typical in local.conf to generate the mirror: +\begin{description} +\item [BB\_GENERATE\_MIRROR\_TARBALLS = "1"] generates a tarball that can be + used as mirror +\end{description} +\end{frame} + diff --git a/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex b/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex index d1b003a..b679a79 100644 --- a/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex +++ b/distribution/yocto-advanced/yocto-excercise-build-bbb-img.tex @@ -1,6 +1,6 @@ \begin{frame}[fragile] \frametitle{Excercise} - 1) Add sample configs to the meta-mini layer providing a valid + 1) Add sample configs to the meta-foo/mybsp layers providing a valid layer configuration and a build configuration that creates a debug RFS for our self defined machine, by using our distribution. The configus should Use packages in deb format and the shared diff --git a/distribution/yocto-advanced/yocto-extend-image.tex b/distribution/yocto-advanced/yocto-extend-image.tex index a8a86ad..d0d0f01 100644 --- a/distribution/yocto-advanced/yocto-extend-image.tex +++ b/distribution/yocto-advanced/yocto-extend-image.tex @@ -10,9 +10,8 @@ openssh: packagegroup-core-ssh-dropbear: packagegroup-core-ssh-openssh: \end{verbatim} -\pause create the file -'meta-mini/recipes-bsp/mini-image/mini-image.bb' +'meta-foo/recipes-bsp/images/mini-image.bb' \begin{verbatim} IMAGE_INSTALL += "openssh" inherit core-image diff --git a/distribution/yocto-advanced/yocto-img-customization.tex b/distribution/yocto-advanced/yocto-img-customization.tex index 85599b7..6bebb56 100644 --- a/distribution/yocto-advanced/yocto-img-customization.tex +++ b/distribution/yocto-advanced/yocto-img-customization.tex @@ -2,14 +2,11 @@ \frametitle{adding a bootscript} \begin{itemize} \item add 'systemd' to DISTRO\_FEATURES -\pause \item inherit from systemd.bbclass -\pause \item your package needs to set SYSTEMD\_SERVICE variable; e.g. - \begin{verbatim} +\begin{verbatim} SYSTEMD_SERVICE_${PN} = "connman.service" - \end{verbatim} -\pause +\end{verbatim} \item to disable the service, set SYSTEMD\_AUTO\_ENABLE to 'disable' \end{itemize} \end{frame} @@ -62,13 +59,3 @@ PNBLACKLIST[exoticware] = "Not supported by our organization." \end{verbatim} \end{frame} -\begin{frame} - \frametitle{Application Development Excercise} -\begin{itemize} -\item generate a standalone or integrated SDK -\item configure the SDK in eclipse -\item build and remote debug yesterdays application on the beaglebone-black -\item integrate the application into the image -\item build the image including your application -\end{itemize} -\end{frame} diff --git a/distribution/yocto-advanced/yocto-layer-imx6.tex b/distribution/yocto-advanced/yocto-layer-imx6.tex index 1528645..729312c 100644 --- a/distribution/yocto-advanced/yocto-layer-imx6.tex +++ b/distribution/yocto-advanced/yocto-layer-imx6.tex @@ -1,19 +1,10 @@ \begin{frame}[fragile] -\frametitle{EXCURSUS: build an imx.6 image \#1} -use +\frametitle{build for imx.6 \#1} \begin{verbatim} -ls ../*/*/images/ -\end{verbatim} -to get a list of predefined images; image, you want to build an imx6 image, so -none of them fits your needs\dots - \pause -\begin{verbatim} -poky/build-fsl % cd .. -poky % git clone -b krogoth https://github.com/Freescale/meta-fsl-demos.git -poky % git clone -b krogoth git://git.openembedded.org/meta-openembedded +poky % git clone -b krogoth https://github.com/Freescale/meta-freescale-3rdparty.git +poky % git clone -b krogoth https://github.com/Freescale/meta-fsl-arm.git poky % cd - \end{verbatim} - \pause and edit conf/bblayers.conf, to match \begin{verbatim} BBLAYERS ?= " \ @@ -21,31 +12,34 @@ BBLAYERS ?= " \ /home/devel/poky/meta-yocto \ /home/devel/poky/meta-yocto-bsp \ /home/devel/poky/meta-fsl-arm \ - /home/devel/poky/meta-fsl-arm-extra \ - /home/devel/poky/meta-openembedded/meta-oe \ - /home/devel/poky/meta-fsl-demos \ + /home/devel/poky/meta-freescale-3rdparty \ " \end{verbatim} \end{frame} \begin{frame}[fragile] -\frametitle{EXCURSUS: build an imx.6 image \#2} -build a qt demo image +\frametitle{build for imx.6 \#2} +update conf/local.conf \begin{verbatim} -poky/build-imx6 % bitbake qt4e-demo-image -Currently 4 running tasks (26 of 4459): +DL_DIR ?= /home/devel/downloads +PACKAGE_CLASSES ?= "package_class_deb" +MACHINE ?= "imx6qsabrelite" +EXTRA_IMAGE_FEATURES ?= "debug-tweaks eclipse-debug" +\end{verbatim} +and build an image +\begin{verbatim} +poky/build-imx6 % bitbake core-image-minimal \end{verbatim} \end{frame} \begin{frame}[fragile] -\frametitle{EXCURSUS: build an imx.6 image \#3} +\frametitle{build for imx.6 \#3} \dots back from coffee break \begin{verbatim} ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"! \end{verbatim} what happened?? - \pause \begin{verbatim} poky/build-imx6 % df -h Filesystem Size Used Avail Use% Mounted on @@ -55,7 +49,6 @@ poky/build-imx6 % du -sm . poky/build-imx6 % du -sm ../build 29172 ../build/ \end{verbatim} - \pause \dots so the solution is to cleanup the disk and run \begin{verbatim} poky/build-imx6 % bitbake qt4e-demo-image @@ -66,8 +59,8 @@ A different behaviour can be configured in 'conf/local.conf'. \end{frame} \begin{frame}[fragile] -\frametitle{EXCURSUS: build an imx.6 image \#4} -example of an issue with a sabrelite board +\frametitle{build for imx.6 \#4} +example of an issue with an image with graphics \begin{verbatim} ERROR: To use 'gpu-viv-bin-mx6q' you need to accept the Freescale EULA @@ -85,12 +78,10 @@ ERROR: Task 1105 (/home/local/src/poky/meta-ti-arm/ gpu-viv-bin-mx6q_3.10.17-1.0.0-hfp.bb, do_unpack) failed with exit code '1' \end{verbatim} - \pause to solve this issue: \begin{verbatim} poky/build-fsl % echo 'ACCEPT_FSL_EULA = "1"' >> conf/local.conf \end{verbatim} - \pause \dots and run \begin{verbatim} poky/build-ti % bitbake qt4e-demo-image diff --git a/distribution/yocto-advanced/yocto-layers.tex b/distribution/yocto-advanced/yocto-layers.tex index 1c6dc53..2bd6286 100644 --- a/distribution/yocto-advanced/yocto-layers.tex +++ b/distribution/yocto-advanced/yocto-layers.tex @@ -27,7 +27,7 @@ meta-mylayer \begin{verbatim}BBPATH =. "${LAYERDIR}"\end{verbatim} \item add recipe directories to BBFILES \begin{verbatim}BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ - ${LAYERDIR}/recipes-*/*/*.bbappend"\end{verbatim} +${LAYERDIR}/recipes-*/*/*.bbappend"\end{verbatim} \item add layer name to BBFILE\_COLLECTIONS \begin{verbatim}BBFILE_COLLECTIONS += "mylayer"\end{verbatim} \item set root of the layer diff --git a/distribution/yocto-advanced/yocto-local-conf.tex b/distribution/yocto-advanced/yocto-local-conf.tex index b1e2a52..5213a78 100644 --- a/distribution/yocto-advanced/yocto-local-conf.tex +++ b/distribution/yocto-advanced/yocto-local-conf.tex @@ -19,31 +19,3 @@ local.conf is used to configure \end{itemize} \end{frame} -\begin{frame}[fragile] -\frametitle{Yocto with local mirror} -\begin{description} -\item [PREMIRRORS] list of mirrors that are tried before SRC\_URI -\item [MIRRORS] list of mirrors that are tried after SRC\_URI -\item [BB\_FETCH\_PREMIRRORONLY = "1"] only use sources from PREMIRRORS -\item [BB\_NO\_NETWORK = "1"] throws error instead of accessing internet -\item [BB\_GENERATE\_MIRROR\_TARBALLS = "1"] generates a tarball that can be - used as mirror -\end{description} -\end{frame} - -\begin{frame}[fragile] -\frametitle{override default config files} -default templates can be overridden by setting TEMPLATECONF -to e.g. meta-mini/conf during ./oe-init-buildenv. - -Then meta-mini/conf bblayers.conf.sample and local.conf.sample will -be used. - -The default location is specified in - -\begin{verbatim} -% cat .templateconf -# Template settings -TEMPLATECONF=${TEMPLATECONF:-meta-yocto/conf} -\end{verbatim} -\end{frame} diff --git a/distribution/yocto-advanced/yocto-scripts.tex b/distribution/yocto-advanced/yocto-scripts.tex index 54c2180..9e02f76 100644 --- a/distribution/yocto-advanced/yocto-scripts.tex +++ b/distribution/yocto-advanced/yocto-scripts.tex @@ -10,7 +10,7 @@ wic closes this gap \begin{verbatim} % wic list images -% wic create qemux86-directdisk -o /tmp -e core-image-minimal +% wic create am335x-sdimage -o /tmp -e mini-image \end{verbatim} \end{frame} @@ -47,23 +47,23 @@ devtool build-image core-image-minimal %TODO: verify %e.g. to replace config files on the target %\begin{verbatim} -%recipetool appendfile ../meta-mini /etc/X11/xorg.conf /tmp/xorg.conf +%recipetool appendfile ../meta-foo /etc/X11/xorg.conf /tmp/xorg.conf %\end{verbatim} %or to use modified sources %\begin{verbatim} -%recipetool appendsrcfile[s] ../meta-mini hello /tmp/hello.c [/tmp/hello2.c] +%recipetool appendsrcfile[s] ../meta-foo hello /tmp/hello.c [/tmp/hello2.c] %\end{verbatim} %\end{frame} -\begin{frame}[fragile] -\frametitle{wizard for creating machine configs} -use, -\begin{verbatim} -yocto-bsp list karch -\end{verbatim} -select the architecture that has the closet match with your hardware and use -\begin{verbatim} -yocto-bsp create <karch> mymachine -\end{verbatim} -and answer the questions. -\end{frame} +%\begin{frame}[fragile] +%\frametitle{wizard for creating machine configs} +%use, +%\begin{verbatim} +%yocto-bsp list karch +%\end{verbatim} +%select the architecture that has the closet match with your hardware and use +%\begin{verbatim} +%yocto-bsp create <karch> mymachine +%\end{verbatim} +%and answer the questions. +%\end{frame} diff --git a/distribution/yocto-advanced/yocto-sdcard-generation.tex b/distribution/yocto-advanced/yocto-sdcard-generation.tex index a36e213..b563bcd 100644 --- a/distribution/yocto-advanced/yocto-sdcard-generation.tex +++ b/distribution/yocto-advanced/yocto-sdcard-generation.tex @@ -1,3 +1,29 @@ +\subsection{generate a sdcard image} +\begin{frame}[fragile] +\frametitle{sdcard generation} +create the file: 'meta-foo/classes/image\_sdcard.bbclass': +\begin{verbatim} +inherit image_types + +IMAGE_BOOTLOADER ?= "u-boot" + +# Handle u-boot suffixes +UBOOT_SUFFIX ?= "bin" +UBOOT_PADDING ?= "0" +UBOOT_SUFFIX_SDCARD ?= "${UBOOT_SUFFIX}" + +# Linux bootstream +IMAGE_DEPENDS_linux.sb = "virtual/kernel:do_deploy" + +# Boot partition volume id +BOOTDD_VOLUME_ID ?= "Boot ${MACHINE}" +# Boot partition size [in KiB] +BOOT_SPACE ?= "8192" +# Set alignment to 4MB [in KiB] +IMAGE_ROOTFS_ALIGNMENT = "4096" +\end{verbatim} +\end{frame} + \begin{frame}[fragile] \frametitle{sdcard generation \#2} \begin{verbatim} @@ -100,7 +126,7 @@ IMAGE_TYPEDEP_sdcard = "${@d.getVar('SDCARD_ROOTFS', 1).split('.')[-1]}" \begin{frame}[fragile] \frametitle{configure machine to use sdcard imagetype} -add the following lines to 'meta-mini/conf/machine/beaglebone-black.conf': +add the following lines to 'meta-foo/conf/machine/beaglebone-black.conf': \begin{verbatim} IMAGE_CLASSES += "image_sdcard" SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3" diff --git a/distribution/yocto-advanced/yocto-ti-layer.tex b/distribution/yocto-advanced/yocto-ti-layer.tex index 1a5e923..38861de 100644 --- a/distribution/yocto-advanced/yocto-ti-layer.tex +++ b/distribution/yocto-advanced/yocto-ti-layer.tex @@ -49,7 +49,6 @@ BBLAYERS ?= " \ /home/devel/poky/meta-yocto-bsp \ " \end{verbatim} -\pause \begin{verbatim} % bitbake-layers show-layers layer path priority @@ -61,7 +60,7 @@ meta-yocto-bsp /home/devel/poky/meta-yocto-bsp 5 \end{frame} \begin{frame}[fragile] -\frametitle{add ti and meta-mini layers} +\frametitle{add ti and meta-foo layers} modify the BBLAYERS variable in bblayers.conf \begin{verbatim} BBLAYERS ?= " \ @@ -71,7 +70,6 @@ BBLAYERS ?= " \ /home/devel/poky/meta-ti \ " \end{verbatim} -\pause \begin{verbatim} % bitbake-layers show-layers layer path priority diff --git a/distribution/yocto-advanced/yocto-u-boot-integration.tex b/distribution/yocto-advanced/yocto-u-boot-integration.tex index 6b1421e..5617839 100644 --- a/distribution/yocto-advanced/yocto-u-boot-integration.tex +++ b/distribution/yocto-advanced/yocto-u-boot-integration.tex @@ -5,31 +5,6 @@ add PREFERRED_PROVIDER_virtual/bootloader = "u-boot" PREFERRED_PROVIDER_virtual/u-boot = "u-boot" \end{verbatim} -to meta-mini/machine/beaglebone-black.conf +to meta-mybsp/machine/beaglebone-black.conf \end{frame} -\subsection{generate a sdcard image} -\begin{frame}[fragile] -\frametitle{sdcard generation} -create the file: 'meta-mini/classes/image\_sdcard.bbclass': -\begin{verbatim} -inherit image_types - -IMAGE_BOOTLOADER ?= "u-boot" - -# Handle u-boot suffixes -UBOOT_SUFFIX ?= "bin" -UBOOT_PADDING ?= "0" -UBOOT_SUFFIX_SDCARD ?= "${UBOOT_SUFFIX}" - -# Linux bootstream -IMAGE_DEPENDS_linux.sb = "virtual/kernel:do_deploy" - -# Boot partition volume id -BOOTDD_VOLUME_ID ?= "Boot ${MACHINE}" -# Boot partition size [in KiB] -BOOT_SPACE ?= "8192" -# Set alignment to 4MB [in KiB] -IMAGE_ROOTFS_ALIGNMENT = "4096" -\end{verbatim} -\end{frame} diff --git a/distribution/yocto-advanced/yocto-wega-layer.tex b/distribution/yocto-advanced/yocto-wega-layer.tex new file mode 100644 index 0000000..3cf83d4 --- /dev/null +++ b/distribution/yocto-advanced/yocto-wega-layer.tex @@ -0,0 +1,107 @@ +\begin{frame}[fragile] +\frametitle{create an own layer for your BSP} +this layer typical includes + \begin{itemize} + \item machine configuration + \item kernel + \item bootloader + \item wic configuration + \item other hw specific recipes, or append files + \end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{yocto-bsp create} + the yocto-bsp command can be used to get a template: +\begin{verbatim} +poky % yocto-bsp create wega arm +poky % cd meta-wega +\end{verbatim} + The following files need to be available inside the layer: +\begin{verbatim} +recipes-kernel/linux-phytec/linux-phytec_4.4.52.bb +recipes-kernel/linux-phytec/files/wega/defconfig +recipes-bsp/barebox/barebox_2017.03.bb +recipes-bsp/barebox/files/wega/defconfig-ipl +recipes-bsp/barebox/files/wega/defconfig +scripts/lib/wic/canned-wks/am335x-sdimage.wks +conf/machine/wega.conf +conf/layer.conf +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{create an own layer for your sw distro} +this layer typical includes + \begin{itemize} + \item distro configuration + \item own applications + \item append files to customize standard sw from other layers + \item own classes + \end{itemize} + e.g. to create meta-foo use: +\begin{verbatim} +poky % yocto-layer create foo +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{generate a new build environment} +\begin{verbatim} +poky % . oe-init-build-env build-wega +poky/build-wega % +\end{verbatim} +\end{frame} + +\subsection{configure build environment} +\begin{frame} +\frametitle{overview} +builds are configured using two configuration files +\begin{itemize} + \item /home/devel/poky/build-ti/conf/bblayers.conf + \item /home/devel/poky/build-ti/conf/local.conf +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{bblayers.conf} +additional layers are added with absolute! path to the BBLAYERS variable +\begin{verbatim} +BBLAYERS ?= " \ + /home/devel/poky/meta \ + /home/devel/poky/meta-yocto \ + /home/devel/poky/meta-yocto-bsp \ + " +\end{verbatim} +\begin{verbatim} +% bitbake-layers show-layers +layer path priority +===================================================================== +meta /home/devel/poky/meta 5 +meta-yocto /home/devel/poky/meta-yocto 5 +meta-yocto-bsp /home/devel/poky/meta-yocto-bsp 5 +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{add ti and meta-mini layers} +modify the BBLAYERS variable in bblayers.conf +\begin{verbatim} +BBLAYERS ?= " \ + /home/devel/poky/meta \ + /home/devel/poky/meta-yocto \ + /home/devel/poky/meta-wega \ + /home/devel/poky/meta-foo \ + " +\end{verbatim} +\begin{verbatim} +% bitbake-layers show-layers +layer path priority +===================================================================== +meta /home/devel/poky/meta 5 +meta-yocto /home/devel/poky/meta-yocto 5 +meta-yocto-bsp /home/devel/poky/meta-yocto-bsp 5 +meta-wega /home/devel/poky/meta-wega 6 +meta-foo /home/devel/poky/meta-foo 7 +\end{verbatim} +\end{frame} |
