From b13634de772bff141f87cb5bfa296741d70e6910 Mon Sep 17 00:00:00 2001 From: daishengdong Date: Tue, 28 Apr 2020 16:23:57 +0800 Subject: [PATCH] fix sytick drift after tickless wakeup from sleep or stop 1. make port_systick_reload the same as port_systick_config --- arch/arm/arm-v6m/cortex-m0/armcc/port_c.c | 12 +------- arch/arm/arm-v6m/cortex-m0/gcc/port_c.c | 12 +------- arch/arm/arm-v6m/cortex-m0/iccarm/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m0+/armcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m0+/gcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m0+/iccarm/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m3/armcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m3/gcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m4/armcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m4/gcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m4/iccarm/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m7/armcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m7/gcc/port_c.c | 12 +------- arch/arm/arm-v7m/cortex-m7/iccarm/port_c.c | 12 +------- arch/arm/arm-v8m/cortex-m23/armcc/port_c.c | 12 +------- arch/arm/arm-v8m/cortex-m23/gcc/port_c.c | 12 +------- arch/arm/arm-v8m/cortex-m23/iccarm/port_c.c | 12 +------- arch/avr/ATMega32/iccavr/port_c.c | 32 --------------------- arch/risc-v/rv32i/gcc/port_c.c | 1 + arch/stm8/iccstm8/port_c.c | 32 --------------------- components/fs/kv/tos_kv.c | 5 ---- kernel/pm/tos_pm.c | 3 +- kernel/pm/tos_tickless.c | 7 ++--- 23 files changed, 22 insertions(+), 262 deletions(-) diff --git a/arch/arm/arm-v6m/cortex-m0/armcc/port_c.c b/arch/arm/arm-v6m/cortex-m0/armcc/port_c.c index 2776a71c..c3d668e1 100644 --- a/arch/arm/arm-v6m/cortex-m0/armcc/port_c.c +++ b/arch/arm/arm-v6m/cortex-m0/armcc/port_c.c @@ -42,17 +42,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v6m/cortex-m0/gcc/port_c.c b/arch/arm/arm-v6m/cortex-m0/gcc/port_c.c index 2776a71c..c3d668e1 100644 --- a/arch/arm/arm-v6m/cortex-m0/gcc/port_c.c +++ b/arch/arm/arm-v6m/cortex-m0/gcc/port_c.c @@ -42,17 +42,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v6m/cortex-m0/iccarm/port_c.c b/arch/arm/arm-v6m/cortex-m0/iccarm/port_c.c index 2776a71c..c3d668e1 100644 --- a/arch/arm/arm-v6m/cortex-m0/iccarm/port_c.c +++ b/arch/arm/arm-v6m/cortex-m0/iccarm/port_c.c @@ -42,17 +42,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m0+/armcc/port_c.c b/arch/arm/arm-v7m/cortex-m0+/armcc/port_c.c index e907e7f7..12171af1 100644 --- a/arch/arm/arm-v7m/cortex-m0+/armcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m0+/armcc/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m0+/gcc/port_c.c b/arch/arm/arm-v7m/cortex-m0+/gcc/port_c.c index e907e7f7..12171af1 100644 --- a/arch/arm/arm-v7m/cortex-m0+/gcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m0+/gcc/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m0+/iccarm/port_c.c b/arch/arm/arm-v7m/cortex-m0+/iccarm/port_c.c index e907e7f7..12171af1 100644 --- a/arch/arm/arm-v7m/cortex-m0+/iccarm/port_c.c +++ b/arch/arm/arm-v7m/cortex-m0+/iccarm/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m3/armcc/port_c.c b/arch/arm/arm-v7m/cortex-m3/armcc/port_c.c index e51dd641..4fc5e5b3 100644 --- a/arch/arm/arm-v7m/cortex-m3/armcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m3/armcc/port_c.c @@ -84,17 +84,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m3/gcc/port_c.c b/arch/arm/arm-v7m/cortex-m3/gcc/port_c.c index 72ec7d56..a082ed26 100644 --- a/arch/arm/arm-v7m/cortex-m3/gcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m3/gcc/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m4/armcc/port_c.c b/arch/arm/arm-v7m/cortex-m4/armcc/port_c.c index 625a550a..43497d09 100644 --- a/arch/arm/arm-v7m/cortex-m4/armcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m4/armcc/port_c.c @@ -89,17 +89,7 @@ __PORT__ k_cycle_t port_systick_max_reload_cycle(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m4/gcc/port_c.c b/arch/arm/arm-v7m/cortex-m4/gcc/port_c.c index e59dbe08..ba807cb2 100644 --- a/arch/arm/arm-v7m/cortex-m4/gcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m4/gcc/port_c.c @@ -84,17 +84,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m4/iccarm/port_c.c b/arch/arm/arm-v7m/cortex-m4/iccarm/port_c.c index 625a550a..43497d09 100644 --- a/arch/arm/arm-v7m/cortex-m4/iccarm/port_c.c +++ b/arch/arm/arm-v7m/cortex-m4/iccarm/port_c.c @@ -89,17 +89,7 @@ __PORT__ k_cycle_t port_systick_max_reload_cycle(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m7/armcc/port_c.c b/arch/arm/arm-v7m/cortex-m7/armcc/port_c.c index eabb3fe0..fbe1a908 100644 --- a/arch/arm/arm-v7m/cortex-m7/armcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m7/armcc/port_c.c @@ -89,17 +89,7 @@ __PORT__ k_cycle_t port_systick_max_reload_cycle(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m7/gcc/port_c.c b/arch/arm/arm-v7m/cortex-m7/gcc/port_c.c index 931759e4..a03a2a49 100644 --- a/arch/arm/arm-v7m/cortex-m7/gcc/port_c.c +++ b/arch/arm/arm-v7m/cortex-m7/gcc/port_c.c @@ -67,17 +67,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v7m/cortex-m7/iccarm/port_c.c b/arch/arm/arm-v7m/cortex-m7/iccarm/port_c.c index 1734907d..830be415 100644 --- a/arch/arm/arm-v7m/cortex-m7/iccarm/port_c.c +++ b/arch/arm/arm-v7m/cortex-m7/iccarm/port_c.c @@ -72,17 +72,7 @@ __PORT__ k_cycle_t port_systick_max_reload_cycle(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c b/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c index 6705e877..8334620a 100644 --- a/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c +++ b/arch/arm/arm-v8m/cortex-m23/armcc/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v8m/cortex-m23/gcc/port_c.c b/arch/arm/arm-v8m/cortex-m23/gcc/port_c.c index e907e7f7..12171af1 100644 --- a/arch/arm/arm-v8m/cortex-m23/gcc/port_c.c +++ b/arch/arm/arm-v8m/cortex-m23/gcc/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/arm/arm-v8m/cortex-m23/iccarm/port_c.c b/arch/arm/arm-v8m/cortex-m23/iccarm/port_c.c index e907e7f7..12171af1 100644 --- a/arch/arm/arm-v8m/cortex-m23/iccarm/port_c.c +++ b/arch/arm/arm-v8m/cortex-m23/iccarm/port_c.c @@ -59,17 +59,7 @@ __PORT__ void port_systick_suspend(void) __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; + port_systick_config(cycle_per_tick); } __PORT__ void port_systick_pending_reset(void) diff --git a/arch/avr/ATMega32/iccavr/port_c.c b/arch/avr/ATMega32/iccavr/port_c.c index e258b678..01e20a32 100644 --- a/arch/avr/ATMega32/iccavr/port_c.c +++ b/arch/avr/ATMega32/iccavr/port_c.c @@ -44,72 +44,40 @@ __PORT__ void port_cpu_reset(void) { -#if 0 - NVIC_SystemReset(); -#endif } __PORT__ void port_systick_config(uint32_t cycle_per_tick) { -#if 0 - (void)SysTick_Config(cycle_per_tick); -#endif } __PORT__ void port_systick_priority_set(uint32_t prio) { -#if 0 - NVIC_SetPriority(SysTick_IRQn, prio); -#endif } #if TOS_CFG_TICKLESS_EN > 0u __PORT__ k_time_t port_systick_max_delay_millisecond(void) { - k_time_t max_millisecond; - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - max_millisecond = (k_time_t)((uint64_t)max_cycle * K_TIME_MILLISEC_PER_SEC / TOS_CFG_CPU_CLOCK); // CLOCK: cycle per second - return max_millisecond; } __PORT__ void port_systick_resume(void) { - SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; - SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } __PORT__ void port_systick_suspend(void) { - SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; - SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; } __PORT__ k_cycle_t port_systick_max_reload_cycle(void) { - return SysTick_LOAD_RELOAD_Msk; } __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; } __PORT__ void port_systick_pending_reset(void) { - SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; } #endif diff --git a/arch/risc-v/rv32i/gcc/port_c.c b/arch/risc-v/rv32i/gcc/port_c.c index bedfd991..bedaab67 100644 --- a/arch/risc-v/rv32i/gcc/port_c.c +++ b/arch/risc-v/rv32i/gcc/port_c.c @@ -48,3 +48,4 @@ __PORT__ void port_systick_config(uint32_t cycle_per_tick) *(volatile uint32_t *)(CLINT_CTRL_ADDR + CLINT_MTIMECMP + 4) = 0xFFFFFFFF & (mtimecmp >> 32); *(volatile uint32_t *)(CLINT_CTRL_ADDR + CLINT_MTIMECMP + 0) = 0xFFFFFFFF & (mtimecmp >> 0); } + diff --git a/arch/stm8/iccstm8/port_c.c b/arch/stm8/iccstm8/port_c.c index e258b678..01e20a32 100644 --- a/arch/stm8/iccstm8/port_c.c +++ b/arch/stm8/iccstm8/port_c.c @@ -44,72 +44,40 @@ __PORT__ void port_cpu_reset(void) { -#if 0 - NVIC_SystemReset(); -#endif } __PORT__ void port_systick_config(uint32_t cycle_per_tick) { -#if 0 - (void)SysTick_Config(cycle_per_tick); -#endif } __PORT__ void port_systick_priority_set(uint32_t prio) { -#if 0 - NVIC_SetPriority(SysTick_IRQn, prio); -#endif } #if TOS_CFG_TICKLESS_EN > 0u __PORT__ k_time_t port_systick_max_delay_millisecond(void) { - k_time_t max_millisecond; - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - max_millisecond = (k_time_t)((uint64_t)max_cycle * K_TIME_MILLISEC_PER_SEC / TOS_CFG_CPU_CLOCK); // CLOCK: cycle per second - return max_millisecond; } __PORT__ void port_systick_resume(void) { - SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; - SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } __PORT__ void port_systick_suspend(void) { - SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; - SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; } __PORT__ k_cycle_t port_systick_max_reload_cycle(void) { - return SysTick_LOAD_RELOAD_Msk; } __PORT__ void port_systick_reload(uint32_t cycle_per_tick) { - uint32_t max_cycle; - - max_cycle = SysTick_LOAD_RELOAD_Msk; // 24 bit - - if (max_cycle - SysTick->VAL > cycle_per_tick - 1u) { - SysTick->LOAD = max_cycle; - } else { - SysTick->LOAD = (cycle_per_tick - 1u) + SysTick->VAL; - } - - SysTick->VAL = 0; } __PORT__ void port_systick_pending_reset(void) { - SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk; } #endif diff --git a/components/fs/kv/tos_kv.c b/components/fs/kv/tos_kv.c index 924e24f1..d692f7fc 100644 --- a/components/fs/kv/tos_kv.c +++ b/components/fs/kv/tos_kv.c @@ -1215,11 +1215,6 @@ __API__ kv_err_t tos_kv_init(uint32_t flash_start, uint32_t flash_end, kv_flash_ kv_mgr_ctl_build(); - printf("fresh: %d\n", KV_MGR_BLK_NUM_FRESH); - printf("hanging: %d\n", KV_MGR_BLK_NUM_HANGING); - printf("inuse: %d\n", KV_MGR_BLK_NUM_INUSE); - printf("total: %d\n", KV_MGR_BLK_NUM_TOTAL); - return kv_mgr_workspace_locate(); } diff --git a/kernel/pm/tos_pm.c b/kernel/pm/tos_pm.c index fa1caa48..66420d54 100644 --- a/kernel/pm/tos_pm.c +++ b/kernel/pm/tos_pm.c @@ -24,7 +24,8 @@ __API__ k_err_t tos_pm_cpu_lpwr_mode_set(k_cpu_lpwr_mode_t cpu_lpwr_mode) { TOS_CPU_CPSR_ALLOC(); - if (!tickless_wkup_alarm_is_installed(cpu_lpwr_mode)) { + if (cpu_lpwr_mode != TOS_LOW_POWER_MODE_NONE && + !tickless_wkup_alarm_is_installed(cpu_lpwr_mode)) { return K_ERR_PM_WKUP_SOURCE_NOT_INSTALL; } diff --git a/kernel/pm/tos_tickless.c b/kernel/pm/tos_tickless.c index a675418a..4446eacd 100644 --- a/kernel/pm/tos_tickless.c +++ b/kernel/pm/tos_tickless.c @@ -143,11 +143,8 @@ __KNL__ void tickless_proc(void) k_cpu_lpwr_mode_t lpwr_mode; lpwr_mode = pm_cpu_lpwr_mode_get(); - if (lpwr_mode == TOS_LOW_POWER_MODE_NONE) { - return; - } - - if (!tickless_wkup_alarm_is_installed(lpwr_mode)) { + if (lpwr_mode == TOS_LOW_POWER_MODE_NONE || + !tickless_wkup_alarm_is_installed(lpwr_mode)) { return; }