From cd71db0172c9f0905fd3d3438b1f2cf70da11dfa Mon Sep 17 00:00:00 2001 From: Detlev Zundel Date: Thu, 6 Feb 2025 16:44:39 +0100 Subject: [PATCH 1/4] zephyr: Fix prj.conf for v4.1-rc1. The (deprecated) kconfig option NET_SOCKETS_POSIX_NAMES was removed in commit abad505bdeed6102061767f45acd63323973f564 so remove it from our configuration. As the option has been deprecated longer, this also works for v3.7 and v4.0 the other still supported versions. Signed-off-by: Detlev Zundel --- ports/zephyr/prj.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/zephyr/prj.conf b/ports/zephyr/prj.conf index ae37c3ff07614..0325cddd206c4 100644 --- a/ports/zephyr/prj.conf +++ b/ports/zephyr/prj.conf @@ -29,7 +29,6 @@ CONFIG_NET_IPV6=y CONFIG_NET_UDP=y CONFIG_NET_TCP=y CONFIG_NET_SOCKETS=y -CONFIG_NET_SOCKETS_POSIX_NAMES=n CONFIG_TEST_RANDOM_GENERATOR=y CONFIG_NET_CONFIG_SETTINGS=y From cd3eaad05cf94cd86e9762c854c68a4d4b5c2fab Mon Sep 17 00:00:00 2001 From: Detlev Zundel Date: Thu, 6 Feb 2025 16:45:25 +0100 Subject: [PATCH 2/4] zephyr: Fix call to thread_analyzer_print for v4.0. Commit 1b6e0f64796dfd6f86a8679ea6d24e1fca1e63a8 for Zephyr v4.0.0 changed the function "thread_analyzer_print" to require a cpu argument and allow thread analysis on each cpu separately. The argument is ignored when THREAD_ANALYZER_AUTO_SEPARATE_CORES=n which is the default on single core machines. Promote this change to the MicroPython zephyr module. Signed-off-by: Detlev Zundel Signed-off-by: Maureen Helm --- docs/library/zephyr.rst | 8 ++++++-- ports/zephyr/modzephyr.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/library/zephyr.rst b/docs/library/zephyr.rst index 10676d9085289..1a106d50ea717 100644 --- a/docs/library/zephyr.rst +++ b/docs/library/zephyr.rst @@ -22,9 +22,10 @@ Functions Returns the thread id of the current thread, which is used to reference the thread. -.. function:: thread_analyze() +.. function:: thread_analyze(cpu) - Runs the Zephyr debug thread analyzer on the current thread and prints stack size statistics in the format: + Runs the Zephyr debug thread analyzer on the current thread on the given cpu + and prints stack size statistics in the format: "``thread_name``-20s: STACK: unused ``available_stack_space`` usage ``stack_space_used`` / ``stack_size`` (``percent_stack_space_used`` %); CPU: ``cpu_utilization`` %" @@ -35,6 +36,9 @@ Functions For more information, see documentation for Zephyr `thread analyzer `_. + Note that the ``cpu`` argument is only used in Zephyr v4.0.0 and + newer and ignored otherwise. + .. function:: shell_exec(cmd_in) Executes the given command on an UART backend. This function can only be accessed if ``CONFIG_SHELL_BACKEND_SERIAL`` diff --git a/ports/zephyr/modzephyr.c b/ports/zephyr/modzephyr.c index c059c7e395796..08fdf5c5aa44d 100644 --- a/ports/zephyr/modzephyr.c +++ b/ports/zephyr/modzephyr.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -48,11 +49,16 @@ static mp_obj_t mod_current_tid(void) { static MP_DEFINE_CONST_FUN_OBJ_0(mod_current_tid_obj, mod_current_tid); #ifdef CONFIG_THREAD_ANALYZER -static mp_obj_t mod_thread_analyze(void) { +static mp_obj_t mod_thread_analyze(mp_obj_t cpu_in) { + #if KERNEL_VERSION_NUMBER >= ZEPHYR_VERSION(4, 0, 0) + unsigned int cpu = mp_obj_get_int(cpu_in); + thread_analyzer_print(cpu); + #else thread_analyzer_print(); + #endif return mp_const_none; } -static MP_DEFINE_CONST_FUN_OBJ_0(mod_thread_analyze_obj, mod_thread_analyze); +static MP_DEFINE_CONST_FUN_OBJ_1(mod_thread_analyze_obj, mod_thread_analyze); #endif #ifdef CONFIG_SHELL_BACKEND_SERIAL From b83606fe337614543f18f0ddf4a3250974b93d3c Mon Sep 17 00:00:00 2001 From: Detlev Zundel Date: Thu, 6 Feb 2025 16:40:14 +0100 Subject: [PATCH 3/4] zephyr: Remove reference to CONFIG_MMC_VOLUME_NAME for v4.0. Commit 07a8e3253a2d8a2076c9c83c4ed4158fa3fbb2a2 removes CONFIG_MMC_VOLUME_NAME from the Kconfig space. Instead we need to use the device tree to find the "disk-name" property of "zephyr,mmc-disk" devices. Signed-off-by: Detlev Zundel --- ports/zephyr/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ports/zephyr/main.c b/ports/zephyr/main.c index 9fae2b3a873e5..206b7f92d3917 100644 --- a/ports/zephyr/main.c +++ b/ports/zephyr/main.c @@ -30,6 +30,7 @@ #include #include +#include #ifdef CONFIG_NETWORKING #include #endif @@ -97,7 +98,11 @@ static void vfs_init(void) { int ret = 0; #ifdef CONFIG_DISK_DRIVER_SDMMC + #if KERNEL_VERSION_NUMBER >= ZEPHYR_VERSION(4, 0, 0) + mp_obj_t args[] = { mp_obj_new_str_from_cstr(DT_PROP(DT_INST(0, zephyr_sdmmc_disk), disk_name)) }; + #else mp_obj_t args[] = { mp_obj_new_str_from_cstr(CONFIG_SDMMC_VOLUME_NAME) }; + #endif bdev = MP_OBJ_TYPE_GET_SLOT(&zephyr_disk_access_type, make_new)(&zephyr_disk_access_type, ARRAY_SIZE(args), 0, args); mount_point_str = "/sd"; #elif defined(CONFIG_FLASH_MAP) && FIXED_PARTITION_EXISTS(storage_partition) From 3c8d1b13f5b7e60e491e3a19734c237e1485e413 Mon Sep 17 00:00:00 2001 From: Maureen Helm Date: Sun, 10 Nov 2024 08:24:02 -0600 Subject: [PATCH 4/4] zephyr: Upgrade to Zephyr v4.0.0. Updates the Zephyr port build instructions. The CI is updated to use Zephyr docker image 0.27.4, SDK 0.17.0 and the latest Zephyr release tag. Tested on max32690fthr and frdm_k64f. Signed-off-by: Maureen Helm Signed-off-by: Detlev Zundel --- docs/zephyr/tutorial/repl.rst | 2 +- ports/zephyr/README.md | 15 +++++++++------ tools/ci.sh | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/zephyr/tutorial/repl.rst b/docs/zephyr/tutorial/repl.rst index db7b7333d2416..199dda2b7aeee 100644 --- a/docs/zephyr/tutorial/repl.rst +++ b/docs/zephyr/tutorial/repl.rst @@ -31,7 +31,7 @@ With your serial program open (PuTTY, screen, picocom, etc) you may see a blank screen with a flashing cursor. Press Enter (or reset the board) and you should be presented with the following text:: - *** Booting Zephyr OS build v3.7.0 *** + *** Booting Zephyr OS build v4.0.0 *** MicroPython v1.24.0-preview.179.g5b85b24bd on 2024-08-05; zephyr-frdm_k64f with mk64f12 Type "help()" for more information. >>> diff --git a/ports/zephyr/README.md b/ports/zephyr/README.md index 4590eb7199c25..84adf96395246 100644 --- a/ports/zephyr/README.md +++ b/ports/zephyr/README.md @@ -4,10 +4,13 @@ MicroPython port to Zephyr RTOS This is a work-in-progress port of MicroPython to Zephyr RTOS (http://zephyrproject.org). -This port requires Zephyr version v3.7.0, and may also work on higher -versions. All boards supported -by Zephyr (with standard level of features support, like UART console) -should work with MicroPython (but not all were tested). +This port tries to support all Zephyr versions supported upstream, +i.e. currently v3.7 (LTS), v4.0 and the development branch. The CI is +setup to use the latest version, i.e. v4.0. + +All boards supported by Zephyr (with standard level of features +support, like UART console) should work with MicroPython (but not all +were tested). Features supported at this time: @@ -39,13 +42,13 @@ setup is correct. If you already have Zephyr installed but are having issues building the MicroPython port then try installing the correct version of Zephyr via: - $ west init zephyrproject -m https://github.com/zephyrproject-rtos/zephyr --mr v3.7.0 + $ west init zephyrproject -m https://github.com/zephyrproject-rtos/zephyr --mr v4.0.0 Alternatively, you don't have to redo the Zephyr installation to just switch from master to a tagged release, you can instead do: $ cd zephyrproject/zephyr - $ git checkout v3.7.0 + $ git checkout v4.0.0 $ west update With Zephyr installed you may then need to configure your environment, diff --git a/tools/ci.sh b/tools/ci.sh index cfc9754837f76..6f8d1cb80c4aa 100755 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -818,9 +818,9 @@ function ci_windows_build { ######################################################################################## # ports/zephyr -ZEPHYR_DOCKER_VERSION=v0.26.13 -ZEPHYR_SDK_VERSION=0.16.8 -ZEPHYR_VERSION=v3.7.0 +ZEPHYR_DOCKER_VERSION=v0.27.4 +ZEPHYR_SDK_VERSION=0.17.0 +ZEPHYR_VERSION=v4.0.0 function ci_zephyr_setup { IMAGE=ghcr.io/zephyrproject-rtos/ci:${ZEPHYR_DOCKER_VERSION} pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy