From b000c4c711f5607f5a7b4a47cd6606f713e8906c Mon Sep 17 00:00:00 2001 From: Lucio Rossi Date: Fri, 3 Oct 2025 13:08:17 +0200 Subject: [PATCH 1/2] test: static allocation of bridge thread stack --- src/bridge.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/bridge.h b/src/bridge.h index 0ae012f..c8bc48d 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -108,7 +108,8 @@ class BridgeClass { struct k_mutex write_mutex{}; k_tid_t upd_tid{}; - k_thread_stack_t *upd_stack_area{}; + //k_thread_stack_t *upd_stack_area{}; + K_THREAD_STACK_DEFINE(upd_thread_stack, UPDATE_THREAD_STACK_SIZE); struct k_thread upd_thread_data{}; bool started = false; @@ -134,9 +135,10 @@ class BridgeClass { client = new RPCClient(*transport); server = new RPCServer(*transport); - upd_stack_area = k_thread_stack_alloc(UPDATE_THREAD_STACK_SIZE, 0); - upd_tid = k_thread_create(&upd_thread_data, upd_stack_area, - UPDATE_THREAD_STACK_SIZE, + //upd_stack_area = k_thread_stack_alloc(UPDATE_THREAD_STACK_SIZE, 0); + + upd_tid = k_thread_create(&upd_thread_data, upd_thread_stack, + K_THREAD_STACK_SIZEOF(upd_thread_stack), updateEntryPoint, NULL, NULL, NULL, UPDATE_THREAD_PRIORITY, 0, K_NO_WAIT); From e2231a5afd7b23491fb19f3ebf0d2ac587a13f1d Mon Sep 17 00:00:00 2001 From: Lucio Rossi Date: Tue, 7 Oct 2025 10:26:13 +0200 Subject: [PATCH 2/2] fix: static threads cannot be defined in local scope --- src/bridge.h | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/bridge.h b/src/bridge.h index c8bc48d..2277537 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -18,7 +18,7 @@ #define BIND_METHOD "$/register" //#define BRIDGE_ERROR "$/bridgeLog" -#define UPDATE_THREAD_STACK_SIZE 500 +#define UPDATE_THREAD_STACK_SIZE 2048 #define UPDATE_THREAD_PRIORITY 5 #define DEFAULT_SERIAL_BAUD 115200 @@ -107,11 +107,6 @@ class BridgeClass { struct k_mutex read_mutex{}; struct k_mutex write_mutex{}; - k_tid_t upd_tid{}; - //k_thread_stack_t *upd_stack_area{}; - K_THREAD_STACK_DEFINE(upd_thread_stack, UPDATE_THREAD_STACK_SIZE); - struct k_thread upd_thread_data{}; - bool started = false; public: @@ -135,14 +130,6 @@ class BridgeClass { client = new RPCClient(*transport); server = new RPCServer(*transport); - //upd_stack_area = k_thread_stack_alloc(UPDATE_THREAD_STACK_SIZE, 0); - - upd_tid = k_thread_create(&upd_thread_data, upd_thread_stack, - K_THREAD_STACK_SIZEOF(upd_thread_stack), - updateEntryPoint, - NULL, NULL, NULL, - UPDATE_THREAD_PRIORITY, 0, K_NO_WAIT); - bool res; call(RESET_METHOD).result(res); if (res) { @@ -289,4 +276,8 @@ void __loopHook(void){ safeUpdate(); } +K_THREAD_DEFINE(upd_tid, UPDATE_THREAD_STACK_SIZE, + updateEntryPoint, NULL, NULL, NULL, + UPDATE_THREAD_PRIORITY, 0, 0); + #endif // ROUTER_BRIDGE_H \ No newline at end of file