From f91089b57809543afe0b40257002efbe41f8c089 Mon Sep 17 00:00:00 2001 From: tangweikang Date: Tue, 8 Dec 2020 10:48:22 +0800 Subject: [BSP][STM32] update void HAL_Delay(__IO uint32_t Delay) --- src/scheduler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/scheduler.c b/src/scheduler.c index 677be6cff7..06f305ea0b 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -43,7 +43,7 @@ rt_uint8_t rt_thread_ready_table[32]; #ifndef RT_USING_SMP extern volatile rt_uint8_t rt_interrupt_nest; static rt_int16_t rt_scheduler_lock_nest; -struct rt_thread *rt_current_thread; +struct rt_thread *rt_current_thread = RT_NULL; rt_uint8_t rt_current_priority; #endif /*RT_USING_SMP*/ -- cgit v1.3.1 From b71a0eb1d433530046fba732d0a506de7a67a6ee Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 25 Dec 2020 15:06:55 +0800 Subject: add rt_memory_info() for memheap.c --- src/memheap.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/memheap.c b/src/memheap.c index 0ff6925696..afa06fb9bf 100644 --- a/src/memheap.c +++ b/src/memheap.c @@ -712,6 +712,20 @@ void *rt_calloc(rt_size_t count, rt_size_t size) } RTM_EXPORT(rt_calloc); +void rt_memory_info(rt_uint32_t *total, + rt_uint32_t *used, + rt_uint32_t *max_used) +{ + if (total != RT_NULL) + *total = _heap.pool_size; + + if (used != RT_NULL) + *used = _heap.pool_size - _heap.available_size; + + if (max_used != RT_NULL) + *max_used = _heap.max_used_size; +} + #endif #endif -- cgit v1.3.1 From c2e15e003c60fd0aeb412dbc7c6deb1c1f55a0ef Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 29 Dec 2020 00:08:24 +0800 Subject: add function rt_hw_1ms_tick_get() --- bsp/stm32/libraries/HAL_Drivers/drv_common.c | 2 +- components/net/lwip-1.4.1/src/arch/sys_arch.c | 3 ++- components/net/lwip-2.0.2/src/arch/sys_arch.c | 3 ++- components/net/lwip-2.1.2/src/arch/sys_arch.c | 3 ++- include/rthw.h | 5 +++++ src/clock.c | 17 +++++++++++++++++ 6 files changed, 29 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_common.c b/bsp/stm32/libraries/HAL_Drivers/drv_common.c index f150d81fef..c6fb516b0e 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_common.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_common.c @@ -58,7 +58,7 @@ void SysTick_Handler(void) uint32_t HAL_GetTick(void) { - return rt_tick_get() * 1000 / RT_TICK_PER_SECOND; + return rt_hw_1ms_tick_get(); } void HAL_SuspendTick(void) diff --git a/components/net/lwip-1.4.1/src/arch/sys_arch.c b/components/net/lwip-1.4.1/src/arch/sys_arch.c index 2392dde2fa..0919c29e01 100644 --- a/components/net/lwip-1.4.1/src/arch/sys_arch.c +++ b/components/net/lwip-1.4.1/src/arch/sys_arch.c @@ -32,6 +32,7 @@ */ #include +#include #include "lwip/sys.h" #include "lwip/opt.h" @@ -617,7 +618,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_tick_get() * (1000 / RT_TICK_PER_SECOND); + return rt_hw_1ms_tick_get(); } #ifdef RT_LWIP_PPP diff --git a/components/net/lwip-2.0.2/src/arch/sys_arch.c b/components/net/lwip-2.0.2/src/arch/sys_arch.c index 40c79011ec..1404628a60 100644 --- a/components/net/lwip-2.0.2/src/arch/sys_arch.c +++ b/components/net/lwip-2.0.2/src/arch/sys_arch.c @@ -32,6 +32,7 @@ */ #include +#include #include "lwip/sys.h" #include "lwip/opt.h" @@ -627,7 +628,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_tick_get() * (1000 / RT_TICK_PER_SECOND); + return rt_hw_1ms_tick_get(); } diff --git a/components/net/lwip-2.1.2/src/arch/sys_arch.c b/components/net/lwip-2.1.2/src/arch/sys_arch.c index 0633501bb6..8905765440 100644 --- a/components/net/lwip-2.1.2/src/arch/sys_arch.c +++ b/components/net/lwip-2.1.2/src/arch/sys_arch.c @@ -33,6 +33,7 @@ */ #include +#include #include "lwip/sys.h" #include "lwip/opt.h" @@ -641,7 +642,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_tick_get() * (1000 / RT_TICK_PER_SECOND); + return rt_hw_1ms_tick_get(); } #if MEM_OVERFLOW_CHECK || MEMP_OVERFLOW_CHECK diff --git a/include/rthw.h b/include/rthw.h index 89877faf90..c3960350b8 100644 --- a/include/rthw.h +++ b/include/rthw.h @@ -134,6 +134,11 @@ void rt_hw_exception_install(rt_err_t (*exception_handle)(void *context)); */ void rt_hw_us_delay(rt_uint32_t us); +/* + * provides a tick value ALWAYS in millisecond + */ +rt_tick_t rt_hw_1ms_tick_get(void); + #ifdef RT_USING_SMP typedef union { unsigned long slock; diff --git a/src/clock.c b/src/clock.c index 9fd276cf6f..778126fb23 100644 --- a/src/clock.c +++ b/src/clock.c @@ -13,6 +13,7 @@ * 2010-07-13 Bernard fix rt_tick_from_millisecond issue found by kuronca * 2011-06-26 Bernard add rt_tick_set function. * 2018-11-22 Jesven add per cpu tick + * 2020-12-29 Meco Man add function rt_hw_1ms_tick_get() */ #include @@ -116,5 +117,21 @@ rt_tick_t rt_tick_from_millisecond(rt_int32_t ms) } RTM_EXPORT(rt_tick_from_millisecond); +/** + * This function provides a tick value ALWAYS in millisecond + * + * @return 1ms-based tick + */ +RT_WEAK rt_tick_t rt_hw_1ms_tick_get(void) +{ +#if 1000 % RT_TICK_PER_SECOND == 0 + return rt_tick_get() * (1000U / RT_TICK_PER_SECOND); +#else + #warning "rt-thread cannot provide a correct 1ms-based tick any longer,\ + please redefine this function in another file by using a high-precision hard-timer." + return 0; +#endif +} + /**@}*/ -- cgit v1.3.1 From 3d5e79248d284dd277f4c93126fc0f1a4ca0969e Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 29 Dec 2020 00:49:18 +0800 Subject: [kernel] 对IPC中减减进行摸排,防止出现减出一个很大的数 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ipc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ipc.c b/src/ipc.c index 454fcb5439..4261f617b0 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -1764,8 +1764,12 @@ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout) ++ mb->out_offset; if (mb->out_offset >= mb->size) mb->out_offset = 0; + /* decrease message entry */ - mb->entry --; + if(mb->entry > 0) + { + mb->entry --; + } /* resume suspended thread */ if (!rt_list_isempty(&(mb->suspend_sender_thread))) @@ -2439,7 +2443,10 @@ rt_err_t rt_mq_recv(rt_mq_t mq, mq->msg_queue_tail = RT_NULL; /* decrease message entry */ - mq->entry --; + if(mq->entry > 0) + { + mq->entry --; + } /* enable interrupt */ rt_hw_interrupt_enable(temp); -- cgit v1.3.1 From 63cd26b0d1a876cb8d87c3d60d5591d89dfbf297 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 30 Dec 2020 16:32:20 +0800 Subject: update --- bsp/stm32/libraries/HAL_Drivers/drv_common.c | 2 +- components/net/lwip-1.4.1/src/arch/sys_arch.c | 2 +- components/net/lwip-2.0.2/src/arch/sys_arch.c | 2 +- components/net/lwip-2.1.2/src/arch/sys_arch.c | 2 +- include/rthw.h | 5 ----- include/rtthread.h | 1 + src/clock.c | 10 +++++----- 7 files changed, 10 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_common.c b/bsp/stm32/libraries/HAL_Drivers/drv_common.c index c6fb516b0e..d868d63dfc 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_common.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_common.c @@ -58,7 +58,7 @@ void SysTick_Handler(void) uint32_t HAL_GetTick(void) { - return rt_hw_1ms_tick_get(); + return rt_tick_get_millisecond(); } void HAL_SuspendTick(void) diff --git a/components/net/lwip-1.4.1/src/arch/sys_arch.c b/components/net/lwip-1.4.1/src/arch/sys_arch.c index 0919c29e01..2f6dbb4143 100644 --- a/components/net/lwip-1.4.1/src/arch/sys_arch.c +++ b/components/net/lwip-1.4.1/src/arch/sys_arch.c @@ -618,7 +618,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_hw_1ms_tick_get(); + return rt_tick_get_millisecond(); } #ifdef RT_LWIP_PPP diff --git a/components/net/lwip-2.0.2/src/arch/sys_arch.c b/components/net/lwip-2.0.2/src/arch/sys_arch.c index 1404628a60..fbf02cad0a 100644 --- a/components/net/lwip-2.0.2/src/arch/sys_arch.c +++ b/components/net/lwip-2.0.2/src/arch/sys_arch.c @@ -628,7 +628,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_hw_1ms_tick_get(); + return rt_tick_get_millisecond(); } diff --git a/components/net/lwip-2.1.2/src/arch/sys_arch.c b/components/net/lwip-2.1.2/src/arch/sys_arch.c index 8905765440..a0eeed1073 100644 --- a/components/net/lwip-2.1.2/src/arch/sys_arch.c +++ b/components/net/lwip-2.1.2/src/arch/sys_arch.c @@ -642,7 +642,7 @@ u32_t sys_jiffies(void) u32_t sys_now(void) { - return rt_hw_1ms_tick_get(); + return rt_tick_get_millisecond(); } #if MEM_OVERFLOW_CHECK || MEMP_OVERFLOW_CHECK diff --git a/include/rthw.h b/include/rthw.h index c3960350b8..89877faf90 100644 --- a/include/rthw.h +++ b/include/rthw.h @@ -134,11 +134,6 @@ void rt_hw_exception_install(rt_err_t (*exception_handle)(void *context)); */ void rt_hw_us_delay(rt_uint32_t us); -/* - * provides a tick value ALWAYS in millisecond - */ -rt_tick_t rt_hw_1ms_tick_get(void); - #ifdef RT_USING_SMP typedef union { unsigned long slock; diff --git a/include/rtthread.h b/include/rtthread.h index 27cfea19e0..1e0094e73b 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -77,6 +77,7 @@ rt_tick_t rt_tick_get(void); void rt_tick_set(rt_tick_t tick); void rt_tick_increase(void); rt_tick_t rt_tick_from_millisecond(rt_int32_t ms); +rt_tick_t rt_tick_get_millisecond(void); void rt_system_timer_init(void); void rt_system_timer_thread_init(void); diff --git a/src/clock.c b/src/clock.c index 778126fb23..24456fb23d 100644 --- a/src/clock.c +++ b/src/clock.c @@ -118,14 +118,14 @@ rt_tick_t rt_tick_from_millisecond(rt_int32_t ms) RTM_EXPORT(rt_tick_from_millisecond); /** - * This function provides a tick value ALWAYS in millisecond + * This function will provide the passed millisecond from boot. * - * @return 1ms-based tick + * @return passed millisecond from boot */ -RT_WEAK rt_tick_t rt_hw_1ms_tick_get(void) +RT_WEAK rt_tick_t rt_tick_get_millisecond(void) { -#if 1000 % RT_TICK_PER_SECOND == 0 - return rt_tick_get() * (1000U / RT_TICK_PER_SECOND); +#if 1000 % RT_TICK_PER_SECOND == 0u + return rt_tick_get() * (1000u / RT_TICK_PER_SECOND); #else #warning "rt-thread cannot provide a correct 1ms-based tick any longer,\ please redefine this function in another file by using a high-precision hard-timer." -- cgit v1.3.1 From a1f4d93fc57364a7b161c6f57a35a8f05df9a401 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 30 Dec 2020 16:33:30 +0800 Subject: update --- src/clock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/clock.c b/src/clock.c index 24456fb23d..66923e5c00 100644 --- a/src/clock.c +++ b/src/clock.c @@ -13,7 +13,7 @@ * 2010-07-13 Bernard fix rt_tick_from_millisecond issue found by kuronca * 2011-06-26 Bernard add rt_tick_set function. * 2018-11-22 Jesven add per cpu tick - * 2020-12-29 Meco Man add function rt_hw_1ms_tick_get() + * 2020-12-29 Meco Man add function rt_tick_get_millisecond() */ #include -- cgit v1.3.1