All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy
@ 2021-02-15 11:19 Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 02/14] zephyr-flash-pyocd.bbclass: " Andrei Gherzan
                   ` (12 more replies)
  0 siblings, 13 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyr-flash-dfu.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/classes/zephyr-flash-dfu.bbclass b/classes/zephyr-flash-dfu.bbclass
index 32f589a..b4f3d49 100644
--- a/classes/zephyr-flash-dfu.bbclass
+++ b/classes/zephyr-flash-dfu.bbclass
@@ -59,7 +59,7 @@ python do_flash_usb() {
     bb.utils.unlockfile(lock)
 }
 
-addtask do_flash_usb
+addtask do_flash_usb after do_deploy
 
 do_flash_usb[nostamp] = "1"
 do_flash_usb[vardepsexclude] = "BB_ORIGENV"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 02/14] zephyr-flash-pyocd.bbclass: Add missing do_flash_usb dependency on do_deploy
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 03/14] Cleanup superflous new lines Andrei Gherzan
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyr-flash-pyocd.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-pyocd.bbclass
index 04500af..eca30c9 100644
--- a/classes/zephyr-flash-pyocd.bbclass
+++ b/classes/zephyr-flash-pyocd.bbclass
@@ -10,7 +10,7 @@ python do_flash_usb() {
         session.board.target.reset()
 }
 
-addtask do_flash_usb
+addtask do_flash_usb after do_deploy
 
 do_flash_usb[nostamp] = "1"
 do_flash_usb[vardepsexclude] = "BB_ORIGENV"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 03/14] Cleanup superflous new lines
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 02/14] zephyr-flash-pyocd.bbclass: " Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 04/14] zephyr-kernel-src: Restructure recipe Andrei Gherzan
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyrtest.bbclass          | 2 --
 conf/distro/zephyr.conf             | 1 -
 conf/machine/include/tune-arc.inc   | 1 -
 conf/machine/include/tune-iamcu.inc | 1 -
 conf/machine/include/tune-nios2.inc | 1 -
 5 files changed, 6 deletions(-)

diff --git a/classes/zephyrtest.bbclass b/classes/zephyrtest.bbclass
index 3acc4c3..248fd15 100644
--- a/classes/zephyrtest.bbclass
+++ b/classes/zephyrtest.bbclass
@@ -51,5 +51,3 @@ python testdata_clean() {
 }
 
 addtask do_testdata_write before do_build after do_deploy
-
-
diff --git a/conf/distro/zephyr.conf b/conf/distro/zephyr.conf
index a98da32..6ecd421 100644
--- a/conf/distro/zephyr.conf
+++ b/conf/distro/zephyr.conf
@@ -1,4 +1,3 @@
-
 DISTRO = "zephyr"
 DISTRO_NAME = "Zephyr"
 DISTRO_VERSION = "1.0"
diff --git a/conf/machine/include/tune-arc.inc b/conf/machine/include/tune-arc.inc
index 4bb6f4f..ff841e7 100644
--- a/conf/machine/include/tune-arc.inc
+++ b/conf/machine/include/tune-arc.inc
@@ -18,4 +18,3 @@ AVAILTUNES += "no-sdata"
 TUNEVALID[nodata] = "ARC no-delete-null-pointer-checks"
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-delete-null-pointer-checks', ' -fno-delete-null-pointer-checks', '', d)}"
 AVAILTUNES += "no-delete-null-pointer-checks"
-
diff --git a/conf/machine/include/tune-iamcu.inc b/conf/machine/include/tune-iamcu.inc
index 6935375..20a93a6 100644
--- a/conf/machine/include/tune-iamcu.inc
+++ b/conf/machine/include/tune-iamcu.inc
@@ -9,4 +9,3 @@ TUNE_ARCH = "i586"
 TUNEVALID[iamcu] = "Intel MCU"
 
 PACKAGE_EXTRA_ARCHS_tune-iamcu = "iamcu"
-
diff --git a/conf/machine/include/tune-nios2.inc b/conf/machine/include/tune-nios2.inc
index c74326d..e8662eb 100644
--- a/conf/machine/include/tune-nios2.inc
+++ b/conf/machine/include/tune-nios2.inc
@@ -1,4 +1,3 @@
-
 # Nios2 Architecture Definition
 
 DEFAULTTUNE ?= "nios2"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 04/14] zephyr-kernel-src: Restructure recipe
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 02/14] zephyr-flash-pyocd.bbclass: " Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 03/14] Cleanup superflous new lines Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 05/14] zephyr-kernel-src-2.5.0-rc3.inc: Add support for zephyr kernel version 2.5.0-rc3 Andrei Gherzan
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

* Restructure recipe to use include files as opposed to a bbclass. The
  latter is unnatural when defining versions, sources etc.
* Make the zephyr-kernel-src follow the version as defined by
  PREFERRED_VERSION_zephyr-kernel.
* Make the setup of the zephyr-kernel-src.inc extensible for multiple
  versions.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyr-kernel-src.bbclass             | 37 -------------------
 .../zephyr-kernel/zephyr-kernel-src-2.4.0.inc | 10 +++++
 ...kernel-src_2.4.bb => zephyr-kernel-src.bb} |  9 +----
 .../zephyr-kernel/zephyr-kernel-src.inc       | 20 ++++++++++
 4 files changed, 32 insertions(+), 44 deletions(-)
 delete mode 100644 classes/zephyr-kernel-src.bbclass
 create mode 100644 recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.4.0.inc
 rename recipes-kernel/zephyr-kernel/{zephyr-kernel-src_2.4.bb => zephyr-kernel-src.bb} (80%)
 create mode 100644 recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc

diff --git a/classes/zephyr-kernel-src.bbclass b/classes/zephyr-kernel-src.bbclass
deleted file mode 100644
index c6c8d61..0000000
--- a/classes/zephyr-kernel-src.bbclass
+++ /dev/null
@@ -1,37 +0,0 @@
-#Set relevant variables based on Zephyr kernel version
-
-PREFERRED_VERSION_zephyr-kernel ??= "2.4.0"
-
-SRCREV_FORMAT = "default_cmsis"
-SRCREV_default = "7a3b253ced7333f5c0269387a7f3ed1dee69739d"
-SRCREV_cmsis = "542b2296e6d515b265e25c6b7208e8fea3014f90"
-SRCREV_nordic = "d8a6ea9695ddf792bb18bb6035c13b1daac5d79c"
-SRCREV_stm32 = "f0e11398128ac9abdff713da5d3035e6c96e9b86"
-SRCREV_open-amp = "de1b85a13032a2de1d8b6695ae5f800b613e739d"
-SRCREV_libmetal = "9d4ee2c3cfd5f49861939447990f3b7d7bf9bf94"
-SRCREV_tinycrypt = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0"
-
-SRC_URI = "git://github.com/zephyrproject-rtos/zephyr.git;protocol=https;branch=v2.4-branch;name=default \
-           git://github.com/zephyrproject-rtos/cmsis.git;protocol=https;destsuffix=git/modules/cmsis;name=cmsis \
-           git://github.com/zephyrproject-rtos/hal_nordic.git;protocol=https;destsuffix=git/modules/hal/nordic;name=nordic \
-           git://github.com/zephyrproject-rtos/hal_stm32.git;protocol=https;destsuffix=git/modules/hal/stm32;name=stm32 \
-           git://github.com/zephyrproject-rtos/open-amp.git;protocol=https;destsuffix=git/modules/lib/open-amp;name=open-amp \
-           git://github.com/zephyrproject-rtos/libmetal.git;protocol=https;destsuffix=git/modules/hal/libmetal;name=libmetal \
-           git://github.com/zephyrproject-rtos/tinycrypt.git;protocol=https;destsuffix=git/modules/crypto/tinycrypt;name=tinycrypt \
-           file://0001-cmake-add-yocto-toolchain.patch \
-          "
-
-PV = "2.4.0+git${SRCPV}"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
-
-ZEPHYR_TEST_SRCDIR = "tests/legacy/kernel/"
-
-python () {
-    src_pn = d.getVar('PREFERRED_VERSION_zephyr-kernel', True)
-    if src_pn == '2.4.0':
-        return
-    else:
-        bb.error("Unsupported Zephyr kernel version requested")
-}
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.4.0.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.4.0.inc
new file mode 100644
index 0000000..d1ef80e
--- /dev/null
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.4.0.inc
@@ -0,0 +1,10 @@
+SRCREV_FORMAT = "default_cmsis"
+SRCREV_default = "7a3b253ced7333f5c0269387a7f3ed1dee69739d"
+SRCREV_cmsis = "542b2296e6d515b265e25c6b7208e8fea3014f90"
+SRCREV_nordic = "d8a6ea9695ddf792bb18bb6035c13b1daac5d79c"
+SRCREV_stm32 = "f0e11398128ac9abdff713da5d3035e6c96e9b86"
+SRCREV_open-amp = "de1b85a13032a2de1d8b6695ae5f800b613e739d"
+SRCREV_libmetal = "9d4ee2c3cfd5f49861939447990f3b7d7bf9bf94"
+SRCREV_tinycrypt = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0"
+
+PV = "2.4.0+git${SRCPV}"
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-src_2.4.bb b/recipes-kernel/zephyr-kernel/zephyr-kernel-src.bb
similarity index 80%
rename from recipes-kernel/zephyr-kernel/zephyr-kernel-src_2.4.bb
rename to recipes-kernel/zephyr-kernel/zephyr-kernel-src.bb
index 8e8b5b8..210cfa7 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-src_2.4.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-src.bb
@@ -1,16 +1,12 @@
+include zephyr-kernel-src.inc
 
-inherit zephyr-kernel-src
-inherit cmake
-
-S = "${WORKDIR}/git"
+ZEPHYR_TEST_SRCDIR = "tests/legacy/kernel/"
 
 IMAGE_NO_MANIFEST = "1"
 INHIBIT_DEFAULT_DEPS = "1"
 
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
-
-
 do_install () {
     kerneldir=${D}/usr/src/zephyr
     install -d $kerneldir
@@ -21,4 +17,3 @@ PACKAGES = "${PN}"
 FILES_${PN} = "/usr/src/zephyr"
 
 SYSROOT_DIRS += "/usr/src/zephyr"
-
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc
new file mode 100644
index 0000000..2dcde74
--- /dev/null
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc
@@ -0,0 +1,20 @@
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
+
+# Default to a stable version
+PREFERRED_VERSION_zephyr-kernel ??= "2.4.0"
+include zephyr-kernel-src-${PREFERRED_VERSION_zephyr-kernel}.inc
+
+inherit cmake
+
+SRC_URI = "\
+    git://github.com/zephyrproject-rtos/zephyr.git;protocol=https;branch=master;name=default \
+    git://github.com/zephyrproject-rtos/cmsis.git;protocol=https;destsuffix=git/modules/cmsis;name=cmsis \
+    git://github.com/zephyrproject-rtos/hal_nordic.git;protocol=https;destsuffix=git/modules/hal/nordic;name=nordic \
+    git://github.com/zephyrproject-rtos/hal_stm32.git;protocol=https;destsuffix=git/modules/hal/stm32;name=stm32 \
+    git://github.com/zephyrproject-rtos/open-amp.git;protocol=https;destsuffix=git/modules/lib/open-amp;name=open-amp \
+    git://github.com/zephyrproject-rtos/libmetal.git;protocol=https;destsuffix=git/modules/hal/libmetal;name=libmetal \
+    git://github.com/zephyrproject-rtos/tinycrypt.git;protocol=https;destsuffix=git/modules/crypto/tinycrypt;name=tinycrypt \
+    file://0001-cmake-add-yocto-toolchain.patch \
+    "
+S = "${WORKDIR}/git"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 05/14] zephyr-kernel-src-2.5.0-rc3.inc: Add support for zephyr kernel version 2.5.0-rc3
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (2 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 04/14] zephyr-kernel-src: Restructure recipe Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 06/14] zephyr-kernel-common.inc: Fix configuration CPPFLAGS warning Andrei Gherzan
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

This version can be selected defining
PREFERRED_VERSION_zephyr-kernel ??= "2.5.0-rc3"

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 .../zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc      | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc

diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc
new file mode 100644
index 0000000..4ee9883
--- /dev/null
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc
@@ -0,0 +1,10 @@
+SRCREV_FORMAT = "default_cmsis"
+SRCREV_default = "v2.5.0-rc3"
+SRCREV_cmsis = "c3bd2094f92d574377f7af2aec147ae181aa5f8e"
+SRCREV_nordic = "f3434da6446380fcdd426dbe2866af21d0d549b6"
+SRCREV_stm32 = "cc8731dba4fd9c57d7fe8ea6149828b89c2bd635"
+SRCREV_open-amp = "de1b85a13032a2de1d8b6695ae5f800b613e739d"
+SRCREV_libmetal = "9d4ee2c3cfd5f49861939447990f3b7d7bf9bf94"
+SRCREV_tinycrypt = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0"
+
+PV = "2.5.0-rc3+git${SRCPV}"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 06/14] zephyr-kernel-common.inc: Fix configuration CPPFLAGS warning
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (3 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 05/14] zephyr-kernel-src-2.5.0-rc3.inc: Add support for zephyr kernel version 2.5.0-rc3 Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 07/14] zephyr-kernel-common.inc: Reformat EXTRA_OECMAKE Andrei Gherzan
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Configure warns when CPPFLAGS is provided as environment variable and
expects its value to be passed to cmake. This patch does that to
surpress the warning.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
index 5313030..abc55ba 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
@@ -13,8 +13,7 @@ ZEPHYR_SYSROOT="${STAGING_DIR_TARGET}"
 
 ZEPHYR_MAKE_OUTPUT = "zephyr.elf"
 
-
-EXTRA_OECMAKE = " -DZEPHYR_BASE=${S} -DZEPHYR_GCC_VARIANT=yocto -DBOARD=${BOARD} -DARCH=${ARCH} -DCROSS_COMPILE=${CROSS_COMPILE} -DZEPHYR_SYSROOT=${ZEPHYR_SYSROOT} -DZEPHYR_TOOLCHAIN_VARIANT=yocto"
+EXTRA_OECMAKE = " -DZEPHYR_BASE=${S} -DZEPHYR_GCC_VARIANT=yocto -DBOARD=${BOARD} -DARCH=${ARCH} -DCROSS_COMPILE=${CROSS_COMPILE} -DZEPHYR_SYSROOT=${ZEPHYR_SYSROOT} -DZEPHYR_TOOLCHAIN_VARIANT=yocto -DEXTRA_CPPFLAGS=${CPPFLAGS}"
 
 ZEPHYR_MODULES = ""
 ZEPHYR_MODULES_append_arm = "\;${S}/modules/cmsis"
@@ -26,7 +25,6 @@ EXTRA_OECMAKE_append = " -DZEPHYR_MODULES=${ZEPHYR_MODULES}"
 
 export ZEPHYR_BASE="${S}"
 
-
 DEPENDS += "gperf-native python3-pyelftools-native python3-pyyaml-native python3-pykwalify-native"
 CROSS_COMPILE = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}"
 
@@ -51,3 +49,8 @@ OE_TERMINAL_EXPORTS += "ZEPHYR_SYSROOT"
 OE_TERMINAL_EXPORTS += "ZEPHYR_GCC_VARIANT"
 
 IMAGE_FSTYPES = "elf bin"
+
+do_configure_prepend() {
+    # Zephyr expects CPPFLAGS as cmake argument as and ignores env variables.
+    unset CPPFLAGS
+}
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 07/14] zephyr-kernel-common.inc: Reformat EXTRA_OECMAKE
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (4 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 06/14] zephyr-kernel-common.inc: Fix configuration CPPFLAGS warning Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 08/14] zephyr-kernel.inc: Remove include file Andrei Gherzan
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

This will improve diffs readability in the future.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
index abc55ba..330fe59 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-common.inc
@@ -13,7 +13,16 @@ ZEPHYR_SYSROOT="${STAGING_DIR_TARGET}"
 
 ZEPHYR_MAKE_OUTPUT = "zephyr.elf"
 
-EXTRA_OECMAKE = " -DZEPHYR_BASE=${S} -DZEPHYR_GCC_VARIANT=yocto -DBOARD=${BOARD} -DARCH=${ARCH} -DCROSS_COMPILE=${CROSS_COMPILE} -DZEPHYR_SYSROOT=${ZEPHYR_SYSROOT} -DZEPHYR_TOOLCHAIN_VARIANT=yocto -DEXTRA_CPPFLAGS=${CPPFLAGS}"
+EXTRA_OECMAKE = "\
+    -DZEPHYR_BASE=${S} \
+    -DZEPHYR_GCC_VARIANT=yocto \
+    -DBOARD=${BOARD} \
+    -DARCH=${ARCH} \
+    -DCROSS_COMPILE=${CROSS_COMPILE} \
+    -DZEPHYR_SYSROOT=${ZEPHYR_SYSROOT} \
+    -DZEPHYR_TOOLCHAIN_VARIANT=yocto \
+    -DEXTRA_CPPFLAGS=${CPPFLAGS} \
+    "
 
 ZEPHYR_MODULES = ""
 ZEPHYR_MODULES_append_arm = "\;${S}/modules/cmsis"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 08/14] zephyr-kernel.inc: Remove include file
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (5 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 07/14] zephyr-kernel-common.inc: Reformat EXTRA_OECMAKE Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 09/14] Use an include file for the common parts of the sample recipes Andrei Gherzan
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

This file has little advantage and can be easily replaced by just
directly including the src include file.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 recipes-kernel/zephyr-kernel/zephyr-image.inc  | 2 +-
 recipes-kernel/zephyr-kernel/zephyr-kernel.inc | 4 ----
 2 files changed, 1 insertion(+), 5 deletions(-)
 delete mode 100644 recipes-kernel/zephyr-kernel/zephyr-kernel.inc

diff --git a/recipes-kernel/zephyr-kernel/zephyr-image.inc b/recipes-kernel/zephyr-kernel/zephyr-image.inc
index e8b8871..c77692d 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-image.inc
+++ b/recipes-kernel/zephyr-kernel/zephyr-image.inc
@@ -1,4 +1,4 @@
-require zephyr-kernel.inc
+require zephyr-kernel-src.inc
 require zephyr-kernel-common.inc
 
 inherit testimage
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel.inc
deleted file mode 100644
index 903973d..0000000
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-inherit zephyr-kernel-src
-
-S = "${WORKDIR}/git"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 09/14] Use an include file for the common parts of the sample recipes
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (6 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 08/14] zephyr-kernel.inc: Remove include file Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:19 ` [meta-zephy][PATCH 10/14] zephyr-peripheral-hr: Add recipe for BT HR sample Andrei Gherzan
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 recipes-kernel/zephyr-kernel/zephyr-hci-uart.bb | 16 ++--------------
 .../zephyr-kernel/zephyr-helloworld.bb          | 13 +------------
 .../zephyr-kernel/zephyr-kernel-test.bb         |  4 ----
 .../zephyr-kernel/zephyr-kernel-test.inc        |  2 --
 .../zephyr-kernel/zephyr-peripheral-esp.bb      | 17 +++--------------
 .../zephyr-kernel/zephyr-philosophers.bb        | 13 +------------
 recipes-kernel/zephyr-kernel/zephyr-sample.inc  | 13 +++++++++++++
 7 files changed, 20 insertions(+), 58 deletions(-)
 create mode 100644 recipes-kernel/zephyr-kernel/zephyr-sample.inc

diff --git a/recipes-kernel/zephyr-kernel/zephyr-hci-uart.bb b/recipes-kernel/zephyr-kernel/zephyr-hci-uart.bb
index ec6b13e..c66c7ec 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-hci-uart.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-hci-uart.bb
@@ -1,17 +1,5 @@
-require zephyr-kernel.inc
-require zephyr-kernel-common.inc
-inherit deploy
-
-COMPATIBLE_MACHINE = "(96b-nitrogen)"
+include zephyr-sample.inc
 
 ZEPHYR_SRC_DIR = "${S}/samples/bluetooth/hci_uart"
-ZEPHYR_BASE = "${S}"
-
-OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
 
-do_deploy () {
-    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-}
-
-addtask deploy after do_compile
-do_install[noexec] = "1"
+COMPATIBLE_MACHINE = "(96b-nitrogen)"
diff --git a/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb b/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb
index 84db068..ac5ce62 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb
@@ -1,14 +1,3 @@
-require zephyr-kernel.inc
-require zephyr-kernel-common.inc
-inherit deploy
+include zephyr-sample.inc
 
 ZEPHYR_SRC_DIR = "${S}/samples/hello_world"
-ZEPHYR_BASE = "${S}"
-OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
-
-do_deploy () {
-    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-}
-
-addtask deploy after do_compile
-do_install[noexec] = "1"
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-test.bb b/recipes-kernel/zephyr-kernel/zephyr-kernel-test.bb
index 46d93f0..2918d2d 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-test.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-test.bb
@@ -2,7 +2,3 @@ require zephyr-image.inc
 require zephyr-kernel-test.inc
 
 BBCLASSEXTEND = '${@" ".join(["zephyrtest:" + x for x in d.getVar("ZEPHYRTESTS", True).split()])}'
-
-
-
-
diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-test.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-test.inc
index a1e62af..b6b4766 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-test.inc
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-test.inc
@@ -2,11 +2,9 @@ ZEPHYRTESTS_remove = "fifo fpu_sharing lifo mbox mem_heap mem_pool \
     mem_protect mem_slab msgq mutex pipe profiling sched semaphore \
     stack threads tickless timer workq"
 
-
 # Exclude tests which does not build for various reasons
 ZEPHYRTESTS_remove = "gen_isr_table spinlock smp mp"
 
-
 # test_context will fail because QEMU for ARM does not emulate CortexM3 BASEPRI register
 #ZEPHYRTESTS_remove_arm += ""
 
diff --git a/recipes-kernel/zephyr-kernel/zephyr-peripheral-esp.bb b/recipes-kernel/zephyr-kernel/zephyr-peripheral-esp.bb
index 24f030a..8be90d1 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-peripheral-esp.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-peripheral-esp.bb
@@ -1,16 +1,5 @@
-require zephyr-kernel.inc
-require zephyr-kernel-common.inc
-inherit deploy
+include zephyr-sample.inc
 
-ZEPHYR_SAMPLE_NAME="samples/bluetooth/peripheral_esp"
-ZEPHYR_SRC_DIR = "${S}/${ZEPHYR_SAMPLE_NAME}"
-ZEPHYR_BASE = "${S}"
-OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
-ZEPHYR_MODULES_append = "\;${S}/modules/crypto/tinycrypt"
-
-do_deploy () {
-    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-}
+ZEPHYR_SRC_DIR = "${S}/samples/bluetooth/peripheral_esp"
 
-addtask deploy after do_compile
-do_install[noexec] = "1"
+ZEPHYR_MODULES_append = "\;${S}/modules/crypto/tinycrypt"
diff --git a/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb b/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb
index b8262ca..a2afb57 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb
+++ b/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb
@@ -1,14 +1,3 @@
-require zephyr-kernel.inc
-require zephyr-kernel-common.inc
-inherit deploy
+include zephyr-sample.inc
 
 ZEPHYR_SRC_DIR = "${S}/samples/philosophers"
-ZEPHYR_BASE = "${S}"
-OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
-
-do_deploy () {
-    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
-}
-
-addtask deploy after do_compile
-do_install[noexec] = "1"
diff --git a/recipes-kernel/zephyr-kernel/zephyr-sample.inc b/recipes-kernel/zephyr-kernel/zephyr-sample.inc
new file mode 100644
index 0000000..f7621d1
--- /dev/null
+++ b/recipes-kernel/zephyr-kernel/zephyr-sample.inc
@@ -0,0 +1,13 @@
+require zephyr-kernel-src.inc
+require zephyr-kernel-common.inc
+inherit deploy
+
+ZEPHYR_BASE = "${S}"
+OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}"
+
+do_install[noexec] = "1"
+
+do_deploy () {
+    install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT} ${DEPLOYDIR}/${PN}.elf
+}
+addtask deploy after do_compile
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 10/14] zephyr-peripheral-hr: Add recipe for BT HR sample
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (7 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 09/14] Use an include file for the common parts of the sample recipes Andrei Gherzan
@ 2021-02-15 11:19 ` Andrei Gherzan
  2021-02-15 11:20 ` [meta-zephy][PATCH 11/14] zephyr-flash-pyocd.bbclass: Flash the first probe found with a timeout Andrei Gherzan
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:19 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 recipes-kernel/zephyr-kernel/zephyr-peripheral-hr.bb | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 recipes-kernel/zephyr-kernel/zephyr-peripheral-hr.bb

diff --git a/recipes-kernel/zephyr-kernel/zephyr-peripheral-hr.bb b/recipes-kernel/zephyr-kernel/zephyr-peripheral-hr.bb
new file mode 100644
index 0000000..e6ef7b8
--- /dev/null
+++ b/recipes-kernel/zephyr-kernel/zephyr-peripheral-hr.bb
@@ -0,0 +1,5 @@
+include zephyr-sample.inc
+
+ZEPHYR_SRC_DIR = "${S}/samples/bluetooth/peripheral_hr"
+
+ZEPHYR_MODULES_append = "\;${S}/modules/crypto/tinycrypt"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 11/14] zephyr-flash-pyocd.bbclass: Flash the first probe found with a timeout
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (8 preceding siblings ...)
  2021-02-15 11:19 ` [meta-zephy][PATCH 10/14] zephyr-peripheral-hr: Add recipe for BT HR sample Andrei Gherzan
@ 2021-02-15 11:20 ` Andrei Gherzan
  2021-02-15 11:20 ` [meta-zephy][PATCH 12/14] zephyr-flash-pyocd.bbclass: Handle import error for pyocd modules Andrei Gherzan
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:20 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Currently the code flashes the firmware in a blocking way. If the host
is not configured accordingly (for example in terms of permissions),
this would hang undefinitely. This can easily confuse users and in order
to avoid this, the patch changes to unblocking session creation and
opening call, wrapping the tries in some relevant logging. The timeout
can be defined with `CONNECT_TIMEOUT_SECONDS` which defaults to 30
seconds.

Also, by default, when multiple probes are attached, the session call
will return a selection choice. This would obviously break under bitbake
with an exception:
    Exception: EOFError: EOF when reading a line
Avoid this by selecting the first found probe.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyr-flash-pyocd.bbclass | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-pyocd.bbclass
index eca30c9..df3b631 100644
--- a/classes/zephyr-flash-pyocd.bbclass
+++ b/classes/zephyr-flash-pyocd.bbclass
@@ -1,11 +1,27 @@
+CONNECT_TIMEOUT_SECONDS ?= "30"
+
 python do_flash_usb() {
     from pyocd.core.helpers import ConnectHelper
     from pyocd.flash.file_programmer import FileProgrammer
 
+    timeout = int(d.getVar('CONNECT_TIMEOUT_SECONDS'))
     image = f"{d.getVar('DEPLOY_DIR_IMAGE')}/{d.getVar('PN')}.elf"
     bb.plain(f"Attempting to flash {image} to board {d.getVar('BOARD')}")
 
-    with ConnectHelper.session_with_chosen_probe() as session:
+    # Try to connect to a probe with a timeout
+    now = 0
+    step = 3
+    while True:
+        session = ConnectHelper.session_with_chosen_probe(blocking=False, return_first=True)
+        if session:
+            break
+        if now >= timeout:
+            bb.fatal("Timeout while trying to connect to a probe. Make sure the target device is connected and the udev is configured accordingly. See <https://github.com/mbedmicro/pyOCD/tree/master/udev> for help.")
+        bb.warn("Can't connect to the probe. Retrying in %d seconds..." % step)
+        time.sleep(step)
+        now += step
+
+    with session:
         FileProgrammer(session).program(image)
         session.board.target.reset()
 }
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 12/14] zephyr-flash-pyocd.bbclass: Handle import error for pyocd modules
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (9 preceding siblings ...)
  2021-02-15 11:20 ` [meta-zephy][PATCH 11/14] zephyr-flash-pyocd.bbclass: Flash the first probe found with a timeout Andrei Gherzan
@ 2021-02-15 11:20 ` Andrei Gherzan
  2021-02-15 11:20 ` [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program Andrei Gherzan
  2021-02-15 11:20 ` [meta-zephy][PATCH 14/14] zephyr-kernel-src: Upgrade 2.5.0-rc3 to rc4 Andrei Gherzan
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:20 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 classes/zephyr-flash-pyocd.bbclass | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-pyocd.bbclass
index df3b631..4d24e6a 100644
--- a/classes/zephyr-flash-pyocd.bbclass
+++ b/classes/zephyr-flash-pyocd.bbclass
@@ -1,8 +1,11 @@
 CONNECT_TIMEOUT_SECONDS ?= "30"
 
 python do_flash_usb() {
-    from pyocd.core.helpers import ConnectHelper
-    from pyocd.flash.file_programmer import FileProgrammer
+    try:
+        from pyocd.core.helpers import ConnectHelper
+        from pyocd.flash.file_programmer import FileProgrammer
+    except ImportError:
+        bb.fatal("Flashing with pyocd needs the relevant python package. Make sure your host provides it or consult your distribution packages for how to install this prerequisite.")
 
     timeout = int(d.getVar('CONNECT_TIMEOUT_SECONDS'))
     image = f"{d.getVar('DEPLOY_DIR_IMAGE')}/{d.getVar('PN')}.elf"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (10 preceding siblings ...)
  2021-02-15 11:20 ` [meta-zephy][PATCH 12/14] zephyr-flash-pyocd.bbclass: Handle import error for pyocd modules Andrei Gherzan
@ 2021-02-15 11:20 ` Andrei Gherzan
  2021-02-16 10:14   ` [yocto] " Naveen Saini
  2021-02-15 11:20 ` [meta-zephy][PATCH 14/14] zephyr-kernel-src: Upgrade 2.5.0-rc3 to rc4 Andrei Gherzan
  12 siblings, 1 reply; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:20 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Implement logic to configure what probes to program based on the
PYOCD_FLASH_IDS variable:
1. by default program all attached probes
2. change default behaviour by listing the probe IDs to flash

CONNECT_TIMEOUT_SECONDS was also renamed to maintain consistency with
the PYOCD_FLASH_IDS variable.

One can query the IDs using `pyocd list`.

The value of PYOCD_FLASH_IDS can also be injected into the datastore
using BB_ENV_EXTRAWHITE.

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 README.txt                         |  9 +++++
 classes/zephyr-flash-pyocd.bbclass | 57 ++++++++++++++++++++----------
 2 files changed, 48 insertions(+), 18 deletions(-)

diff --git a/README.txt b/README.txt
index bda872b..ce5338b 100644
--- a/README.txt
+++ b/README.txt
@@ -67,6 +67,15 @@ dfu-util and/or pyocd need to be installed in your system. If you observe
 permission errors or the flashing process seem to hang, follow those instructions:
 https://github.com/pyocd/pyOCD/tree/master/udev
 
+By default, pyocd tries to flash all the attached probes. This behaviour can be
+customised by defining the PYOCD_FLASH_IDS variable as a space-separated list
+of IDs. Once that is set, the tool will only try to program these IDs. You can
+query for the IDs by running `pyocd list` on your host while having the probes
+attached. Besides setting this variable through the build's configuration or
+metadata, you can also inject its value from command line with something like:
+
+    $ PYOCD_FLASH_IDS='<ID1> <ID2> <ID3>' BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE PYOCD_FLASH_IDS" bitbake <TARGET> -c flash_usb
+
 Building and Running Zephyr Tests
 =================================
 Presently only toolchains for ARM, x86, IAMCU and Nios2 are supported.
diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-pyocd.bbclass
index 4d24e6a..7e1cec5 100644
--- a/classes/zephyr-flash-pyocd.bbclass
+++ b/classes/zephyr-flash-pyocd.bbclass
@@ -1,4 +1,5 @@
-CONNECT_TIMEOUT_SECONDS ?= "30"
+PYOCD_CONNECT_TIMEOUT_SECONDS ?= "30"
+PYOCD_FLASH_IDS ?= "all"
 
 python do_flash_usb() {
     try:
@@ -7,26 +8,46 @@ python do_flash_usb() {
     except ImportError:
         bb.fatal("Flashing with pyocd needs the relevant python package. Make sure your host provides it or consult your distribution packages for how to install this prerequisite.")
 
-    timeout = int(d.getVar('CONNECT_TIMEOUT_SECONDS'))
+    try:
+        timeout = int(d.getVar('PYOCD_CONNECT_TIMEOUT_SECONDS'))
+    except ValueError:
+        bb.fatal(f"PYOCD_CONNECT_TIMEOUT_SECONDS was set to an invalid value: {d.getVar('PYOCD_CONNECT_TIMEOUT_SECONDS')}.")
     image = f"{d.getVar('DEPLOY_DIR_IMAGE')}/{d.getVar('PN')}.elf"
-    bb.plain(f"Attempting to flash {image} to board {d.getVar('BOARD')}")
+    ids = d.getVar('PYOCD_FLASH_IDS')
+
+    # Compute the list of IDs to program
+    if ids == 'all':
+        ids = []
+        for probe in ConnectHelper.get_all_connected_probes(blocking=False):
+            ids.append(probe.unique_id)
+        if not ids:
+            bb.fatal("No probe detected. Make sure your target is connected.")
+    else:
+        ids = ids.split()
+        if not ids:
+            bb.fatal("No probe requested for programming. Make sure PYOCD_FLASH_IDS is set.")
 
-    # Try to connect to a probe with a timeout
-    now = 0
-    step = 3
-    while True:
-        session = ConnectHelper.session_with_chosen_probe(blocking=False, return_first=True)
-        if session:
-            break
-        if now >= timeout:
-            bb.fatal("Timeout while trying to connect to a probe. Make sure the target device is connected and the udev is configured accordingly. See <https://github.com/mbedmicro/pyOCD/tree/master/udev> for help.")
-        bb.warn("Can't connect to the probe. Retrying in %d seconds..." % step)
-        time.sleep(step)
-        now += step
+    # Program each ID
+    for id in ids:
+        bb.plain(f"Attempting to flash {os.path.basename(image)} to board {d.getVar('BOARD')} [{id}]")
 
-    with session:
-        FileProgrammer(session).program(image)
-        session.board.target.reset()
+        # Try to connect to a probe with a timeout
+        now = 0
+        step = 3
+        while True:
+            session = ConnectHelper.session_with_chosen_probe(blocking=False, return_first=True, unique_id=id)
+            if session:
+                break
+            if now >= timeout:
+                bb.fatal(f"Timeout while trying to connect to probe ID: {id}. Make sure the target device is connected and the udev is configured accordingly. See <https://github.com/mbedmicro/pyOCD/tree/master/udev> for help.")
+            bb.warn(f"Can't connect to the probe ID: {id}. Retrying in {step} seconds...")
+            time.sleep(step)
+            now += step
+        
+        # Program the sepected probe
+        with session:
+            FileProgrammer(session).program(image)
+            session.board.target.reset()
 }
 
 addtask do_flash_usb after do_deploy
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [meta-zephy][PATCH 14/14] zephyr-kernel-src: Upgrade 2.5.0-rc3 to rc4
  2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
                   ` (11 preceding siblings ...)
  2021-02-15 11:20 ` [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program Andrei Gherzan
@ 2021-02-15 11:20 ` Andrei Gherzan
  12 siblings, 0 replies; 15+ messages in thread
From: Andrei Gherzan @ 2021-02-15 11:20 UTC (permalink / raw)
  To: yocto; +Cc: Andrei Gherzan

From: Andrei Gherzan <andrei.gherzan@huawei.com>

Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
---
 ...rnel-src-2.5.0-rc3.inc => zephyr-kernel-src-2.5.0-rc4.inc} | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
 rename recipes-kernel/zephyr-kernel/{zephyr-kernel-src-2.5.0-rc3.inc => zephyr-kernel-src-2.5.0-rc4.inc} (86%)

diff --git a/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc4.inc
similarity index 86%
rename from recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc
rename to recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc4.inc
index 4ee9883..b8aa4dc 100644
--- a/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc3.inc
+++ b/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.5.0-rc4.inc
@@ -1,5 +1,5 @@
 SRCREV_FORMAT = "default_cmsis"
-SRCREV_default = "v2.5.0-rc3"
+SRCREV_default = "v2.5.0-rc4"
 SRCREV_cmsis = "c3bd2094f92d574377f7af2aec147ae181aa5f8e"
 SRCREV_nordic = "f3434da6446380fcdd426dbe2866af21d0d549b6"
 SRCREV_stm32 = "cc8731dba4fd9c57d7fe8ea6149828b89c2bd635"
@@ -7,4 +7,4 @@ SRCREV_open-amp = "de1b85a13032a2de1d8b6695ae5f800b613e739d"
 SRCREV_libmetal = "9d4ee2c3cfd5f49861939447990f3b7d7bf9bf94"
 SRCREV_tinycrypt = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0"
 
-PV = "2.5.0-rc3+git${SRCPV}"
+PV = "2.5.0-rc4+git${SRCPV}"
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [yocto] [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program
  2021-02-15 11:20 ` [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program Andrei Gherzan
@ 2021-02-16 10:14   ` Naveen Saini
  0 siblings, 0 replies; 15+ messages in thread
From: Naveen Saini @ 2021-02-16 10:14 UTC (permalink / raw)
  To: Andrei Gherzan, yocto; +Cc: Andrei Gherzan

Thanks Andrei for adding support for v2.5-rc4 and re-structuring.

Could you fix a whitespace in this patch ? Other patches looks good to me.

Later I will fix subject-prefix meta-zephyr typo in README. 

Regards,
Naveen

> -----Original Message-----
> From: yocto@lists.yoctoproject.org <yocto@lists.yoctoproject.org> On
> Behalf Of Andrei Gherzan
> Sent: Monday, February 15, 2021 7:20 PM
> To: yocto@lists.yoctoproject.org
> Cc: Andrei Gherzan <andrei.gherzan@huawei.com>
> Subject: [yocto] [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass:
> Implement configurable probe IDs to program
> 
> From: Andrei Gherzan <andrei.gherzan@huawei.com>
> 
> Implement logic to configure what probes to program based on the
> PYOCD_FLASH_IDS variable:
> 1. by default program all attached probes 2. change default behaviour by
> listing the probe IDs to flash
> 
> CONNECT_TIMEOUT_SECONDS was also renamed to maintain consistency
> with the PYOCD_FLASH_IDS variable.
> 
> One can query the IDs using `pyocd list`.
> 
> The value of PYOCD_FLASH_IDS can also be injected into the datastore using
> BB_ENV_EXTRAWHITE.
> 
> Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
> ---
>  README.txt                         |  9 +++++
>  classes/zephyr-flash-pyocd.bbclass | 57 ++++++++++++++++++++----------
>  2 files changed, 48 insertions(+), 18 deletions(-)
> 
> diff --git a/README.txt b/README.txt
> index bda872b..ce5338b 100644
> --- a/README.txt
> +++ b/README.txt
> @@ -67,6 +67,15 @@ dfu-util and/or pyocd need to be installed in your
> system. If you observe  permission errors or the flashing process seem to
> hang, follow those instructions:
>  https://github.com/pyocd/pyOCD/tree/master/udev
> 
> +By default, pyocd tries to flash all the attached probes. This
> +behaviour can be customised by defining the PYOCD_FLASH_IDS variable as
> +a space-separated list of IDs. Once that is set, the tool will only try
> +to program these IDs. You can query for the IDs by running `pyocd list`
> +on your host while having the probes attached. Besides setting this
> +variable through the build's configuration or metadata, you can also inject
> its value from command line with something like:
> +
> +    $ PYOCD_FLASH_IDS='<ID1> <ID2> <ID3>'
> + BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE PYOCD_FLASH_IDS"
> bitbake
> + <TARGET> -c flash_usb
> +
>  Building and Running Zephyr Tests
>  =================================
>  Presently only toolchains for ARM, x86, IAMCU and Nios2 are supported.
> diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-
> pyocd.bbclass
> index 4d24e6a..7e1cec5 100644
> --- a/classes/zephyr-flash-pyocd.bbclass
> +++ b/classes/zephyr-flash-pyocd.bbclass
> @@ -1,4 +1,5 @@
> -CONNECT_TIMEOUT_SECONDS ?= "30"
> +PYOCD_CONNECT_TIMEOUT_SECONDS ?= "30"
> +PYOCD_FLASH_IDS ?= "all"
> 
>  python do_flash_usb() {
>      try:
> @@ -7,26 +8,46 @@ python do_flash_usb() {
>      except ImportError:
>          bb.fatal("Flashing with pyocd needs the relevant python package. Make
> sure your host provides it or consult your distribution packages for how to
> install this prerequisite.")
> 
> -    timeout = int(d.getVar('CONNECT_TIMEOUT_SECONDS'))
> +    try:
> +        timeout = int(d.getVar('PYOCD_CONNECT_TIMEOUT_SECONDS'))
> +    except ValueError:
> +        bb.fatal(f"PYOCD_CONNECT_TIMEOUT_SECONDS was set to an invalid
> + value: {d.getVar('PYOCD_CONNECT_TIMEOUT_SECONDS')}.")
>      image = f"{d.getVar('DEPLOY_DIR_IMAGE')}/{d.getVar('PN')}.elf"
> -    bb.plain(f"Attempting to flash {image} to board {d.getVar('BOARD')}")
> +    ids = d.getVar('PYOCD_FLASH_IDS')
> +
> +    # Compute the list of IDs to program
> +    if ids == 'all':
> +        ids = []
> +        for probe in
> ConnectHelper.get_all_connected_probes(blocking=False):
> +            ids.append(probe.unique_id)
> +        if not ids:
> +            bb.fatal("No probe detected. Make sure your target is connected.")
> +    else:
> +        ids = ids.split()
> +        if not ids:
> +            bb.fatal("No probe requested for programming. Make sure
> + PYOCD_FLASH_IDS is set.")
> 
> -    # Try to connect to a probe with a timeout
> -    now = 0
> -    step = 3
> -    while True:
> -        session = ConnectHelper.session_with_chosen_probe(blocking=False,
> return_first=True)
> -        if session:
> -            break
> -        if now >= timeout:
> -            bb.fatal("Timeout while trying to connect to a probe. Make sure the
> target device is connected and the udev is configured accordingly. See
> <https://github.com/mbedmicro/pyOCD/tree/master/udev> for help.")
> -        bb.warn("Can't connect to the probe. Retrying in %d seconds..." % step)
> -        time.sleep(step)
> -        now += step
> +    # Program each ID
> +    for id in ids:
> +        bb.plain(f"Attempting to flash {os.path.basename(image)} to
> + board {d.getVar('BOARD')} [{id}]")
> 
> -    with session:
> -        FileProgrammer(session).program(image)
> -        session.board.target.reset()
> +        # Try to connect to a probe with a timeout
> +        now = 0
> +        step = 3
> +        while True:
> +            session =
> ConnectHelper.session_with_chosen_probe(blocking=False,
> return_first=True, unique_id=id)
> +            if session:
> +                break
> +            if now >= timeout:
> +                bb.fatal(f"Timeout while trying to connect to probe ID: {id}. Make
> sure the target device is connected and the udev is configured accordingly.
> See <https://github.com/mbedmicro/pyOCD/tree/master/udev> for help.")
> +            bb.warn(f"Can't connect to the probe ID: {id}. Retrying in {step}
> seconds...")
> +            time.sleep(step)
> +            now += step
> +
> +        # Program the sepected probe
> +        with session:
> +            FileProgrammer(session).program(image)
> +            session.board.target.reset()
>  }
> 
>  addtask do_flash_usb after do_deploy
> --
> 2.30.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-02-16 10:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-15 11:19 [meta-zephy][PATCH 01/14] zephyr-flash-dfu.bbclass: Add missing do_flash_usb dependency on do_deploy Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 02/14] zephyr-flash-pyocd.bbclass: " Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 03/14] Cleanup superflous new lines Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 04/14] zephyr-kernel-src: Restructure recipe Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 05/14] zephyr-kernel-src-2.5.0-rc3.inc: Add support for zephyr kernel version 2.5.0-rc3 Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 06/14] zephyr-kernel-common.inc: Fix configuration CPPFLAGS warning Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 07/14] zephyr-kernel-common.inc: Reformat EXTRA_OECMAKE Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 08/14] zephyr-kernel.inc: Remove include file Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 09/14] Use an include file for the common parts of the sample recipes Andrei Gherzan
2021-02-15 11:19 ` [meta-zephy][PATCH 10/14] zephyr-peripheral-hr: Add recipe for BT HR sample Andrei Gherzan
2021-02-15 11:20 ` [meta-zephy][PATCH 11/14] zephyr-flash-pyocd.bbclass: Flash the first probe found with a timeout Andrei Gherzan
2021-02-15 11:20 ` [meta-zephy][PATCH 12/14] zephyr-flash-pyocd.bbclass: Handle import error for pyocd modules Andrei Gherzan
2021-02-15 11:20 ` [meta-zephy][PATCH 13/14] zephyr-flash-pyocd.bbclass: Implement configurable probe IDs to program Andrei Gherzan
2021-02-16 10:14   ` [yocto] " Naveen Saini
2021-02-15 11:20 ` [meta-zephy][PATCH 14/14] zephyr-kernel-src: Upgrade 2.5.0-rc3 to rc4 Andrei Gherzan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.