diff options
| author | Manuel Traut <manut@linutronix.de> | 2015-02-03 16:53:55 +0100 |
|---|---|---|
| committer | Manuel Traut <manut@linutronix.de> | 2015-02-03 16:53:55 +0100 |
| commit | 04a651092d67b7f1bc65628f0ec306eb78921149 (patch) | |
| tree | 126fb79cded66b2f34f8b94a9a8cbb86206e0559 /distribution/yocto-advanced | |
| parent | 009886d10bf61b5eba639cc9d44769aa41735e03 (diff) | |
yocto-advanced: improve slides and examples
convert everything to beaglebone-black and use the same names and path
in the example and the slides
Signed-off-by: Manuel Traut <manut@linutronix.de>
Diffstat (limited to 'distribution/yocto-advanced')
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/classes/fsl-dynamic-packagearch.bbclass | 47 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/classes/image_sdcard.bbclass | 73 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/classes/image_types_fsl.bbclass | 344 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/conf/distro/mini.conf | 4 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/conf/machine/beaglebone-black.conf | 9 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/maxi-mini-image.bb | 3 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/tiny-image.bb | 3 | ||||
| -rw-r--r-- | distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.18.5.bb (renamed from distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.16.1.bb) | 10 | ||||
| -rw-r--r-- | distribution/yocto-advanced/pres_yocto-advanced.tex | 244 |
9 files changed, 261 insertions, 476 deletions
diff --git a/distribution/yocto-advanced/poky/meta-mini/classes/fsl-dynamic-packagearch.bbclass b/distribution/yocto-advanced/poky/meta-mini/classes/fsl-dynamic-packagearch.bbclass deleted file mode 100644 index 40eae6c..0000000 --- a/distribution/yocto-advanced/poky/meta-mini/classes/fsl-dynamic-packagearch.bbclass +++ /dev/null @@ -1,47 +0,0 @@ -# Automatically set PACKAGE_ARCH for MACHINE_SOCARCH -# -# This allow to easy reuse of binary packages among similar SoCs. The -# usual use for this is to share SoC specific packages among different -# boards. -# -# MACHINE_SOCARCH_FILTER list all packages associated with -# MACHINE_SOCARCH and, when match, will set PACKAGE_ARCH as MACHINE_SOCARCH -# -# MACHINE_ARCH_FILTER list all packages associated with -# MACHINE_ARCH and, when match, will set PACKAGE_ARCH as MACHINE_ARCH -# -# For example, in meta-fsl-arm, this is used to share GPU packages for -# i.MX53 boards (as all them share the AMD GPU) and i.MX6 based boards -# (as all them share Vivante GPU). -# -# To use the class, specify, for example: -# -# MACHINE_SOCARCH_soc = "${TUNE_PKGARCH}-soc" -# -# and the need filters, as: -# -# MACHINE_ARCH_FILTER = "virtual/kernel" -# MACHINE_SOCARCH_FILTER_soc = "virtual/libgles1 ... virtual/libgl" -# -# Copyright 2013 (C) O.S. Systems Software LTDA. - -python __anonymous () { - machine_arch_filter = set((d.getVar("MACHINE_ARCH_FILTER", True) or "").split()) - machine_socarch_filter = set((d.getVar("MACHINE_SOCARCH_FILTER", True) or "").split()) - if machine_socarch_filter or machine_arch_filter: - provides = set((d.getVar("PROVIDES", True) or "").split()) - depends = set((d.getVar("DEPENDS", True) or "").split()) - PN = d.getVar("PN", True) - - package_arch = None - if list(machine_arch_filter & (provides | depends)): - package_arch = d.getVar("MACHINE_ARCH", True) - elif list(machine_socarch_filter & (provides | depends)): - package_arch = d.getVar("MACHINE_SOCARCH", True) - if not package_arch: - bb.parse.SkipPackage("You must set MACHINE_SOCARCH as MACHINE_SOCARCH_FILTER is set for this SoC.") - - if package_arch: - bb.debug(1, "Use '%s' as package archictecture for '%s'" % (package_arch, PN)) - d.setVar("PACKAGE_ARCH", package_arch) -} diff --git a/distribution/yocto-advanced/poky/meta-mini/classes/image_sdcard.bbclass b/distribution/yocto-advanced/poky/meta-mini/classes/image_sdcard.bbclass new file mode 100644 index 0000000..f70c4e5 --- /dev/null +++ b/distribution/yocto-advanced/poky/meta-mini/classes/image_sdcard.bbclass @@ -0,0 +1,73 @@ +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" + +IMAGE_DEPENDS_sdcard = "parted-native:do_populate_sysroot \ + dosfstools-native:do_populate_sysroot \ + mtools-native:do_populate_sysroot \ + virtual/kernel:do_deploy \ + ${@d.getVar('IMAGE_BOOTLOADER', True) and d.getVar('IMAGE_BOOTLOADER', True) + ':do_deploy' or ''}" + +SDCARD = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard" + +SDCARD_GENERATION_COMMAND_ti33x = "generate_ti_sdcard" + +generate_ti_sdcard () { + parted -s ${SDCARD} mklabel msdos + parted -s ${SDCARD} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) + parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) + parted -s ${SDCARD} set 1 boot on + parted ${SDCARD} print + + BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ + | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }') + mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS + + # copy files to /boot + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/MLO-${MACHINE} ::/MLO + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.img ::/u-boot.img + mmd -i ${WORKDIR}/boot.img ::/boot + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/boot/${KERNEL_IMAGETYPE} + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-am335x-boneblack.dtb ::/boot/am335x-boneblack.dtb + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/uEnv.txt ::/uEnv.txt + + # Burn Partition + dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync + dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${BOOT_SPACE_ALIGNED} \* 1024 + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync +} + +IMAGE_CMD_sdcard () { + if [ -z "${SDCARD_ROOTFS}" ]; then + bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." + exit 1 + fi + + # Align boot partition and calculate total SD card image size + BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) + BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) + SDCARD_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT}) + + # Initialize a sparse file + dd if=/dev/zero of=${SDCARD} bs=1 count=0 seek=$(expr 1024 \* ${SDCARD_SIZE}) + + ${SDCARD_GENERATION_COMMAND} +} + +# The sdcard requires the rootfs filesystem to be built before using +# it so we must make this dependency explicit. +IMAGE_TYPEDEP_sdcard = "${@d.getVar('SDCARD_ROOTFS', 1).split('.')[-1]}" diff --git a/distribution/yocto-advanced/poky/meta-mini/classes/image_types_fsl.bbclass b/distribution/yocto-advanced/poky/meta-mini/classes/image_types_fsl.bbclass deleted file mode 100644 index deb6573..0000000 --- a/distribution/yocto-advanced/poky/meta-mini/classes/image_types_fsl.bbclass +++ /dev/null @@ -1,344 +0,0 @@ -inherit image_types - -IMAGE_BOOTLOADER ?= "u-boot" - -# Handle u-boot suffixes -UBOOT_SUFFIX ?= "bin" -UBOOT_PADDING ?= "0" -UBOOT_SUFFIX_SDCARD ?= "${UBOOT_SUFFIX}" - -# -# Handles i.MX mxs bootstream generation -# -MXSBOOT_NAND_ARGS ?= "" - -# IMX Bootlets Linux bootstream -IMAGE_DEPENDS_linux.sb = "elftosb-native:do_populate_sysroot \ - imx-bootlets:do_deploy \ - virtual/kernel:do_deploy" -IMAGE_LINK_NAME_linux.sb = "" -IMAGE_CMD_linux.sb () { - kernel_bin="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin`" - kernel_dtb="`readlink ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.dtb || true`" - linux_bd_file=imx-bootlets-linux.bd-${MACHINE} - if [ `basename $kernel_bin .bin` = `basename $kernel_dtb .dtb` ]; then - # When using device tree we build a zImage with the dtb - # appended on the end of the image - linux_bd_file=imx-bootlets-linux.bd-dtb-${MACHINE} - cat $kernel_bin $kernel_dtb \ - > $kernel_bin-dtb - rm -f ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin-dtb - ln -s $kernel_bin-dtb ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin-dtb - fi - - # Ensure the file is generated - rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.linux.sb - (cd ${DEPLOY_DIR_IMAGE}; elftosb -z -c $linux_bd_file -o ${IMAGE_NAME}.linux.sb) - - # Remove the appended file as it is only used here - rm -f ${DEPLOY_DIR_IMAGE}/$kernel_bin-dtb -} - -# IMX Bootlets barebox bootstream -IMAGE_DEPENDS_barebox.mxsboot-sdcard = "elftosb-native:do_populate_sysroot \ - u-boot-mxsboot-native:do_populate_sysroot \ - imx-bootlets:do_deploy \ - barebox:do_deploy" -IMAGE_CMD_barebox.mxsboot-sdcard () { - barebox_bd_file=imx-bootlets-barebox_ivt.bd-${MACHINE} - - # Ensure the files are generated - (cd ${DEPLOY_DIR_IMAGE}; rm -f ${IMAGE_NAME}.barebox.sb ${IMAGE_NAME}.barebox.mxsboot-sdcard; \ - elftosb -f mx28 -z -c $barebox_bd_file -o ${IMAGE_NAME}.barebox.sb; \ - mxsboot sd ${IMAGE_NAME}.barebox.sb ${IMAGE_NAME}.barebox.mxsboot-sdcard) -} - -# U-Boot mxsboot generation to SD-Card -UBOOT_SUFFIX_SDCARD_mxs ?= "mxsboot-sdcard" -IMAGE_DEPENDS_uboot.mxsboot-sdcard = "u-boot-mxsboot-native:do_populate_sysroot \ - u-boot:do_deploy" -IMAGE_CMD_uboot.mxsboot-sdcard = "mxsboot sd ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX} \ - ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-sdcard" - -IMAGE_DEPENDS_uboot.mxsboot-nand = "u-boot-mxsboot-native:do_populate_sysroot \ - u-boot:do_deploy" -IMAGE_CMD_uboot.mxsboot-nand = "mxsboot ${MXSBOOT_NAND_ARGS} nand \ - ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX} \ - ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-nand" - -# Boot partition volume id -BOOTDD_VOLUME_ID ?= "Boot ${MACHINE}" - -# Boot partition size [in KiB] -BOOT_SPACE ?= "8192" - -# Barebox environment size [in KiB] -BAREBOX_ENV_SPACE ?= "512" - -# Set alignment to 4MB [in KiB] -IMAGE_ROOTFS_ALIGNMENT = "4096" - -IMAGE_DEPENDS_sdcard = "parted-native:do_populate_sysroot \ - dosfstools-native:do_populate_sysroot \ - mtools-native:do_populate_sysroot \ - virtual/kernel:do_deploy \ - ${@d.getVar('IMAGE_BOOTLOADER', True) and d.getVar('IMAGE_BOOTLOADER', True) + ':do_deploy' or ''}" - -SDCARD = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard" - -SDCARD_GENERATION_COMMAND_mxs = "generate_mxs_sdcard" -SDCARD_GENERATION_COMMAND_mx25 = "generate_imx_sdcard" -SDCARD_GENERATION_COMMAND_mx5 = "generate_imx_sdcard" -SDCARD_GENERATION_COMMAND_mx6 = "generate_imx_sdcard" -SDCARD_GENERATION_COMMAND_vf60 = "generate_imx_sdcard" -SDCARD_GENERATION_COMMAND_ti33x = "generate_ti_sdcard" - -generate_ti_sdcard () { - parted -s ${SDCARD} mklabel msdos - parted -s ${SDCARD} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) - parted -s ${SDCARD} set 1 boot on - parted ${SDCARD} print - - BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ - | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }') - mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS - - # copy files to /boot - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/MLO-${MACHINE} ::/MLO - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.img ::/u-boot.img - mmd -i ${WORKDIR}/boot.img ::/boot - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/boot/${KERNEL_IMAGETYPE} - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-am335x-boneblack.dtb ::/boot/am335x-boneblack.dtb - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/uEnv.txt ::/uEnv.txt - - # Burn Partition - dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync - dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${BOOT_SPACE_ALIGNED} \* 1024 + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync -} - -# -# Create an image that can by written onto a SD card using dd for use -# with i.MX SoC family -# -# External variables needed: -# ${SDCARD_ROOTFS} - the rootfs image to incorporate -# ${IMAGE_BOOTLOADER} - bootloader to use {u-boot, barebox} -# -# The disk layout used is: -# -# 0 -> IMAGE_ROOTFS_ALIGNMENT - reserved to bootloader (not partitioned) -# IMAGE_ROOTFS_ALIGNMENT -> BOOT_SPACE - kernel and other data -# BOOT_SPACE -> SDIMG_SIZE - rootfs -# -# Default Free space = 1.3x -# Use IMAGE_OVERHEAD_FACTOR to add more space -# <---------> -# 4MiB 8MiB SDIMG_ROOTFS 4MiB -# <-----------------------> <----------> <----------------------> <------------------------------> -# ------------------------ ------------ ------------------------ ------------------------------- -# | IMAGE_ROOTFS_ALIGNMENT | BOOT_SPACE | ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT | -# ------------------------ ------------ ------------------------ ------------------------------- -# ^ ^ ^ ^ ^ -# | | | | | -# 0 4096 4MiB + 8MiB 4MiB + 8Mib + SDIMG_ROOTFS 4MiB + 8MiB + SDIMG_ROOTFS + 4MiB -generate_imx_sdcard () { - # Create partition table - parted -s ${SDCARD} mklabel msdos - parted -s ${SDCARD} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) - parted ${SDCARD} print - - # Burn bootloader - case "${IMAGE_BOOTLOADER}" in - imx-bootlets) - bberror "The imx-bootlets is not supported for i.MX based machines" - exit 1 - ;; - u-boot) - if [ -n "${SPL_BINARY}" ]; then - dd if=${DEPLOY_DIR_IMAGE}/${SPL_BINARY} of=${SDCARD} conv=notrunc seek=2 bs=512 - dd if=${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX_SDCARD} of=${SDCARD} conv=notrunc seek=42 bs=1K - else - dd if=${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX_SDCARD} of=${SDCARD} conv=notrunc seek=2 skip=${UBOOT_PADDING} bs=512 - fi - ;; - barebox) - dd if=${DEPLOY_DIR_IMAGE}/barebox-${MACHINE}.bin of=${SDCARD} conv=notrunc seek=1 skip=1 bs=512 - dd if=${DEPLOY_DIR_IMAGE}/bareboxenv-${MACHINE}.bin of=${SDCARD} conv=notrunc seek=1 bs=512k - ;; - "") - ;; - *) - bberror "Unkown IMAGE_BOOTLOADER value" - exit 1 - ;; - esac - - # Create boot partition image - BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ - | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }') - mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE} - - # Copy boot scripts - for item in ${BOOT_SCRIPTS}; do - src=`echo $item | awk -F':' '{ print $1 }'` - dst=`echo $item | awk -F':' '{ print $2 }'` - - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$src ::/$dst - done - - # Copy device tree file - if test -n "${KERNEL_DEVICETREE}"; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` - if [ -e "${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then - kernel_bin="`readlink ${KERNEL_IMAGETYPE}-${MACHINE}.bin`" - kernel_bin_for_dtb="`readlink ${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`" - if [ $kernel_bin = $kernel_bin_for_dtb ]; then - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb - fi - fi - done - fi - - # Burn Partition - dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync - dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${BOOT_SPACE_ALIGNED} \* 1024 + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync -} - -# -# Create an image that can by written onto a SD card using dd for use -# with i.MXS SoC family -# -# External variables needed: -# ${SDCARD_ROOTFS} - the rootfs image to incorporate -# ${IMAGE_BOOTLOADER} - bootloader to use {imx-bootlets, u-boot} -# -generate_mxs_sdcard () { - # Create partition table - parted -s ${SDCARD} mklabel msdos - - case "${IMAGE_BOOTLOADER}" in - imx-bootlets) - # The disk layout used is: - # - # 0 -> 1024 - Unused (not partitioned) - # 1024 -> BOOT_SPACE - kernel and other data (bootstream) - # BOOT_SPACE -> SDIMG_SIZE - rootfs - # - # Default Free space = 1.3x - # Use IMAGE_OVERHEAD_FACTOR to add more space - # <---------> - # 1024 8MiB SDIMG_ROOTFS 4MiB - # <-------> <----------> <----------------------> <------------------------------> - # --------------------- ------------------------ ------------------------------- - # | Unused | BOOT_SPACE | ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT | - # --------------------- ------------------------ ------------------------------- - # ^ ^ ^ ^ ^ - # | | | | | - # 0 1024 1024 + 8MiB 1024 + 8Mib + SDIMG_ROOTFS 1024 + 8MiB + SDIMG_ROOTFS + 4MiB - parted -s ${SDCARD} unit KiB mkpart primary 1024 $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) - - # Empty 4 bytes from boot partition - dd if=/dev/zero of=${SDCARD} conv=notrunc seek=2048 count=4 - - # Write the bootstream in (2048 + 4) bytes - dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.linux.sb of=${SDCARD} conv=notrunc seek=1 seek=2052 - ;; - u-boot) - # The disk layout used is: - # - # 1M - 2M - reserved to bootloader and other data - # 2M - BOOT_SPACE - kernel - # BOOT_SPACE - SDCARD_SIZE - rootfs - # - # The disk layout used is: - # - # 1M -> 2M - reserved to bootloader and other data - # 2M -> BOOT_SPACE - kernel and other data - # BOOT_SPACE -> SDIMG_SIZE - rootfs - # - # Default Free space = 1.3x - # Use IMAGE_OVERHEAD_FACTOR to add more space - # <---------> - # 4MiB 8MiB SDIMG_ROOTFS 4MiB - # <-----------------------> <-------------> <----------------------> <------------------------------> - # ---------------------------------------- ------------------------ ------------------------------- - # | | | |ROOTFS_SIZE | IMAGE_ROOTFS_ALIGNMENT | - # ---------------------------------------- ------------------------ ------------------------------- - # ^ ^ ^ ^ ^ ^ ^ - # | | | | | | | - # 0 1M 2M 4M 4MiB + BOOTSPACE 4MiB + BOOTSPACE + SDIMG_ROOTFS 4MiB + BOOTSPACE + SDIMG_ROOTFS + 4MiB - # - parted -s ${SDCARD} unit KiB mkpart primary 1024 2048 - parted -s ${SDCARD} unit KiB mkpart primary 2048 $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) - - dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot.mxsboot-sdcard of=${SDCARD} conv=notrunc seek=1 skip=${UBOOT_PADDING} bs=$(expr 1024 \* 1024) - BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ - | awk '/ 2 / { print substr($4, 1, length($4 -1)) / 1024 }') - - mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/${KERNEL_IMAGETYPE} - if test -n "${KERNEL_DEVICETREE}"; then - for DTS_FILE in ${KERNEL_DEVICETREE}; do - DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'` - if [ -e "${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then - kernel_bin="`readlink ${KERNEL_IMAGETYPE}-${MACHINE}.bin`" - kernel_bin_for_dtb="`readlink ${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`" - if [ $kernel_bin = $kernel_bin_for_dtb ]; then - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb - fi - fi - done - fi - - dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=2 bs=$(expr 1024 \* 1024) - ;; - barebox) - # BAREBOX_ENV_SPACE is taken on BOOT_SPACE_ALIGNED but it doesn't really matter as long as the rootfs is aligned - parted -s ${SDCARD} unit KiB mkpart primary 1024 $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} - ${BAREBOX_ENV_SPACE}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} - ${BAREBOX_ENV_SPACE}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) - parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) - - dd if=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.barebox.mxsboot-sdcard of=${SDCARD} conv=notrunc seek=1 bs=$(expr 1024 \* 1024) - dd if=${DEPLOY_DIR_IMAGE}/bareboxenv-${MACHINE}.bin of=${SDCARD} conv=notrunc seek=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} - ${BAREBOX_ENV_SPACE}) bs=1024 - ;; - *) - bberror "Unkown IMAGE_BOOTLOADER value" - exit 1 - ;; - esac - - # Change partition type for mxs processor family - bbnote "Setting partition type to 0x53 as required for mxs' SoC family." - echo -n S | dd of=${SDCARD} bs=1 count=1 seek=450 conv=notrunc - - parted ${SDCARD} print - - dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${BOOT_SPACE_ALIGNED} \* 1024 + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync -} - -IMAGE_CMD_sdcard () { - if [ -z "${SDCARD_ROOTFS}" ]; then - bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." - exit 1 - fi - - # Align boot partition and calculate total SD card image size - BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) - BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) - SDCARD_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT}) - - # Initialize a sparse file - dd if=/dev/zero of=${SDCARD} bs=1 count=0 seek=$(expr 1024 \* ${SDCARD_SIZE}) - - ${SDCARD_GENERATION_COMMAND} -} - -# The sdcard requires the rootfs filesystem to be built before using -# it so we must make this dependency explicit. -IMAGE_TYPEDEP_sdcard = "${@d.getVar('SDCARD_ROOTFS', 1).split('.')[-1]}" diff --git a/distribution/yocto-advanced/poky/meta-mini/conf/distro/mini.conf b/distribution/yocto-advanced/poky/meta-mini/conf/distro/mini.conf index cc5b717..bc1a20a 100644 --- a/distribution/yocto-advanced/poky/meta-mini/conf/distro/mini.conf +++ b/distribution/yocto-advanced/poky/meta-mini/conf/distro/mini.conf @@ -115,8 +115,10 @@ PNBLACKLIST[core-image-sato] = "not buildable with mini" PNBLACKLIST[core-image-sato-dev] = "not buildable with mini" PNBLACKLIST[core-image-sato-sdk] = "not buildable with mini" PNBLACKLIST[core-image-x11] = "not buildable with mini" -PNBLACKLIST[qt4e-demo-image] = "not buildable with mini" +# PNBLACKLIST[qt4e-demo-image] = "not buildable with mini" PNBLACKLIST[core-image-weston] = "not buildable with mini" # Disable python usage in opkg-utils since it won't build with tiny config PACKAGECONFIG_pn-opkg-utils = "" + +PREFERRED_PROVIDER_virtual/kernel = "linux-vanilla" diff --git a/distribution/yocto-advanced/poky/meta-mini/conf/machine/beaglebone-black.conf b/distribution/yocto-advanced/poky/meta-mini/conf/machine/beaglebone-black.conf index 9fb2b8a..153a1bb 100644 --- a/distribution/yocto-advanced/poky/meta-mini/conf/machine/beaglebone-black.conf +++ b/distribution/yocto-advanced/poky/meta-mini/conf/machine/beaglebone-black.conf @@ -4,18 +4,19 @@ require conf/machine/include/ti33x.inc -IMAGE_FSTYPES += "sdcard ext3 tar.gz" +IMAGE_FSTYPES += "ext3 tar.gz" EXTRA_IMAGEDEPENDS += "u-boot" SERIAL_CONSOLE = "115200 ttyO0" PREFERRED_PROVIDER_virtual/kernel = "linux-vanilla" -IMAGE_CLASSES += "image_types_fsl" -SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3" - SPL_BINARY = "MLO" UBOOT_SUFFIX = "img" UBOOT_MACHINE = "am335x_boneblack_config" UBOOT_ENTRYPOINT = "0x80008000" UBOOT_LOADADDRESS = "0x80008000" + +IMAGE_CLASSES += "image_sdcard" +SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3" +IMAGE_FSTYPES += "sdcard" diff --git a/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/maxi-mini-image.bb b/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/maxi-mini-image.bb deleted file mode 100644 index bae7f2a..0000000 --- a/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/maxi-mini-image.bb +++ /dev/null @@ -1,3 +0,0 @@ -require /home/local/src/poky/meta-mini/recipes-bsp/mini-image/mini-image.bb -IMAGE_INSTALL = "eglibc hello hellocm autohello" -DESCRIPTION = "" diff --git a/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/tiny-image.bb b/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/tiny-image.bb new file mode 100644 index 0000000..ad787d5 --- /dev/null +++ b/distribution/yocto-advanced/poky/meta-mini/recipes-bsp/mini-image/tiny-image.bb @@ -0,0 +1,3 @@ +require recipes-bsp/mini-image/mini-image.bb +IMAGE_INSTALL = "eglibc hello hellocm autohello" +DESCRIPTION = "" diff --git a/distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.16.1.bb b/distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.18.5.bb index f155da4..3f95bfc 100644 --- a/distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.16.1.bb +++ b/distribution/yocto-advanced/poky/meta-mini/recipes-kernel/linux-vanilla/linux-vanilla_3.18.5.bb @@ -16,12 +16,12 @@ KERNEL_DEVICETREE_beaglebone-black = "arch/arm/boot/dts/am335x-boneblack.dts" S = "${WORKDIR}/linux-${PV}" -SRC_URI = "https://www.kernel.org/pub/linux/kernel/v3.x/linux-${PV}.tar.xz \ - file://defconfig \ +SRC_URI = "\ +https://www.kernel.org/pub/linux/kernel/v3.x/linux-${PV}.tar.xz \ +file://defconfig \ " -SRC_URI[md5sum] = "e7a985a243b7941b6bc6240fcbc797fc" -SRC_URI[sha256sum] = "be37dda8ea090525661d64e5c7fc8580f313b7f9ba8592e32120f1332bc57d71" - +SRC_URI[md5sum] = "b655fcbc4597aa4b0cbabcfc72983259" +SRC_URI[sha256sum] = "e4442436e59c74169e98d38d2e2a434c7b73f8eda0aa8f20e454eaf52270fc90" LINUX_VERSION_EXTENSION = "-linutronix" KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" diff --git a/distribution/yocto-advanced/pres_yocto-advanced.tex b/distribution/yocto-advanced/pres_yocto-advanced.tex index 881d21f..ee69d0b 100644 --- a/distribution/yocto-advanced/pres_yocto-advanced.tex +++ b/distribution/yocto-advanced/pres_yocto-advanced.tex @@ -7,7 +7,7 @@ \frametitle{Agenda} \begin{itemize} \item Using BSP layers (beaglebone) -\item Build a predefined image (sabrelite) +\item Build a predefined image (beaglebone) \item Creating a layer \item Define a distribution \item Create an image @@ -163,7 +163,6 @@ BBLAYERS ?= " \ /home/devel/poky/meta-yocto \ /home/devel/poky/meta-yocto-bsp \ /home/devel/poky/meta-ti \ - /home/devel/poky/meta-mini \ " \end{verbatim} \pause @@ -175,7 +174,6 @@ 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-ti /home/devel/poky/meta-ti 5 -meta-mini /home/devel/poky/meta-mini 5 \end{verbatim} \end{frame} @@ -225,9 +223,9 @@ to get a list of currently available machines configs: \begin{verbatim} poky/build-ti % grep -r '@NAME' ../meta*/conf/machine \end{verbatim} -beaglebone-black.conf - seems to be the one for our bord, so set +beaglebone.conf - seems to be the one for our bord, so set \begin{verbatim} -MACHINE ??= "beaglebone-black" +MACHINE ??= "beaglebone" \end{verbatim} in conf/local.conf \end{frame} @@ -271,8 +269,6 @@ Currently 4 running tasks (26 of 4459): \begin{frame}[fragile] \frametitle{first errors and warnings} \begin{verbatim} -WARNING: Host distribution "Debian-8.0" has not been validated with this version -of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution. ERROR: OE-core's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker @@ -358,28 +354,17 @@ if the build is completed the image can be transfered to a sdcard: poky/build-ti % sudo fdisk /dev/mmcblk0 # create a bootable primary partition with about 100 MB and Windows vFat format # and a secondary partition with Linux Ext format -poky/build-ti % sudo mkfs.vfat /dev/mmcblk0p1 -poky/build-ti % sudo dd \ -if=tmp/deploy/images/beaglebone-black/qt4e-demo-image-beaglebone-black.ext3 \ - of=/dev/mmcblk0p2 bs=1M -poky/build-ti % sudo mount /dev/mmcblk0p2 /mnt -poky/build-ti % sudo tar xzf tmp/deploy/images/modules-beaglebone-black.tgz -C \ - /mnt -poky/build-ti % sudo umount /mnt -\end{verbatim} -\end{frame} - -\begin{frame}[fragile] -\frametitle{flashing the image} +poky/build-ti % sudo mkfs.vfat -F 16 -n boot /dev/mmcblk0p1 +poky/build-ti % sudo mke2fs -j -L "root" /dev/mmcblk0p2 poky/build-ti % sudo mount /dev/mmcblk0p1 /mnt -poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone-black/MLO \ - /dev/mmcblk0p1 /mnt -poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone-black/u-boot* \ - /dev/mmcblk0p1 /mnt -poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone-black/zImage \ - /dev/mmcblk0p1 /mnt -poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone-black/*.dtb \ - /dev/mmcblk0p1 /mnt +poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone/MLO-beaglebone \ + /mnt/MLO +poky/build-ti % sudo cp -a tmp/deploy/images/beaglebone/u-boot-beaglebone.img \ + /mnt/u-boot.img +poky/build-ti % sudo umount /mnt +poky/build-ti % sudo mount /dev/mmcblk0p2 /mnt +poky/build-ti % sudo tar xjf \ + tmp/deploy/images/qt4e-demo-image-beaglebone.tar.bz2 -C /mnt poky/build-ti % sudo umount /mnt \end{verbatim} \end{frame} @@ -409,6 +394,22 @@ poky/meta-mini % git commit -sam 'inital version' \end{verbatim} \end{frame} +\begin{frame}[fragile] +\begin{verbatim} +poky/meta-mini % cd ../build-ti +\end{verbatim} +edit 'conf/bblayers.conf': +\begin{verbatim} +BBLAYERS ?= " \ + /home/devel/poky/meta \ + /home/devel/poky/meta-yocto \ + /home/devel/poky/meta-yocto-bsp \ + /home/devel/poky/meta-ti \ + /home/devel/poky/meta-mini \ + " +\end{verbatim} +\end{frame} + \subsection{Define a distribution} \begin{frame} \frametitle{why define a distribution?} @@ -515,14 +516,14 @@ it can be used, to simplify image definitions \end{frame} \begin{frame}[fragile] -\frametitle{linutronix distribution} +\frametitle{minimal distribution} distros are defined in a layer, e.g. -meta-mini/conf/distro/linutronix.conf: +meta-mini/conf/distro/mini.conf: \begin{verbatim} -DISTRO = "linutronix" -DISTRO_NAME = "linutronix 1.0 (for foo devices)" +DISTRO = "mini" +DISTRO_NAME = "mini 1.0 (for foo devices)" DISTRO_VERSION = "1.0" -DISTRO_CODENAME = "bar" +DISTRO_CODENAME = "mal" SDK_VENDOR = "-linutronix" SDK_VERSION := "${@'${DISTRO_VERSION}'}" MAINTAINER = "Manuel Traut <manut@linutronix.de>" @@ -536,16 +537,16 @@ DISTRO_FEATURES_append = " opengl" \begin{frame}[fragile] \frametitle{add distro to git repo} \begin{verbatim} -poky/meta-mini % git add conf/distro/linutronix.conf -poky/meta-mini % git commit -sam 'add linutronix distro' +poky/meta-mini % git add conf/distro/mini.conf +poky/meta-mini % git commit -sam 'add mini distro' \end{verbatim} \end{frame} \begin{frame}[fragile] -\frametitle{use linutronix distro} +\frametitle{use mini distro} edit DISTRO var in conf/local.conf \begin{verbatim} -DISTRO ?= "linutronix" +DISTRO ?= "mini" \end{verbatim} \end{frame} @@ -561,32 +562,49 @@ packagegroup-core-ssh-dropbear: packagegroup-core-ssh-openssh: \end{verbatim} create the file -'meta-mini/recipes-bsp/linutronix-image/linutronix-image.bb' +'meta-mini/recipes-bsp/mini-image/mini-image.bb' \begin{verbatim} IMAGE_INSTALL += "openssh" inherit core-image \end{verbatim} to build the image, use: \begin{verbatim} -poky/build-ti % bitbake linutronix-image +poky/build-ti % bitbake mini-image \end{verbatim} \end{frame} +\subsection{Machines} \begin{frame}[fragile] - \frametitle{image features} -t.b.d. use IMAGE\_FEATURES -% http://www.yoctoproject.org/docs/1.6/ref-manual/ref-manual.html#ref-features-image +\frametitle{create a beaglebone-black machine config} +create the file 'meta-mini/conf/machine/beaglebone-black.conf': +\begin{verbatim} +#@TYPE: Machine +#@NAME: BeagleBone Black +#@DESCRIPTION: Machine configuration for the http://beagleboard.org/bone board + +require conf/machine/include/ti33x.inc -% http://www.yoctoproject.org/docs/1.6/dev-manual/dev-manual.html#usingpoky-extend-customimage-imagefeatures +IMAGE_FSTYPES += "ext3 tar.gz" +EXTRA_IMAGEDEPENDS += "u-boot" +SERIAL_CONSOLE = "115200 ttyO0" + +SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3" + +SPL_BINARY = "MLO" +UBOOT_SUFFIX = "img" +UBOOT_MACHINE = "am335x_boneblack_config" +UBOOT_ENTRYPOINT = "0x80008000" +UBOOT_LOADADDRESS = "0x80008000" +\end{verbatim} \end{frame} \subsection{Writing recipes} \begin{frame}[fragile] \frametitle{adding a kernel} -create the file 'meta-mini/recipes-bsp/linux-sabrelite/linux-sabrelite\_3.16.bb': +create the file 'meta-mini/recipes-bsp/linux-vanilla/linux-vanilla\_3.18.5bb': \begin{verbatim} SECTION = "kernel" -DESCRIPTION = "Linux 3.16 for sabrelite" +DESCRIPTION = "Linux vanilla kernel" LICENSE = "GPLv2" KERNEL_IMAGETYPE = "uImage" @@ -594,45 +612,46 @@ inherit kernel require recipes-kernel/linux/linux-dtb.inc require recipes-kernel/linux/setup-defconfig.inc -COMPATILBE_MACHINE = "beaglebone-black" -KERNEL_DEVICETREE_beaglebone-black = "arch/arm/boot/dts/imx6q-sabrelite.dts" +COMPATILBE_MACHINE_beaglebone-black = "beaglebone-black" +KERNEL_DEVICETREE_beaglebone-black = "arch/arm/boot/dts/am335x-boneblack.dts" + +S = "${WORKDIR}/linux-${PV}" -S = "${WORKDIR}/git -BRANCH = "master" -SRCREV = "19583ca584d6f574384e17fe7613dfaeadcdc4a6" -PV = "3.16" -# cause a rebuild on new kernel version -MACHINE_KERNEL_PR_append = "d+gitr${SRCPV}" SRC_URI = " \ -git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux;protocol=git;branch=${BRANCH} \ +https://www.kernel.org/pub/linux/kernel/v3.x/linux-${PV}.tar.xz \ file://defconfig \ -" + +SRC_URI[md5sum] = "e7a985a243b7941b6bc6240fcbc797fc" +SRC_URI[sha256sum] = "be37dda8ea090525661d64e5c7fc8580f313b7f9ba8592e32120f1332bc57d71" + KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}" -# to modify cmdline, use APPEND += "" + +do_configure_prepend () { + cp '${WORKDIR}/defconfig' '${S}/.config' \end{verbatim} \end{frame} \begin{frame}[fragile] \frametitle{adding a defconfig} copy your .config file to -'meta-mini/recipes-bsp/linux-sabrelite/files/beaglebone-black/defconfig' +'meta-mini/recipes-bsp/linux-vanilla/files/beaglebone-black/defconfig' \end{frame} \begin{frame}[fragile] \frametitle{using a specific kernel} add \begin{verbatim} -PREFERRED_PROVIDER_virtual/kernel = "linux-sabrelite" +PREFERRED_PROVIDER_virtual/kernel = "linux-vanilla" \end{verbatim} -to meta-mini/conf/distro/linutronix.conf +to meta-mini/machine/beaglebone-black.conf \end{frame} \begin{frame}[fragile] \frametitle{Providers} \begin{verbatim} ---8<- -my-kernel\_3.16.bb -- +--8<- meta/classos/kernel.bbclass -- PROVIDES += "virtual/kernel" ---8<------------------------ +--8<-------------------------------- \end{verbatim} PREFERRED\_PROVIDER\_virtual/kernel = "linux-yocto" @@ -642,7 +661,7 @@ PREFERRED\_PROVIDER\_virtual/kernel = "linux-yocto" \vspace{2em} also a preferred version can be set: -PREFERRED\_VERSION\_virtual/kernel = "3.16" +PREFERRED\_VERSION\_virtual/kernel = "3.18.5" \end{frame} \begin{frame} @@ -656,6 +675,97 @@ PREFERRED\_VERSION\_virtual/kernel = "3.16" \end{itemize} \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" + +IMAGE_DEPENDS_sdcard = "parted-native:do_populate_sysroot \ + dosfstools-native:do_populate_sysroot \ + mtools-native:do_populate_sysroot \ + virtual/kernel:do_deploy \ + ${@d.getVar('IMAGE_BOOTLOADER', True) and d.getVar('IMAGE_BOOTLOADER', True) + ':do_deploy' or ''}" + +SDCARD = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sdcard" + +SDCARD_GENERATION_COMMAND_ti33x = "generate_ti_sdcard" + +generate_ti_sdcard () { + parted -s ${SDCARD} mklabel msdos + parted -s ${SDCARD} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) + parted -s ${SDCARD} unit KiB mkpart primary $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED}) $(expr ${IMAGE_ROOTFS_ALIGNMENT} \+ ${BOOT_SPACE_ALIGNED} \+ $ROOTFS_SIZE) + parted -s ${SDCARD} set 1 boot on + parted ${SDCARD} print + + BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDCARD} unit b print \ + | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 1024 }') + mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS + + # copy files to /boot + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/MLO-${MACHINE} ::/MLO + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.img ::/u-boot.img + mmd -i ${WORKDIR}/boot.img ::/boot + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::/boot/${KERNEL_IMAGETYPE} + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-am335x-boneblack.dtb ::/boot/am335x-boneblack.dtb + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/uEnv.txt ::/uEnv.txt + + # Burn Partition + dd if=${WORKDIR}/boot.img of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync + dd if=${SDCARD_ROOTFS} of=${SDCARD} conv=notrunc seek=1 bs=$(expr ${BOOT_SPACE_ALIGNED} \* 1024 + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync +} + +IMAGE_CMD_sdcard () { + if [ -z "${SDCARD_ROOTFS}" ]; then + bberror "SDCARD_ROOTFS is undefined. To use sdcard image from Freescale's BSP it needs to be defined." + exit 1 + fi + + # Align boot partition and calculate total SD card image size + BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) + BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) + SDCARD_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT}) + + # Initialize a sparse file + dd if=/dev/zero of=${SDCARD} bs=1 count=0 seek=$(expr 1024 \* ${SDCARD_SIZE}) + + ${SDCARD_GENERATION_COMMAND} +} + +# The sdcard requires the rootfs filesystem to be built before using +# it so we must make this dependency explicit. +IMAGE_TYPEDEP_sdcard = "${@d.getVar('SDCARD_ROOTFS', 1).split('.')[-1]}" +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{configure machine to use sdcard imagetype} +add the following lines to 'meta-mini/conf/machine/beaglebone-black.conf': +\begin{verbatim} +IMAGE_CLASSES += "image_sdcard" +SDCARD_ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3" +IMAGE_FSTYPES += "sdcard" +\end{verbatim} +\end{frame} + \begin{frame} \frametitle{adding an own application} \begin{itemize} @@ -767,16 +877,6 @@ do_install() { \end{verbatim} \end{frame} -\begin{frame} -\frametitle{use PR Service} -bla -\end{frame} - -\begin{frame} -\frametitle{adding a bootscript} -bla -\end{frame} - \begin{frame}[fragile] \frametitle{user and group configuration} use this in an image recipe: |
