From 758d12ab512ebbb3bbe6018748e9de68b274a5fd Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski <bartosz.golaszewski@huawei.com> Date: Tue, 19 Jul 2022 15:06:11 +0200 Subject: [PATCH] zephyr-kernel: add support for zephyr v3.1.0 This adds support for zephyr v3.1.0. It's not a backport from upstream as meta-zephyr master branch build is still broken as of writing this. There are several incompatible changes between v3.0 and v3.1 that require us to use separate patches for the ACM console. Other patches needed to be moved around between version too - when we drop v2.7 and v3.0, it will become much cleaner. On the flip side: lvgl is now upstream so v3.1 doesn't need the lvgl backports. On the flip flip side we need special handling of the DSHIELD option for lvgl as long as we support both v3 versions. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@huawei.com> --- ...-console-enable-the-USB-ACM0-console.patch | 126 ++++++++++++++++++ ...-set-toolchain-to-ZEPHYR_GCC_VARIANT.patch | 17 ++- .../zephyr-kernel/zephyr-kernel-src-2.7.1.inc | 3 + .../zephyr-kernel/zephyr-kernel-src-3.0.0.inc | 3 + .../zephyr-kernel/zephyr-kernel-src-3.1.0.inc | 76 +++++++++++ .../zephyr-kernel/zephyr-kernel-src.inc | 5 +- .../zephyr-kernel/zephyr-lvgl.bb | 13 +- 7 files changed, 228 insertions(+), 15 deletions(-) create mode 100644 meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-zephyr-3.1.0-console-enable-the-USB-ACM0-console.patch create mode 100644 meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.1.0.inc diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-zephyr-3.1.0-console-enable-the-USB-ACM0-console.patch b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-zephyr-3.1.0-console-enable-the-USB-ACM0-console.patch new file mode 100644 index 0000000..497c950 --- /dev/null +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-zephyr-3.1.0-console-enable-the-USB-ACM0-console.patch @@ -0,0 +1,126 @@ +From e201097658f65fc636887bcc1cfa7d458d90cb10 Mon Sep 17 00:00:00 2001 +From: Bartosz Golaszewski <bartosz.golaszewski@huawei.com> +Date: Tue, 19 Jul 2022 14:50:24 +0200 +Subject: [PATCH] zephyr 3.1.0: console: enable the USB ACM0 console + +This is a forward port of the ACM0 console patch for zephyr v3.1.0. + +Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@huawei.com> +--- + boards/arm/arduino_nano_33_ble/CMakeLists.txt | 2 +- + .../arduino_nano_33_ble-common.dtsi | 7 ++++- + .../arduino_nano_33_ble_defconfig | 5 ++++ + boards/arm/arduino_nano_33_ble/board.c | 26 +++++++++++++++++++ + subsys/shell/backends/shell_uart.c | 2 +- + 5 files changed, 39 insertions(+), 3 deletions(-) + +diff --git a/boards/arm/arduino_nano_33_ble/CMakeLists.txt b/boards/arm/arduino_nano_33_ble/CMakeLists.txt +index b4fe264e0e..011d33b267 100644 +--- a/boards/arm/arduino_nano_33_ble/CMakeLists.txt ++++ b/boards/arm/arduino_nano_33_ble/CMakeLists.txt +@@ -2,4 +2,4 @@ + # SPDX-License-Identifier: Apache-2.0 + + zephyr_library() +-zephyr_library_sources(board.c) ++zephyr_library_sources(board.c ) +diff --git a/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble-common.dtsi b/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble-common.dtsi +index 7c39c42bac..d31945d50e 100644 +--- a/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble-common.dtsi ++++ b/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble-common.dtsi +@@ -6,7 +6,6 @@ + + / { + chosen { +- zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,uart-mcumgr = &uart0; + zephyr,bt-mon-uart = &uart0; +@@ -14,6 +13,7 @@ + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &code_partition; ++ zephyr,console = &cdc_acm_uart0; + }; + + leds { +@@ -209,4 +209,9 @@ arduino_spi: &spi2 { + zephyr_udc0: &usbd { + compatible = "nordic,nrf-usbd"; + status = "okay"; ++ ++ cdc_acm_uart0: cdc_acm_uart0 { ++ compatible = "zephyr,cdc-acm-uart"; ++ label = "CDC_ACM_0"; ++ }; + }; +diff --git a/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble_defconfig b/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble_defconfig +index 2d91725aaf..b1f90c3148 100644 +--- a/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble_defconfig ++++ b/boards/arm/arduino_nano_33_ble/arduino_nano_33_ble_defconfig +@@ -24,3 +24,8 @@ CONFIG_BOOTLOADER_BOSSA_LEGACY=y + CONFIG_GPIO_AS_PINRESET=y + + CONFIG_PINCTRL=y ++ ++CONFIG_USB_DEVICE_STACK=y ++CONFIG_USB_DEVICE_PRODUCT="Zephyr USB console sample" ++ ++CONFIG_UART_LINE_CTRL=y +diff --git a/boards/arm/arduino_nano_33_ble/board.c b/boards/arm/arduino_nano_33_ble/board.c +index b79033c362..f687b87d50 100644 +--- a/boards/arm/arduino_nano_33_ble/board.c ++++ b/boards/arm/arduino_nano_33_ble/board.c +@@ -6,6 +6,8 @@ + + #include <zephyr/init.h> + #include <zephyr/drivers/gpio.h> ++#include <usb/usb_device.h> ++#include <drivers/uart.h> + + static int board_init(const struct device *dev) + { +@@ -22,3 +24,27 @@ static int board_init(const struct device *dev) + } + + SYS_INIT(board_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE); ++ ++BUILD_ASSERT(DT_NODE_HAS_COMPAT(DT_CHOSEN(zephyr_console), zephyr_cdc_acm_uart), ++ "Console device is not ACM CDC UART device"); ++ ++static int board_internal_usb_cdc_acm_init(const struct device *unused) ++{ ++ ARG_UNUSED(unused); ++ const struct device *dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_console)); ++ uint32_t dtr = 0; ++ ++ if (usb_enable(NULL)) { ++ return -ENODEV; ++ } ++ ++ /* Poll if the DTR flag was set */ ++ while (!dtr) { ++ uart_line_ctrl_get(dev, UART_LINE_CTRL_DTR, &dtr); ++ /* Give CPU resources to low priority threads. */ ++ k_sleep(K_MSEC(100)); ++ } ++ ++ return 0; ++} ++SYS_INIT(board_internal_usb_cdc_acm_init, APPLICATION, 99); +diff --git a/subsys/shell/backends/shell_uart.c b/subsys/shell/backends/shell_uart.c +index b30e163dc3..a9af34bde1 100644 +--- a/subsys/shell/backends/shell_uart.c ++++ b/subsys/shell/backends/shell_uart.c +@@ -335,7 +335,7 @@ static int enable_shell_uart(const struct device *arg) + return 0; + } + +-SYS_INIT(enable_shell_uart, POST_KERNEL, ++SYS_INIT(enable_shell_uart, APPLICATION, + CONFIG_SHELL_BACKEND_SERIAL_INIT_PRIORITY); + + const struct shell *shell_backend_uart_get_ptr(void) +-- +2.34.1 + diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0002-twister-set-toolchain-to-ZEPHYR_GCC_VARIANT.patch b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0002-twister-set-toolchain-to-ZEPHYR_GCC_VARIANT.patch index 2273204..85c84df 100644 --- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0002-twister-set-toolchain-to-ZEPHYR_GCC_VARIANT.patch +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0002-twister-set-toolchain-to-ZEPHYR_GCC_VARIANT.patch @@ -1,30 +1,29 @@ -From 4f48eac03ac25a66af25d72e7b88f04d3ddd770d Mon Sep 17 00:00:00 2001 +From 168eab56fc9645406728b04654ed57121fa62f54 Mon Sep 17 00:00:00 2001 From: Chase Qi <chase.qi@linaro.org> -Date: Mon, 9 May 2022 18:31:19 +0800 -Subject: [PATCH 2/2] twister: set toolchain to ZEPHYR_GCC_VARIANT +Date: Fri, 22 Jul 2022 17:10:47 +0200 +Subject: [PATCH] v3.1.0: twister: set toolchain to ZEPHYR_GCC_VARIANT Set toolchain to ZEPHYR_GCC_VARIANT. Defaults to 'yocto'. -Upstream status: inappropriate [OE specific] - Signed-off-by: Chase Qi <chase.qi@linaro.org> +Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl> --- scripts/pylib/twister/twisterlib.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/pylib/twister/twisterlib.py b/scripts/pylib/twister/twisterlib.py -index e8c342df91..d54d13fdc0 100755 +index 34d14ce84d..0549584b21 100755 --- a/scripts/pylib/twister/twisterlib.py +++ b/scripts/pylib/twister/twisterlib.py -@@ -3042,6 +3042,8 @@ class TestSuite(DisablePyTestCollectionMixin): +@@ -3339,6 +3339,8 @@ class TestPlan(DisablePyTestCollectionMixin): @staticmethod def get_toolchain(): + return os.getenv("ZEPHYR_GCC_VARIANT", "yocto") + - toolchain_script = Path(ZEPHYR_BASE) / Path('cmake/verify-toolchain.cmake') + toolchain_script = Path(ZEPHYR_BASE) / Path('cmake/modules/verify-toolchain.cmake') result = CMake.run_cmake_script([toolchain_script, "FORMAT=json"]) -- -2.25.1 +2.34.1 diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.7.1.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.7.1.inc index a2c100c..3c31b64 100644 --- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.7.1.inc +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-2.7.1.inc @@ -6,6 +6,9 @@ SRC_URI += " \ git://github.com/zephyrproject-rtos/mcumgr.git;protocol=https;nobranch=1;destsuffix=git/modules/lib/mcumgr;name=mcumgr \ git://github.com/zephyrproject-rtos/TraceRecorderSource.git;protocol=https;nobranch=1;destsuffix=git/modules/debug/TraceRecorder;name=TraceRecorder \ git://github.com/zephyrproject-rtos/trusted-firmware-m.git;protocol=https;nobranch=1;destsuffix=git/modules/tee/tfm;name=tfm \ + git://github.com/zephyrproject-rtos/hal_cypress.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/cypress;name=cypress \ + file://0001-x86-fix-efi-binary-generation-issue-in-cross-compila.patch \ + ${@bb.utils.contains("ONIRO_ENABLE_ACM0", "1", "", "file://0001-console-enable-the-USB-ACM0-console-by-default.patch", d)} \ " # diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc index 7ad3209..b680519 100644 --- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc @@ -70,6 +70,9 @@ ZEPHYR_BRANCH = "v3.0-branch" PV = "3.0.0+git${SRCPV}" SRC_URI += " \ + git://github.com/zephyrproject-rtos/hal_cypress.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/cypress;name=cypress \ file://0001-lvgl-add-support-for-lvgl-v8.2.0.patch \ file://0001-boards-arm-arduino_nano_33_ble-add-support-for-the-a.patch \ + file://0001-x86-fix-efi-binary-generation-issue-in-cross-compila.patch \ + ${@bb.utils.contains("ONIRO_ENABLE_ACM0", "1", "", "file://0001-console-enable-the-USB-ACM0-console-by-default.patch", d)} \ " diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.1.0.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.1.0.inc new file mode 100644 index 0000000..ed7f6c1 --- /dev/null +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.1.0.inc @@ -0,0 +1,76 @@ +SRCREV_FORMAT = "default_cmsis" + +# +# Generated with: +# +# #!/usr/bin/python3 +# +# import yaml +# import sys +# +# if __name__ == "__main__": +# with open(sys.argv[1], "r") as fd: +# data = yaml.safe_load(fd) +# +# for project in data["manifest"]["projects"]: +# print("SRCREV_{} = \"{}\"".format(project["name"], project["revision"])) +# + +SRCREV_default = "2ddd73feafd3316af2c547c34d6969bea637d5c6" +SRCREV_canopennode = "53d3415c14d60f8f4bfca54bfbc5d5a667d7e724" +SRCREV_chre = "0edfe2c2ec656afb910cfab8ed59a5ffd59b87c8" +SRCREV_civetweb = "094aeb41bb93e9199d24d665ee43e9e05d6d7b1c" +SRCREV_cmsis = "5f86244bad4ad5a590e084f0e72ba7a1416c2edf" +SRCREV_edtt = "1ea61a390d2bfcf3b2ecdba8f8b0b98dfdffbd11" +SRCREV_fatfs = "a30531af3a95a9a3ea7d771ea8a578ebfed45514" +SRCREV_fff = "6ce5ba26486e93d5b7696a3e23f0585932c14b16" +SRCREV_altera = "0d225ddd314379b32355a00fb669eacf911e750d" +SRCREV_atmel = "78c5567c05b6b434dd7d98f49156319df4217bac" +SRCREV_espressif = "df85671c5d0405c0747c2939c8dfe808b7e4cf38" +SRCREV_gigadevice = "63a72ca90b7e0d7257211ddc5c79e8c0b940371b" +SRCREV_infineon = "4af06965f57ba1e7d170e6a97d24c33785543a8c" +SRCREV_microchip = "5d079f1683a00b801373bbbbf5d181d4e33b30d5" +SRCREV_nordic = "a85bb3676d61d1ae202088e0d3fec556056b2c9e" +SRCREV_nuvoton = "b4d31f33238713a568e23618845702fadd67386f" +SRCREV_nxp = "2302a1e94f5bc00ce59db4e249b688ad2e959f58" +SRCREV_openisa = "40d049f69c50b58ea20473bee14cf93f518bf262" +SRCREV_quicklogic = "b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0" +SRCREV_rpi_pico = "191f5ba46fda49523cdaaef27583d1c875ba2c36" +SRCREV_silabs = "be39d4eebeddac6e18e9c0c3ba1b31ad1e82eaed" +SRCREV_st = "52a522ca4a8a9ec1e9bb5bb514e1ab6f102863fe" +SRCREV_stm32 = "51b373cd3455b8c2b9babbf6ff41918116a442ac" +SRCREV_telink = "ffcfd6282aa213f1dc0848dbca6279b098f6b143" +SRCREV_ti = "905a5d4134899630071f9383aadaaf266e8f8cd2" +SRCREV_xtensa = "0e577021bb66e644afd067cd9f7c71ab11b62b3d" +SRCREV_libmetal = "850a3c3fd5bc655987021dc9106d8e8cd0f7e061" +SRCREV_liblc3codec = "3951cf1b71ff3be086c9b9b595e473e12301337c" +SRCREV_littlefs = "652f2c5646e79b881e6f3099686ad3b7af9e216c" +SRCREV_loramac-node = "12019623bbad9eb54fe51066847a7cbd4b4eac57" +SRCREV_lvgl = "df717ac87a9fd80246cc8df24554475e59bda21f" +SRCREV_lz4 = "8e303c264fc21c2116dc612658003a22e933124d" +SRCREV_mbedtls = "7fed49c9b9f983ad6416986661ef637459723bcb" +SRCREV_mcuboot = "e58ea98aec6e5539c5f872a98059e461d0155bbb" +SRCREV_mipi-sys-t = "a5163c1800a5243f8b05d84c942da008df4cb666" +SRCREV_nanopb = "d148bd26718e4c10414f07a7eb1bd24c62e56c5d" +SRCREV_net-tools = "f49bd1354616fae4093bf36e5eaee43c51a55127" +SRCREV_nrf_hw_models = "b8cea37dbdc8fc58cc14b4e19fa850877a9da520" +SRCREV_open-amp = "8d53544871e1f300c478224faca6be8384ab0d04" +SRCREV_openthread = "e2a765599aa0379d0f72f0149a9cbafec070c12d" +SRCREV_segger = "3a52ab222133193802d3c3b4d21730b9b1f1d2f6" +SRCREV_sof = "2efc3ea41c0074c6dab5f376fafaa26f52c25c75" +SRCREV_tflite-micro = "9156d050927012da87079064db59d07f03b8baf6" +SRCREV_tinycbor = "9e1f34bc08123aaad7666d3652aaa839e8178b3b" +SRCREV_tinycrypt = "3e9a49d2672ec01435ffbf0d788db6d95ef28de0" +SRCREV_TraceRecorderSource = "e8ca3b6a83d19b2fc4738a0d9607190436e5e452" +SRCREV_trusted-firmware-m = "7c53a6e76130a85303f83b15d868a92fdcd5f5be" +SRCREV_tf-m-tests = "c99a86b295c4887520da9d8402566d7f225c974e" +SRCREV_psa-arch-tests = "a81f9da287569f169d60026916952641b233faa8" +SRCREV_zcbor = "882c489a7d9fdfff31d27666914a78a9eb6976d7" +SRCREV_zscilib = "fc979a8dcb74169c69b02835927bff8f070d6325" + +ZEPHYR_BRANCH = "v3.1-branch" +PV = "3.1.0+git${SRCPV}" + +SRC_URI += " \ + ${@bb.utils.contains("ONIRO_ENABLE_ACM0", "1", "file://0001-zephyr-3.1.0-console-enable-the-USB-ACM0-console.patch", "", d)} \ +" diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc index f95e1a5..0769017 100644 --- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src.inc @@ -19,7 +19,6 @@ SRC_URI = "\ git://github.com/zephyrproject-rtos/fatfs.git;protocol=https;nobranch=1;destsuffix=git/modules/fs/fatfs;name=fatfs \ git://github.com/zephyrproject-rtos/hal_altera.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/altera;name=altera \ git://github.com/zephyrproject-rtos/hal_atmel.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/atmel;name=atmel \ - git://github.com/zephyrproject-rtos/hal_cypress.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/cypress;name=cypress \ git://github.com/zephyrproject-rtos/hal_espressif.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/espressif;name=espressif \ git://github.com/zephyrproject-rtos/hal_infineon.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/infineon;name=infineon \ git://github.com/zephyrproject-rtos/hal_microchip.git;protocol=https;nobranch=1;destsuffix=git/modules/hal/microchip;name=microchip \ @@ -53,11 +52,9 @@ SRC_URI = "\ git://github.com/zephyrproject-rtos/lz4.git;protocol=https;nobranch=1;destsuffix=git/modules/lib/lz4;name=lz4 \ git://github.com/zephyrproject-rtos/tflite-micro.git;protocol=https;nobranch=1;destsuffix=git/modules/lib/tflite-micro;name=tflite-micro \ file://0001-cmake-add-yocto-toolchain.patch \ - file://0001-x86-fix-efi-binary-generation-issue-in-cross-compila.patch \ - ${@bb.utils.contains("ONIRO_ENABLE_ACM0", "1", "file://0001-console-enable-the-USB-ACM0-console-by-default.patch", "", d)} \ " S = "${WORKDIR}/git" # Default to a stable version -PREFERRED_VERSION_zephyr-kernel ??= "3.0.0" +PREFERRED_VERSION_zephyr-kernel ??= "3.1.0" include zephyr-kernel-src-${PREFERRED_VERSION_zephyr-kernel}.inc diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-lvgl.bb b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-lvgl.bb index d9eaccc..d1f30f8 100644 --- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-lvgl.bb +++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-lvgl.bb @@ -2,7 +2,16 @@ include zephyr-sample.inc ZEPHYR_SRC_DIR = "${S}/samples/subsys/display/lvgl" -# TODO Once more machines and displays are supported, add a PACKAGECONFIG. -EXTRA_OECMAKE:append =" -DSHIELD=adafruit_2_8_tft_touch_v2" +python __anonymous() { + pver = d.getVar("PREFERRED_VERSION_zephyr-kernel") + shield = None + + if pver == "3.1.0": + shield = " -DSHIELD=adafruit_2_8_tft_touch_v2_nano" + else: + shield = " -DSHIELD=adafruit_2_8_tft_touch_v2" + + d.setVar("EXTRA_OECMAKE:append", shield) +} COMPATIBLE_MACHINE = "(nrf52840dk-nrf52840|arduino-nano-33-ble)" -- GitLab