IssueNo:#I3IK07
Description:LOS_SysCycleGet replace HalCpuCycleGet Sig:kernel Feature or Bugfix:Feature Binary Source:No Change-Id: Ife3a4d351818f718f58d3624b5ee6dd127113378
This commit is contained in:
parent
c5f517667a
commit
bad8c3d53b
|
@ -33,7 +33,8 @@
|
||||||
#include "securec.h"
|
#include "securec.h"
|
||||||
#include "los_memory.h"
|
#include "los_memory.h"
|
||||||
#include "los_debug.h"
|
#include "los_debug.h"
|
||||||
#include "los_timer.h"
|
#include "los_tick.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
extern "C" {
|
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 UINT64 g_lastRecordTime;
|
||||||
LITE_OS_SEC_BSS UINT16 g_hisPos; /* <current Sampling point of historyTime */
|
LITE_OS_SEC_BSS UINT16 g_hisPos; /* <current Sampling point of historyTime */
|
||||||
|
|
||||||
|
|
||||||
LITE_OS_SEC_TEXT_MINOR STATIC INLINE UINT64 OsGetCurrentCyclesCount(VOID)
|
|
||||||
{
|
|
||||||
UINT32 high = 0;
|
|
||||||
UINT32 low = 0;
|
|
||||||
HalGetCpuCycle(&high, &low);
|
|
||||||
return (((UINT64)high << 32) + low); // 32 means bits of word
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Function : OsCpupInit
|
Function : OsCpupInit
|
||||||
Description: initialization of CPUP
|
Description: initialization of CPUP
|
||||||
|
@ -110,7 +102,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleStart(VOID)
|
||||||
|
|
||||||
taskID = g_losTask.newTask->taskID;
|
taskID = g_losTask.newTask->taskID;
|
||||||
g_cpup[taskID].cpupID = taskID;
|
g_cpup[taskID].cpupID = taskID;
|
||||||
g_cpup[taskID].startTime = OsGetCurrentCyclesCount();
|
g_cpup[taskID].startTime = LOS_SysCycleGet();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -135,7 +127,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEnd(VOID)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cpuCycle = OsGetCurrentCyclesCount();
|
cpuCycle = LOS_SysCycleGet();
|
||||||
|
|
||||||
if (cpuCycle < g_cpup[taskID].startTime) {
|
if (cpuCycle < g_cpup[taskID].startTime) {
|
||||||
cpuCycle += g_cyclesPerTick;
|
cpuCycle += g_cyclesPerTick;
|
||||||
|
@ -163,7 +155,7 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTskCycleEndStart(VOID)
|
||||||
}
|
}
|
||||||
|
|
||||||
taskID = g_losTask.runTask->taskID;
|
taskID = g_losTask.runTask->taskID;
|
||||||
cpuCycle = OsGetCurrentCyclesCount();
|
cpuCycle = LOS_SysCycleGet();
|
||||||
|
|
||||||
if (g_cpup[taskID].startTime != 0) {
|
if (g_cpup[taskID].startTime != 0) {
|
||||||
if (cpuCycle < g_cpup[taskID].startTime) {
|
if (cpuCycle < g_cpup[taskID].startTime) {
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include <los_sem.h>
|
#include <los_sem.h>
|
||||||
#include <los_mux.h>
|
#include <los_mux.h>
|
||||||
#include "cmsis_os2.h"
|
#include "cmsis_os2.h"
|
||||||
#include <los_timer.h>
|
#include <los_tick.h>
|
||||||
#include <los_config.h>
|
#include <los_config.h>
|
||||||
|
|
||||||
#ifndef LOSCFG_KERNEL_SMP
|
#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)
|
void sys_init(void)
|
||||||
{
|
{
|
||||||
/* set rand seed to make random sequence diff on every startup */
|
/* set rand seed to make random sequence diff on every startup */
|
||||||
UINT32 seedhsb, seedlsb;
|
UINT32 seedlsb = (UINT32)LOS_SysCycleGet();
|
||||||
HalGetCpuCycle(&seedhsb, &seedlsb);
|
|
||||||
srand(seedlsb);
|
srand(seedlsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -264,12 +264,11 @@ uint32_t osKernelGetTickFreq(void)
|
||||||
|
|
||||||
uint32_t osKernelGetSysTimerCount(void)
|
uint32_t osKernelGetSysTimerCount(void)
|
||||||
{
|
{
|
||||||
uint32_t countHigh = 0;
|
|
||||||
uint32_t countLow = 0;
|
uint32_t countLow = 0;
|
||||||
if (OS_INT_ACTIVE) {
|
if (OS_INT_ACTIVE) {
|
||||||
countLow = 0U;
|
countLow = 0U;
|
||||||
} else {
|
} else {
|
||||||
HalGetCpuCycle((UINT32 *)&countHigh, (UINT32 *)&countLow);
|
countLow = (UINT32)LOS_SysCycleGet();
|
||||||
}
|
}
|
||||||
return countLow;
|
return countLow;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "los_debug.h"
|
#include "los_debug.h"
|
||||||
#include "los_task.h"
|
#include "los_task.h"
|
||||||
#include "los_swtmr.h"
|
#include "los_swtmr.h"
|
||||||
#include "los_timer.h"
|
#include "los_tick.h"
|
||||||
#include "los_context.h"
|
#include "los_context.h"
|
||||||
|
|
||||||
/* accumulative time delta from discontinuous modify */
|
/* accumulative time delta from discontinuous modify */
|
||||||
|
@ -244,13 +244,10 @@ int timer_getoverrun(timer_t timerID)
|
||||||
|
|
||||||
STATIC VOID OsGetHwTime(struct timespec *hwTime)
|
STATIC VOID OsGetHwTime(struct timespec *hwTime)
|
||||||
{
|
{
|
||||||
UINT64 nowNsec;
|
UINT64 cycle = LOS_SysCycleGet();
|
||||||
UINT32 countHigh = 0;
|
UINT64 nowNsec = (cycle / OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND +
|
||||||
UINT32 countLow = 0;
|
(cycle % OS_SYS_CLOCK) * OS_SYS_NS_PER_SECOND / OS_SYS_CLOCK;
|
||||||
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);
|
|
||||||
hwTime->tv_sec = nowNsec / OS_SYS_NS_PER_SECOND;
|
hwTime->tv_sec = nowNsec / OS_SYS_NS_PER_SECOND;
|
||||||
hwTime->tv_nsec = nowNsec % OS_SYS_NS_PER_SECOND;
|
hwTime->tv_nsec = nowNsec % OS_SYS_NS_PER_SECOND;
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,19 +109,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -108,19 +108,6 @@ WEAK VOID HalTickUnlock(VOID)
|
||||||
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -113,29 +113,6 @@ UINT64 HalGetTickCycle(UINT32 *period);
|
||||||
*/
|
*/
|
||||||
extern VOID HalSysTickReload(UINT64 nextResponseTime);
|
extern VOID HalSysTickReload(UINT64 nextResponseTime);
|
||||||
|
|
||||||
/* *
|
|
||||||
* @ingroup los_hwi
|
|
||||||
* @brief Get value from xPSR register.
|
|
||||||
*
|
|
||||||
* @par Description:
|
|
||||||
* <ul>
|
|
||||||
* <li>This API is used to Get value from xPSR register.</li>
|
|
||||||
* </ul>
|
|
||||||
* @attention
|
|
||||||
* <ul>
|
|
||||||
* <li>None.</li>
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
* @param cntHi [IN] CpuTick High 4 byte
|
|
||||||
* @param cntLo [IN] CpuTick Low 4 byte
|
|
||||||
*
|
|
||||||
* @retval None.
|
|
||||||
* @par Dependency:
|
|
||||||
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
||||||
* @see LOS_IntRestore
|
|
||||||
*/
|
|
||||||
extern VOID HalGetCpuCycle(UINT32 *cntHi, UINT32 *cntLo);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,6 @@ extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
|
||||||
WEAK UINT32 HalTickStart(OS_TICK_HANDLER handler)
|
WEAK UINT32 HalTickStart(OS_TICK_HANDLER handler)
|
||||||
{
|
{
|
||||||
g_sysClock = OS_SYS_CLOCK;
|
g_sysClock = OS_SYS_CLOCK;
|
||||||
|
@ -82,20 +81,6 @@ WEAK UINT64 HalGetTickCycle(UINT32 *period)
|
||||||
return OS_COMBINED_64(timerH, timerL);
|
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)
|
VOID HalEnterSleep(LOS_SysSleepEnum sleep)
|
||||||
{
|
{
|
||||||
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
#if (LOSCFG_BASE_CORE_SCHED_SLEEP == 1)
|
||||||
|
|
|
@ -79,24 +79,24 @@ extern "C" {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup los_tick
|
* @ingroup los_tick
|
||||||
* @brief: System clock get function.
|
* @brief: System timer cycles get function.
|
||||||
*
|
*
|
||||||
* @par Description:
|
* @par Description:
|
||||||
* This API is used to get system clock.
|
* This API is used to get system timer cycles.
|
||||||
*
|
*
|
||||||
* @attention:
|
* @attention:
|
||||||
* <ul><li>None.</li></ul>
|
* <ul><li>None.</li></ul>
|
||||||
*
|
*
|
||||||
* @param: None.
|
* @param: None.
|
||||||
*
|
*
|
||||||
* @retval: system clock.
|
* @retval: current system cycles.
|
||||||
*
|
*
|
||||||
* @par Dependency:
|
* @par Dependency:
|
||||||
* <ul><li>los_tick.h: the header file that contains the API declaration.</li></ul>
|
* <ul><li>los_tick.h: the header file that contains the API declaration.</li></ul>
|
||||||
* @see None.
|
* @see None.
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
extern UINT32 LOS_SysClockGet(VOID);
|
extern UINT64 LOS_SysCycleGet(VOID);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup los_sys
|
* @ingroup los_sys
|
||||||
|
|
|
@ -63,12 +63,11 @@ LITE_OS_SEC_TEXT VOID OsTickHandler(VOID)
|
||||||
LOS_SchedTickHandler();
|
LOS_SchedTickHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT32 LOS_SysClockGet(VOID)
|
UINT64 LOS_SysCycleGet(VOID)
|
||||||
{
|
{
|
||||||
return g_sysClock;
|
return OsGetCurrSchedTimeCycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Function : LOS_TickCountGet
|
Function : LOS_TickCountGet
|
||||||
Description : get current tick
|
Description : get current tick
|
||||||
|
|
Loading…
Reference in New Issue