uCOS2_CPU利用率的实现
uCOS2中的利用率作者:JCY此文中是对统计任务理解,若有错误之处请指出,不胜感激!在uCOS2操作系统当中可以得到CPU的利用率,计算利用率是通过一个任务来计算的,任务的名字叫“OSTaskStat()”.如果要使用任务需要将OS_CFG.H头文件中的OS_TASK_STAT_EN宏定义为真。这样你就可以在程序中使用任务统计功能了。如果应用程序打算使用统计任务,那么你必须在主函数当中只建立一开始任务,然后在开始任务中调用OSStatInit(),之后你就可以建立其他任务了。我们知道如果要使用uCOS2操作系统需要在main()函数中调用OSInit()函数,先把此函数的代码复制如下:void OSInit (void){OSInitHookBegin(); /* Call port specific initialization code */OS_InitMisc(); /* Initialize miscellaneous variables */OS_InitRdyList(); /* Initialize the Ready List */OS_InitTCBList(); /* Initialize the free list of OS_TCBs */OS_InitEventList(); /* Initialize the free list of OS_EVENTs */#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)OS_FlagInit(); /* Initialize the event flag structures */#endif#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)OS_MemInit(); /* Initialize the memory manager */#endif#if (OS_Q_EN > 0) && (OS_MAX_QS > 0)OS_QInit(); /* Initialize the message queue structures */#endifOS_InitTaskIdle(); /* Create the Idle Task */#if OS_TASK_STAT_EN > 0OS_InitTaskStat(); /* Create the Statistic Task */#endif#if OS_TMR_EN > 0OSTmr_Init(); /* Initialize the Timer Manager */#endifOSInitHookEnd(); /* Call port specific init. code */#if OS_DEBUG_EN > 0OSDebugInit();#endif}在函数中会看到如下代码:OS_InitTaskIdle(); /* Create the Idle Task */#if OS_TASK_STAT_EN > 0OS_InitTaskStat(); /* Create the Statistic Task */这两个函数其实就是建立两个任务,一个是空闲任务,一个是任务统计任务。空闲任务是每一个uCOS2应用程序中必须要使用的,但是统计任务可以不用。在InitTaskIdle()函数中的关键代码如下:(void)OSTaskCreateExt(OS_TaskIdle,(void *)0, /* No arguments passed to OS_TaskIdle() */&OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack */OS_TASK_IDLE_PRIO, /* Lowest priority level */OS_TASK_IDLE_ID,&OSTaskIdleStk[0], /* Set Bottom-Of-Stack */OS_TASK_IDLE_STK_SIZE,(void *)0, /* No TCB extension */OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */在InitTaskStat()函数中的关键代码如下:(void)OSTaskCreateExt(OS_TaskStat,(void *)0, /* No args passed to OS_TaskStat()*/&OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Top-Of-Stack */OS_TASK_STAT_PRIO, /* One higher than the idle task */&补充:综合编程 , 其他综合 ,
上一个:12306---卧铺选铺
下一个:contiperf施压机制初步探索总结