From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6652197203295076352 X-Received: by 2002:a1c:9dc1:: with SMTP id g184mr563216wme.20.1549876163994; Mon, 11 Feb 2019 01:09:23 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:35c6:: with SMTP id c189ls1584926wma.13.canary-gmail; Mon, 11 Feb 2019 01:09:23 -0800 (PST) X-Google-Smtp-Source: AHgI3IavhMA2frHlLLhn9xHvjqa4GbnwYn71+2aO1/eNLvgePv6T97tjtfIbjHt95nE3ewG3e5Ud X-Received: by 2002:a1c:c3c5:: with SMTP id t188mr286086wmf.15.1549876163576; Mon, 11 Feb 2019 01:09:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549876163; cv=none; d=google.com; s=arc-20160816; b=ZPaKVuPa+sE+chVjkoN6Rn7dWCKmqGB6VXVlpEzP8CGCmi+JHQW3iH0HYMlrb07veR BHdv9efU3dX3vbFvusVjuXe2ZIL+ftw6VJRzZFWmB55NR8CFjuYvhCJ2U2yekVD6R7cE jAGxPTaHQWhRMnTKaPiAC0B1tHMtscsC4TvgpENnlOUYmXIffsYjvV2aZMxhNINDd24T GkJEmKZgkzmU91t55j8LBPwwv0IWHehBrZk9kXjnaE4K15cWh0iy9Mo+bZzOhjNq1IcN QJXAqnGVepEz0cjCQduz5Ohfl6gdU5hj9ajdBjxWbPaGSlfjkT7cqRmDzPp26KRE13ZV 7ACQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=C440K9ICKOOqii2x/obZgxFgrds4orPCEtP9X/cGS/4=; b=KEX5UYi5yAmX3bo5bk0uMA9jaPofrrj6BKgiCixOtb0MtyCkcOml8hMS93Jfg/Lbxj RFTSa4lqreU8O+lc9+pErko6ALMNfSjzR6ffHgWD6wlH6lulHY0WVySqBxFU1hlTqDtE 9XIyutGEhyqXWAeVqWlNe+pcej1gPi+iIMtyAEEkpeHVOiiU7H8sVjH3q33uH4Tuir10 Om9UPYRBpWeh1Dir2wRWzE5oezkQzFyfkwiSmlRGJ6GR4pxmbPvJRaHFv6CfD/6Edrvp z2KIT5U+VEG8KoOUGkYPhpWuxFPVo69c19qZLL49e3waB/K+eUW4/ZB6/6ivIvPeb+0G FaBA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id h18si379244wrv.1.2019.02.11.01.09.23 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Feb 2019 01:09:23 -0800 (PST) Received-SPF: pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of claudius.heine.ext@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=claudius.heine.ext@siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id x1B99M7E009347 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 11 Feb 2019 10:09:22 +0100 Received: from ring.ppmd.siemens.net (linux-ses-ext02.ppmd.siemens.net [139.25.69.181]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id x1B99Mx1017002; Mon, 11 Feb 2019 10:09:22 +0100 From: claudius.heine.ext@siemens.com To: isar-users@googlegroups.com Cc: Claudius Heine Subject: [PATCH v5 5/5] meta-isar: added nand-ubi-demo example to demonstrate UBI use Date: Mon, 11 Feb 2019 10:09:21 +0100 Message-Id: <20190211090921.9294-6-claudius.heine.ext@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190211090921.9294-1-claudius.heine.ext@siemens.com> References: <20190211090921.9294-1-claudius.heine.ext@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: qks086xvyS6Y From: Claudius Heine Signed-off-by: Claudius Heine --- meta-isar/classes/ubi-ubifs-img.bbclass | 10 ++++ meta-isar/conf/local.conf.sample | 1 + meta-isar/conf/machine/nand-ubi-demo.conf | 13 +++++ .../multiconfig/nand-ubi-demo-buster.conf | 13 +++++ .../images/files/fitimage.its.tmpl | 58 +++++++++++++++++++ .../images/files/ubinize.cfg.tmpl | 17 ++++++ .../recipes-core/images/isar-image-ubi.bb | 26 +++++++++ meta/classes/image.bbclass | 14 ++++- scripts/ci_build.sh | 1 + 9 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 meta-isar/classes/ubi-ubifs-img.bbclass create mode 100644 meta-isar/conf/machine/nand-ubi-demo.conf create mode 100644 meta-isar/conf/multiconfig/nand-ubi-demo-buster.conf create mode 100644 meta-isar/recipes-core/images/files/fitimage.its.tmpl create mode 100644 meta-isar/recipes-core/images/files/ubinize.cfg.tmpl create mode 100644 meta-isar/recipes-core/images/isar-image-ubi.bb diff --git a/meta-isar/classes/ubi-ubifs-img.bbclass b/meta-isar/classes/ubi-ubifs-img.bbclass new file mode 100644 index 0000000..095719a --- /dev/null +++ b/meta-isar/classes/ubi-ubifs-img.bbclass @@ -0,0 +1,10 @@ +# UBI with UBIFS image recipe +# +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2019 +# +# SPDX-License-Identifier: MIT + +inherit ubi-img ubifs-img fit-img +addtask do_ubi_image after do_ubifs_image +addtask do_ubi_image after do_fit_image diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index a671b20..519a15d 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -53,6 +53,7 @@ BBMULTICONFIG = " \ hikey-stretch \ qemuamd64-buster \ qemuamd64-buster-tgz \ + nand-ubi-demo-buster \ rpi-jessie \ " diff --git a/meta-isar/conf/machine/nand-ubi-demo.conf b/meta-isar/conf/machine/nand-ubi-demo.conf new file mode 100644 index 0000000..e207d40 --- /dev/null +++ b/meta-isar/conf/machine/nand-ubi-demo.conf @@ -0,0 +1,13 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2019 +# +# SPDX-License-Identifier: MIT + +MACHINE_SERIAL ?= "ttymxc0" +BAUDRATE_TTY ?= "115200" + +MKUBIFS_ARGS := "-m 0x1000 -e 0x3e000 -c 1500" +UBINIZE_ARGS = "-vv -m 0x1000 -p 0x40000" +IMAGE_TYPE ?= "ubi-ubifs-img" + +DTB_FILE = "imx6q-sabrelite.dtb" diff --git a/meta-isar/conf/multiconfig/nand-ubi-demo-buster.conf b/meta-isar/conf/multiconfig/nand-ubi-demo-buster.conf new file mode 100644 index 0000000..1c88f00 --- /dev/null +++ b/meta-isar/conf/multiconfig/nand-ubi-demo-buster.conf @@ -0,0 +1,13 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2019 +# +# SPDX-License-Identifier: MIT + +MACHINE ?= "nand-ubi-demo" + +DISTRO ?= "debian-buster" +DISTRO_ARCH ?= "armhf" + +KERNEL_NAME ?= "armmp" + +IMAGE_INSTALL += "sshd-regen-keys" diff --git a/meta-isar/recipes-core/images/files/fitimage.its.tmpl b/meta-isar/recipes-core/images/files/fitimage.its.tmpl new file mode 100644 index 0000000..ca50f8f --- /dev/null +++ b/meta-isar/recipes-core/images/files/fitimage.its.tmpl @@ -0,0 +1,58 @@ +/dts-v1/; + +/ { + description = "Configuration to of a fitimage"; + + images { + kernel { + description = "Linux kernel"; + data = /incbin/("${KERNEL_IMG}"); + type = "kernel"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0x8000>; + entry = <0x8000>; + hash-1 { + algo = "sha256"; + }; + }; + + fdt { + description = "Device Tree"; + data = /incbin/("${DTB_IMG}"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + + initrd { + description = "Initial ram disk"; + data = /incbin/("${INITRD_IMG}"); + type = "ramdisk"; + arch = "arm"; + os = "linux"; + compression = "none"; + hash-1 { + algo = "sha256"; + }; + }; + }; + + configurations { + default = "config-1"; + + config-1 { + description = "System boot configuration"; + fdt = "fdt"; + kernel = "kernel"; + ramdisk = "initrd"; + hash { + algo = "sha256"; + }; + }; + }; +}; diff --git a/meta-isar/recipes-core/images/files/ubinize.cfg.tmpl b/meta-isar/recipes-core/images/files/ubinize.cfg.tmpl new file mode 100644 index 0000000..005c1ae --- /dev/null +++ b/meta-isar/recipes-core/images/files/ubinize.cfg.tmpl @@ -0,0 +1,17 @@ +[fitimage] +mode=ubi +image=${FIT_IMG} +vol_id=1 +vol_type=static +vol_name=fitimage +vol_size=64MiB +vol_alignment=1 + +[rootfs] +mode=ubi +image=${UBIFS_IMG} +vol_id=2 +vol_type=dynamic +vol_name=rootfs +vol_size=300MiB +vol_alignment=1 diff --git a/meta-isar/recipes-core/images/isar-image-ubi.bb b/meta-isar/recipes-core/images/isar-image-ubi.bb new file mode 100644 index 0000000..4b7e109 --- /dev/null +++ b/meta-isar/recipes-core/images/isar-image-ubi.bb @@ -0,0 +1,26 @@ +# UBI image recipe +# +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2019 +# +# SPDX-License-Identifier: MIT + +DESCRIPTION = "UBI Isar image" + +LICENSE = "gpl-2.0" +LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe" + +inherit isar-image + +SRC_URI += "file://ubinize.cfg.tmpl \ + file://fitimage.its.tmpl" + +TEMPLATE_VARS = "KERNEL_IMG INITRD_IMG DTB_IMG UBIFS_IMG FIT_IMG" +TEMPLATE_FILES = "ubinize.cfg.tmpl fitimage.its.tmpl" + +KERNEL_IMG = "${PP_DEPLOY}/${KERNEL_IMAGE}" +INITRD_IMG = "${PP_DEPLOY}/${INITRD_IMAGE}" +DTB_IMG = "${PP_DEPLOY}/${DTB_FILE}" + +UBIFS_IMG = "${PP_DEPLOY}/${UBIFS_IMAGE_FILE}" +FIT_IMG = "${PP_DEPLOY}/${FIT_IMAGE_FILE}" diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index bec62cd..338a6a1 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -102,7 +102,7 @@ do_mark_rootfs() { "${IMAGE_ROOTFS}" } -addtask mark_rootfs before do_copy_boot_files after do_rootfs +addtask mark_rootfs before do_copy_boot_files do_transform_template after do_rootfs do_copy_boot_files() { KERNEL_IMAGE=${@get_image_name(d, 'vmlinuz')[1]} @@ -114,6 +114,18 @@ do_copy_boot_files() { if [ -n "${INITRD_IMAGE}" ]; then sudo cp -f ${IMAGE_ROOTFS}/boot/${@get_image_name(d, 'initrd.img')[0]} ${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE} fi + + # Check DTB_FILE via inline python to handle unset case: + if [ -n "${@d.getVar('DTB_FILE', True) or ""}" ]; then + dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \ + -iwholename '*linux-image-*/${DTB_FILE}' | head -1)" + + if [ -z "$dtb" -o ! -e "$dtb" ]; then + die "${DTB_FILE} not found" + fi + + cp -f "$dtb" "${DEPLOY_DIR_IMAGE}/${DTB_FILE}" + fi } addtask copy_boot_files before do_build after do_rootfs diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 1789183..f79d48b 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -115,6 +115,7 @@ else multiconfig:qemuamd64-stretch:isar-image-base \ multiconfig:qemuamd64-buster:isar-image-base \ multiconfig:qemuamd64-buster-tgz:isar-image-base \ + multiconfig:nand-ubi-demo-buster:isar-image-ubi \ multiconfig:rpi-jessie:isar-image-base # qemu-user-static of <= buster too old to build that #multiconfig:qemuarm64-buster:isar-image-base -- 2.20.1