FreeRTOS cpu利用率简单介绍

1. CPU 利用率简介

CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时 间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可 以认为 CPU 的利用率是 100%。CPU 的利用率越高,说明机器在这个时间上运行 了很多程序,反之较少。利用率的高低与 CPU 强弱有直接关系,就像一段一模 一样的程序,如果使用运算速度很慢的 CPU,它可能要运行 1000ms,而使用很 运算速度很快的 CPU 可能只需要 10ms,那么在 1000ms 这段时间中,前者的 CPU 利用率就是 100%,而后者的 CPU 利用率只有 1%,因为 1000ms 内前者都 在使用 CPU 做运算,而后者只使用 10ms 的时间做运算,剩下的时间 CPU 可以 做其他事情。 FreeRTOS 是多任务操作系统,对 CPU 都是分时使用的:比如 A 任务占用 10ms,然后 B 任务占用 30ms,然后空闲 60ms,再又是 A 任务占 10ms,B 任 务占 30ms,空闲 60ms;如果在一段时间内都是如此,那么这段时间内的利用率 为 40%,因为整个系统中只有 40%的时间是 CPU 处理数据的时间。 FreeRTOS 是一个很完善很稳定的操作系统,当然也给我们提供测量各个任 务占用 CPU 时间的函数接口,我们可以知道系统中的每个任务占用 CPU 的时 间,从而得知系统设计的是否合理,出于性能方面的考虑,有的时候,我们希望 知道 CPU 的使用率为多少,进而判断此 CPU 的负载情况和对于当前运行环境是 否能够“胜任工作”。所以,在调试的时候很有必要得到当前系统的 CPU 利用 率相关信息,但是在产品发布的时候,就可以把 CPU 利用率统计这个功能去掉, 因为使用任何功能的时候,都是需要消耗系统资源的,FreeRTOS 是使用一个外 部的变量进行统计时间的,并且消耗一个高精度的定时器,其用于定时的精度是 系统时钟节拍的 10-20 倍,比如当前系统时钟节拍是 1000HZ,那么定时器的计 数节拍就要是 10000-20000HZ。而且 FreeRTOS 进行 CPU 利用率统计的时候, 也有一定缺陷,因为它没有对进行 CPU 利用率统计时间的变量做溢出保护,我 们使用的是 32 位变量来系统运行的时间计数值,而按 20000HZ 的中断频率计 算,每进入一中断就是 50us,变量加一,最大支持计数时间:2^32 * 50us / 3600s =59.6 分钟,运行时间超过了 59.6 分钟后统计的结果将不准确,除此之外整个 系统一直响应定时器 50us 一次的中断会比较影响系统的性能。 385 用户想要使用 CPU 利用率统计的话,需要自定义配置一下,首先在 FreeRTOSConfig.h 配置与系统运行时间和任务状态收集有关的配置选项,并且 实现 portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() 与 portGET_RUN_TIME_COUNTER_VALUE()这两个宏定义,具体如下。

然后需要实现一个中断频率为 10000HZ 定时器,用于系统运行时间统计, 其实很简单,只需将 CPU_RunTime 变量自加即可,这个变量是用于记录系统运 行时间的,中断服务函数具体如下。

volatile uint32_t CPU_RunTime = 0UL;
/********************************************************************
***********
* 函 数 名 : TIM6_IRQHandler
* 函数功能 : TIM6 中断函数
* 输 入 : 无
* 输 出 : 无
****************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值