STM32: 一种计算CPU使用率的方法及其实现原理

发布者:Enchanted2021最新更新时间:2017-10-27 来源: eefocus关键字:STM3  CPU  使用率 手机看文章 扫描二维码
随时随地手机看文章

1前言
出于性能方面的考虑,有的时候,我们希望知道CPU的使用率为多少,进而判断此CPU的负载情况和对于当前运行环境是否足够“胜任”。本文将介绍一种计算CPU占有率的方法以及其实现原理。

2移植算法
2.1 算法简介
此算法是基于操作系统的,理论上不限于任何操作系统,只要有任务调度就可以。本文将以FreeRTOST为例来介绍本算法的使用方法。
本文所介绍的算法出处为随Cube库一起提供的,它在cube库中的位置如下图所示:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

本文将以STM32F4为例,测试环境为STM3240G-EVAL评估板。

2.2 开始移植
本文以CubeF4内的示例代码工程STM32Cube_FW_F4_V1.10.0ProjectsSTM324xG_EVALApplicationsFreeRTOSFreeRTOS_ThreadCreation为例,IDE使用IAR。
第一步:使用IAR打开FreeRTOS_ThreadCreation工程,将cpu_utils.c文件添加到工程,并在工程中添加对应头文件目录:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

第二步:打开FreeRTOST的配置头文件FreeRTOSConfig.h修改宏configUSE_IDLE_HOOK和configUSE_TICK_HOOK的值为1: #define configUSE_PREEMPTION 1 
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

第三步:继续在FreeRTOSConfig.h头文件的末尾处添加traceTASK_SWITCHED_IN与traceTASK_SWITCHED_OUT定义:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

第四步:在main.h头文件中include “”cmsis_os.h“”
Main.h : 
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 


第五步: 修改工程属性,使编译过程不需要函数原型:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

第六步:在工程中任何用户代码处都可以调用osGetCPUUsage()函数来获取当前CPU的使用率:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

第七步:编译并运行测试
在调试状态下使用Live Watch窗口监控全部变量osCPU_Usage的值:
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

osCPU_Usage是在cpu_utils.c文件中定义的全局变量,表示当前CPU的使用率,是个动态值,由上图可以,CPU使用率的动态值为20%。实际在代码中是按第六步中调用osGetCPUUsage()函数来获取当前CPU的使用率的。
至此,算法使用方法介绍完毕。

3 算法实现原理分析
操作系统运行时是不断在不同的任务间进行切换,而驱动这一调度过程是通过系统tick来驱动的,即每产生一次系统tick则检查一下当前正在运行的任务的环境判断是否需要切换任务,即调度,如果需要,则触发PendSV,通过在PendSV中断调用vTaskSwitchContext()函数来实现任务的调度。而本文所要讲述的CPU使用率算法是通过在一定时间内(1000个时间片内),计算空闲任务所占用的时间片总量,100减去空闲任务所占百分比则为工作任务所占百分比,即CPU使用率。
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

此函数为空闲任务钩子函数,每次当切换到空闲任务时就会运行此钩子函数,它的作用就是记录当前空闲任务的句柄并保存到全局变量xIdleHandle。
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

此函数为操作系统的tick钩子函数,即每次产生系统tick中断都会进入到此钩子函数。此钩子函数实际上就是具体计算CPU使用率的算法了。osCPU_TotalIdleTime是一个全局变量,表示在1000个tick时间内空闲任务总共占用的时间片,CALCULATION_PERIOD宏的值为1000,即每1000个tick时间内重新计算一次CPU的使用率。

下面两个函数就是如何计算osCPU_TotalIdleTime的: 
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

这两个函数是调度器钩子函数,在调度器进行任务切进和切出时分别回调,StartIdleMonitor()函数记录切换到空闲任务时的时间点,EndIdleMonitor()则在推出空闲任务时计算此次空闲任务花费多长时间,并累加到osCPU_TotalIdleTime,即空闲任务总共占用的时间片。
[转载]STM32: <wbr>一种计算CPU使用率的方法及其实现原理 

全局变量osCPU_Usage保存的就是CPU的使用率,它是在操作系统的tick钩子函数中每隔1000个tick就被重新计算一次。

4 结论
通过此方法可以很好的用来评估STM23 MCU的运行性能。

关键字:STM3  CPU  使用率 引用地址:STM32: 一种计算CPU使用率的方法及其实现原理

上一篇:STM32 APB1和APB2挂接端口
下一篇:STM32的中断系统理解

推荐阅读最新更新时间:2024-03-16 15:42

温控系统的信号采样放大及A/D转换电路设计
一.简介   本温度控制和显示系统是一个闭环反馈控制系统,它用温度传感器将检测到的温度信号经放大,A/D转换后送入计算机中,与设定值进行比较,得到偏差。对此偏差按PID算法进行修正,返回对应工况下的可控硅导通时间,调节电热丝的有效加热功率,从而实现对铁块的温度控制。   系统采用AT89C52芯片为CPU,外扩了8K的数据存储器6264。AT89C52是美国ATMEL公司生产的低电压,高性能的CMOS 8位单片机,片内含8K的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准的MCS-51指令系统及8052产品引脚兼容,片内置通
[模拟电子]
Nvidia掌门黄仁勋否认将进军x86 CPU市场
  据国外媒体报道,美国知名图形芯片厂商Nvidia首席执行官黄仁勋上周四在接受媒体采访时表示,外界有关Nvidia将进军x86 CPU(中央处理器)市场的说法并不属实,该公司并不会推出兼容英特尔芯片的同类产品。   美国投资公司Broadpoint AmTech分析师道格·弗里德曼(Doug Freedman)上周二发布投资报告称,迫于盈利压力,Nvidia今后将积极进入x86 CPU,但主要将推出主流及低端产品,而不会在高端CPU领域同英特尔争抢市场。   弗里德曼认为,在当前x86 CPU技术专利中,多数由英特尔和AMD所持有(两家公司还签订了专利交叉授权协议),因此Nvidia很有可能走自家研发之路,“我认为Nvi
[单片机]
从一个微处理器强人的传奇经历谈本土处理器创新
中国北京2010年5月18日讯–他毕业于斯坦福大学,在70年代末加入了在微处理器领域刚刚崭露头脚的intel,并参与了intel最尖端微处理器的研发,随后,在攻读斯坦福大学电气工程博士学位期间参与了RISC架构的开发,帮助创建了MIPS公司并担任MIPS微处理器开发副总裁,之后他加入了EDA巨头Synopsys公司,负责产品定义和以及IP复用战略,在产业里打拼了近20年后,1997年,他终于有了自己的公司,他尝试用一种新的产品来改变负责SoC的设计,如今,他的这个新产品已经应用到DoCoMo的4G手机、三星的3D蓝光播放机、任天堂的游戏机、ATI的显卡、HP的激光打印机等各种电子产品上。 这个富有传奇色彩的微处理器领
[半导体设计/制造]
高通发布855 Plus:CPU/GPU双提速 下半年即可商用
7月16日早间消息,高通宣布推出一款新的处理器骁龙855 Plus,作为此前旗舰级移动平台骁龙855的升级版本,这款处理器将面向下半年定位更高的旗舰智能手机。 据介绍,骁龙855 Plus集成了骁龙X24 LTE 4G调制解调器,并可通过外挂骁龙X50调制解调器的方式,实现5G手机的解决方案。 和骁龙855相比,骁龙855 Plus主要做了两点升级: 1、Kryo 485 CPU的超级内核主频提升至2.96GHz,此前骁龙855为2.84GHz; 2、其使用的Adreno 640 GPU得到15%的性能提升。显而易见的是,骁龙855 Plus移动平台进一步的性能增加,将为终端带来更好的游戏体验。 其他规格保持不变,还是7nm工艺制
[手机便携]
高通发布855 Plus:<font color='red'>CPU</font>/GPU双提速 下半年即可商用
高通正式公布第5代自主架构CPU:Falkor CPU
高通今天正式公布了第5代自主架构CPU,即Falkor(可能的翻译是祥龙)。 Falkor CPU其实并不新鲜,因为基于它设计的SoC在去年底就发布了——Centriq 2400。这是用于服务器的(最高)24核心产品,基于10nm打造。       Falkor CPU完全兼容ARMv8指令集,加入三级缓存设计,支持6通道DDR4、32条PCIe 3.0,封装尺寸55x55mm,而且双路的话最高48核。 企业级特性有ECC内存、可信区域、256bit加密算法、同步流水线技术等。 系统方面,Centriq 2400可运行在Windows Server、Linux发行版、基于Java的Hadoop等。 高通表示,C
[嵌入式]
触摸屏的性能及应用
原理和分类 触摸屏系统一般包括两个部分:触摸检测装置和触摸屏控制器。触摸检测装置安装在显示器屏幕前面,用于检测用户触摸位置,接收后送触摸屏控制器;触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给 CPU ,它同时能接收 CPU 发来的命令并加以执行。 随着科技的进步,触摸屏技术也经历了从低档向高档逐步升级和发展的过程。根据其工作原理,其目前一般被分为四大类:电阻式触摸屏、电容式触摸屏、红外线式触摸屏和表面声波触摸屏。 电阻式触摸屏 电阻触摸屏的屏体部分是一块多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面
[手机便携]
Intel新CPU将集成WiFi:所有PC标配无线
  前不久, Intel  14nm低功耗Gemini Lake处理器曝光,CNVi(Connectivity Integration Architecture)单元首次浮现,也就是 Intel 将在这颗SoC中集成Wi-Fi、蓝牙和调制解调器模块(3G/LTE)。下面就随嵌入式小编一起来了解一下相关内容吧。     据德国CB报道, Intel 近日推出了9560 AC双频无线模块,其中嵌入式的称之为9520。        换言之,这将是Intel首次将部分Wi-Fi单元到处理器中,将从今年末发布的Cannon Lake和Gemini Lake开始使用。        Cannon Lake可能因为10nm工艺更加先进
[嵌入式]
集微指数下跌0.8% 英伟达发布首款CPU和八款GPU
A股三大指数今日收盘涨跌不一,其中沪指下跌0.48%,收报3396.47点;深证成指上涨0.24%,收报13528.31点;创业板指上涨0.84%,收报2742.85点。市场成交量依然低迷,两市合计成交6715亿元,行业板块多数收跌。北向资金今日净买入84.71亿元。 半导体板块表现较差。集微网从电子元件、材料、设备、设计、制造、IDM、封测、分销等领域选取了118家半导体公司作了统计。在118家半导体公司中,46家公司市值上涨,其中,中颖电子、新海科技、长川科技等涨幅居前;72家公司市值下跌,其中晓程科技、风华高科、高盟新材等跌幅居前。 对于后市大盘走向,兴业证券指出,经济持续复苏,通胀数据略超预期,流动性收紧预期再次成为市场
[手机便携]
集微指数下跌0.8% 英伟达发布首款<font color='red'>CPU</font>和八款GPU
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved