From bad8c3d53bda1d057197604dfe45066b08cdf0c8 Mon Sep 17 00:00:00 2001 From: zhushengle Date: Sat, 17 Apr 2021 16:07:51 +0800 Subject: [PATCH] IssueNo:#I3IK07 Description:LOS_SysCycleGet replace HalCpuCycleGet Sig:kernel Feature or Bugfix:Feature Binary Source:No Change-Id: Ife3a4d351818f718f58d3624b5ee6dd127113378 --- components/cpup/los_cpup.c | 18 ++++----------- .../net/lwip-2.1/porting/src/sys_arch.c | 5 ++-- kal/cmsis/cmsis_liteos2.c | 3 +-- kal/posix/src/time.c | 13 ++++------- kernel/arch/arm/cortex-m3/keil/los_timer.c | 13 ----------- kernel/arch/arm/cortex-m33/gcc/los_timer.c | 13 ----------- kernel/arch/arm/cortex-m4/gcc/los_timer.c | 13 ----------- kernel/arch/arm/cortex-m4/iar/los_timer.c | 13 ----------- kernel/arch/arm/cortex-m7/gcc/los_timer.c | 13 ----------- kernel/arch/arm/cortex-m7/iar/los_timer.c | 13 ----------- kernel/arch/include/los_timer.h | 23 ------------------- kernel/arch/risc-v/riscv32/gcc/los_timer.c | 15 ------------ kernel/include/los_tick.h | 8 +++---- kernel/src/los_tick.c | 5 ++-- 14 files changed, 19 insertions(+), 149 deletions(-) diff --git a/components/cpup/los_cpup.c b/components/cpup/los_cpup.c index 4456d592..13d9427e 100755 --- a/components/cpup/los_cpup.c +++ b/components/cpup/los_cpup.c @@ -33,7 +33,8 @@ #include "securec.h" #include "los_memory.h" #include "los_debug.h" -#include "los_timer.h" +#include "los_tick.h" + #ifdef __cplusplus #if __cplusplus extern "C" { @@ -61,15 +62,6 @@ LITE_OS_SEC_BSS OsCpupCB *g_cpup = NULL; LITE_OS_SEC_BSS UINT64 g_lastRecordTime; LITE_OS_SEC_BSS UINT16 g_hisPos; /* taskID; g_cpup[taskID].cpupID = taskID; - g_cpup[taskID].startTime = OsGetCurrentCyclesCount(); + g_cpup[taskID].startTime = LOS_SysCycleGet(); return; } @@ -135,7 +127,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEnd(VOID) return; } - cpuCycle = OsGetCurrentCyclesCount(); + cpuCycle = LOS_SysCycleGet(); if (cpuCycle < g_cpup[taskID].startTime) { cpuCycle += g_cyclesPerTick; @@ -163,7 +155,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEndStart(VOID) } taskID = g_losTask.runTask->taskID; - cpuCycle = OsGetCurrentCyclesCount(); + cpuCycle = LOS_SysCycleGet(); if (g_cpup[taskID].startTime != 0) { if (cpuCycle < g_cpup[taskID].startTime) { diff --git a/components/net/lwip-2.1/porting/src/sys_arch.c b/components/net/lwip-2.1/porting/src/sys_arch.c index f0c332df..82dadc43 100755 --- a/components/net/lwip-2.1/porting/src/sys_arch.c +++ b/components/net/lwip-2.1/porting/src/sys_arch.c @@ -38,7 +38,7 @@ #include #include #include "cmsis_os2.h" -#include +#include #include #ifndef LOSCFG_KERNEL_SMP @@ -82,8 +82,7 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, void sys_init(void) { /* set rand seed to make random sequence diff on every startup */ - UINT32 seedhsb, seedlsb; - HalGetCpuCycle(&seedhsb, &seedlsb); + UINT32 seedlsb = (UINT32)LOS_SysCycleGet(); srand(seedlsb); } diff --git a/kal/cmsis/cmsis_liteos2.c b/kal/cmsis/cmsis_liteos2.c index bc5d5afd..e0b00ed7 100755 --- a/kal/cmsis/cmsis_liteos2.c +++ b/kal/cmsis/cmsis_liteos2.c @@ -264,12 +264,11 @@ uint32_t osKernelGetTickFreq(void) uint32_t osKernelGetSysTimerCount(void) { - uint32_t countHigh = 0; uint32_t countLow = 0; if (OS_INT_ACTIVE) { countLow = 0U; } else { - HalGetCpuCycle((UINT32 *)&countHigh, (UINT32 *)&countLow); + countLow = (UINT32)LOS_SysCycleGet(); } return countLow; } diff --git a/kal/posix/src/time.c b/kal/posix/src/time.c index 798310ee..b6c6facf 100644 --- a/kal/posix/src/time.c +++ b/kal/posix/src/time.c @@ -40,7 +40,7 @@ #include "los_debug.h" #include "los_task.h" #include "los_swtmr.h" -#include "los_timer.h" +#include "los_tick.h" #include "los_context.h" /* accumulative time delta from discontinuous modify */ @@ -244,13 +244,10 @@ int timer_getoverrun(timer_t timerID) STATIC VOID OsGetHwTime(struct timespec *hwTime) { - UINT64 nowNsec; - UINT32 countHigh = 0; - UINT32 countLow = 0; - HalGetCpuCycle(&countHigh, &countLow); - nowNsec = (((UINT64)countHigh * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK) << 32) + - ((((UINT64)countHigh * OS_SYS_NS_PER_SECOND % OS_SYS_CLOCK) << 32) / OS_SYS_CLOCK) + - ((UINT64)countLow * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK); + UINT64 cycle = LOS_SysCycleGet(); + UINT64 nowNsec = (cycle / OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND + + (cycle % OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK; + hwTime->tv_sec = nowNsec / OS_SYS_NS_PER_SECOND; hwTime->tv_nsec = nowNsec % OS_SYS_NS_PER_SECOND; } diff --git a/kernel/arch/arm/cortex-m3/keil/los_timer.c b/kernel/arch/arm/cortex-m3/keil/los_timer.c index bf871fea..18ee295c 100644 --- a/kernel/arch/arm/cortex-m3/keil/los_timer.c +++ b/kernel/arch/arm/cortex-m3/keil/los_timer.c @@ -109,19 +109,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/arm/cortex-m33/gcc/los_timer.c b/kernel/arch/arm/cortex-m33/gcc/los_timer.c index eaa4c0af..006bfc96 100644 --- a/kernel/arch/arm/cortex-m33/gcc/los_timer.c +++ b/kernel/arch/arm/cortex-m33/gcc/los_timer.c @@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/arm/cortex-m4/gcc/los_timer.c b/kernel/arch/arm/cortex-m4/gcc/los_timer.c index eaa4c0af..006bfc96 100644 --- a/kernel/arch/arm/cortex-m4/gcc/los_timer.c +++ b/kernel/arch/arm/cortex-m4/gcc/los_timer.c @@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/arm/cortex-m4/iar/los_timer.c b/kernel/arch/arm/cortex-m4/iar/los_timer.c index eaa4c0af..006bfc96 100644 --- a/kernel/arch/arm/cortex-m4/iar/los_timer.c +++ b/kernel/arch/arm/cortex-m4/iar/los_timer.c @@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/arm/cortex-m7/gcc/los_timer.c b/kernel/arch/arm/cortex-m7/gcc/los_timer.c index eaa4c0af..006bfc96 100644 --- a/kernel/arch/arm/cortex-m7/gcc/los_timer.c +++ b/kernel/arch/arm/cortex-m7/gcc/los_timer.c @@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/arm/cortex-m7/iar/los_timer.c b/kernel/arch/arm/cortex-m7/iar/los_timer.c index eaa4c0af..006bfc96 100644 --- a/kernel/arch/arm/cortex-m7/iar/los_timer.c +++ b/kernel/arch/arm/cortex-m7/iar/los_timer.c @@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID) SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; } -VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/arch/include/los_timer.h b/kernel/arch/include/los_timer.h index 1f773d20..bc09a703 100644 --- a/kernel/arch/include/los_timer.h +++ b/kernel/arch/include/los_timer.h @@ -113,29 +113,6 @@ UINT64 HalGetTickCycle(UINT32 *period); */ extern VOID HalSysTickReload(UINT64 nextResponseTime); -/* * - * @ingroup los_hwi - * @brief Get value from xPSR register. - * - * @par Description: - *
    - *
  • This API is used to Get value from xPSR register.
  • - *
- * @attention - *
    - *
  • None.
  • - *
- * - * @param cntHi [IN] CpuTick High 4 byte - * @param cntLo [IN] CpuTick Low 4 byte - * - * @retval None. - * @par Dependency: - *
  • los_hwi.h: the header file that contains the API declaration.
- * @see LOS_IntRestore - */ -extern VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo); - #ifdef __cplusplus #if __cplusplus } diff --git a/kernel/arch/risc-v/riscv32/gcc/los_timer.c b/kernel/arch/risc-v/riscv32/gcc/los_timer.c index b8bd84ac..3e2fd6d1 100644 --- a/kernel/arch/risc-v/riscv32/gcc/los_timer.c +++ b/kernel/arch/risc-v/riscv32/gcc/los_timer.c @@ -44,7 +44,6 @@ extern "C" { #endif /* __cplusplus */ #endif /* __cplusplus */ - WEAK UINT32 HalTickStart(OS_TICK_HANDLER handler) { g_sysClock = OS_SYS_CLOCK; @@ -82,20 +81,6 @@ WEAK UINT64 HalGetTickCycle(UINT32 *period) return OS_COMBINED_64(timerH, timerL); } -WEAK VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo) -{ - UINT64 cycle; - - if ((cntHi == NULL) || (cntLo == NULL)) { - return; - } - - cycle = OsGetCurrSchedTimeCycle(); - *cntHi = cycle >> SHIFT_32_BIT; - *cntLo = cycle & CYCLE_CHECK; - return; -} - VOID HalEnterSleep(LOS_SysSleepEnum sleep) { #if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1) diff --git a/kernel/include/los_tick.h b/kernel/include/los_tick.h index f4a884c9..e4391add 100644 --- a/kernel/include/los_tick.h +++ b/kernel/include/los_tick.h @@ -79,24 +79,24 @@ extern "C" { /** * @ingroup los_tick - * @brief: System clock get function. + * @brief: System timer cycles get function. * * @par Description: - * This API is used to get system clock. + * This API is used to get system timer cycles. * * @attention: *
  • None.
* * @param: None. * - * @retval: system clock. + * @retval: current system cycles. * * @par Dependency: *
  • los_tick.h: the header file that contains the API declaration.
* @see None. * * */ -extern UINT32 LOS_SysClockGet(VOID); +extern UINT64 LOS_SysCycleGet(VOID); /** * @ingroup los_sys diff --git a/kernel/src/los_tick.c b/kernel/src/los_tick.c index 023abd82..40079c94 100644 --- a/kernel/src/los_tick.c +++ b/kernel/src/los_tick.c @@ -63,12 +63,11 @@ LITE_OS_SEC_TEXT VOID OsTickHandler(VOID) LOS_SchedTickHandler(); } -UINT32 LOS_SysClockGet(VOID) +UINT64 LOS_SysCycleGet(VOID) { - return g_sysClock; + return OsGetCurrSchedTimeCycle(); } - /***************************************************************************** Function : LOS_TickCountGet Description : get current tick