标题: 如何计算MCU利用率(负载率) [打印本页]

作者: ningsy    时间: 2023-2-6 23:35
标题: 如何计算MCU利用率(负载率)
请教MCU利用率(负载率)怎么计算?STC8H8K64U.  查了一下,好像是 1-(空闲时间/运行总时间)*100%。可是具体到实际案例里怎么操作呢?


作者: Hephaestus    时间: 2023-2-7 02:59
先定义什么是空闲,然后在空闲位置置标志位,开定时中断,读标志位,如果置1则变量空闲加1,然后置零。如果标志位置零则变量忙加1,然后计算变量空闲和变量忙的比例即为负载率。
作者: coody_sz    时间: 2023-2-7 10:20
STC系列单片机没有专门的模块统计CPU利用率,我要测量的话,是在MCU的GND脚串联0.1欧姆电阻采样电流并放大10~40倍(注意要用速度比较高的运放,一般要Ft要5MHz以上,我用100MHz的运放)。
程序中,主循环跑一次就进入空闲,任何中断都可以退出空闲,并且有一个定时器中断作为系统节拍,比如10ms,这样保证任何中断都能运行并且退出空闲,每隔10ms就会运行一圈主程序。
然后,示波器观察采样的电流波形,就可以看到MCU运行的时间了。
作者: fishafish    时间: 2023-2-7 12:06
闻所未闻,单片机即使跑最简单的主循环也是100%利用的,或者讲外设单元的使用率还差不多
作者: ningsy    时间: 2023-2-7 13:12
因为有朋友在某帖子里提过一次,正好我这个项目代码也差不多了,就想详细了下
作者: lkc8210    时间: 2023-2-7 15:18
可在Keil仿真模式中查看






双击要观测的函数






运行



停止,然后观看,空闲87.2%



函数A占12.7%



函数B占0.1%




作者: coody_sz    时间: 2023-2-7 15:26
fishafish 发表于 2023-2-7 12:06
闻所未闻,单片机即使跑最简单的主循环也是100%利用的,或者讲外设单元的使用率还差不多

那是因为你没关心过MCU的负载率,如果经常满载,可能会偶发隐含的问题。我基本上,用什么单片机做产品程序,都会测试MCU的负载率(忙时间占比),并在源码中标注。
特别是复杂又要实时的程序,我是必须知道MCU负载率的。
作者: 624353765    时间: 2023-2-7 15:35
单片机裸奔不存在cpu使用率,那必须是100%利用,全速跑你的代码

作者: jizhongbiao    时间: 2023-2-7 17:58
这个利用率是操作系统里面的概念,操作系统户有一个空闲任务,该任务优先级最低只要有高优先级就会被抢占。所以利用率的定义应该是1-空闲任务cpu占用率。实现也比较简单就是进入临界区后在空闲任务里面做计数操作,然后退出临界区再搞一次。裸机的话利用率就是100%了
作者: Y_G_G    时间: 2023-2-7 22:35
单片机不跑系统,不存在利用率这一说
不管是在干嘛
就是while(1);
它也是100%的利用率
新手最优先考虑的是代码逻辑的正确性
然后再开始考虑合理的,利用片上的资源,有的人开了几个中断就卡死在中断里,出不来了
最后,当你学得差不多的时候,你就能自然而然的理解了"效率"这个词语,并能有效的去复用它了
作者: ningsy    时间: 2023-2-7 22:55
lkc8210 发表于 2023-2-7 15:18
可在Keil仿真模式中查看

感谢指导!不过在硬件仿真状态下点“setup”没反应呢?是不是硬件仿真状态下不能用?
作者: ningsy    时间: 2023-2-7 23:02
coody_sz 发表于 2023-2-7 10:20
STC系列单片机没有专门的模块统计CPU利用率,我要测量的话,是在MCU的GND脚串联0.1欧姆电阻采样电流并放大1 ...

这个方法好,不过我现在既不会玩运放,也没有示波器只有一个山寨逻辑分析仪,查了一下应该也能用,我研究研究~
作者: Angle145    时间: 2023-2-8 13:20
Y_G_G 发表于 2023-2-7 22:35
单片机不跑系统,不存在利用率这一说
不管是在干嘛
就是while(1);

是的,上了操作系统,才有任务利用率一说,裸机利用率100%




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1