標(biāo)題: 如何計(jì)算MCU利用率(負(fù)載率) [打印本頁]

作者: ningsy    時(shí)間: 2023-2-6 23:35
標(biāo)題: 如何計(jì)算MCU利用率(負(fù)載率)
請教MCU利用率(負(fù)載率)怎么計(jì)算?STC8H8K64U.  查了一下,好像是 1-(空閑時(shí)間/運(yùn)行總時(shí)間)*100%?墒蔷唧w到實(shí)際案例里怎么操作呢?


作者: Hephaestus    時(shí)間: 2023-2-7 02:59
先定義什么是空閑,然后在空閑位置置標(biāo)志位,開定時(shí)中斷,讀標(biāo)志位,如果置1則變量空閑加1,然后置零。如果標(biāo)志位置零則變量忙加1,然后計(jì)算變量空閑和變量忙的比例即為負(fù)載率。
作者: coody_sz    時(shí)間: 2023-2-7 10:20
STC系列單片機(jī)沒有專門的模塊統(tǒng)計(jì)CPU利用率,我要測量的話,是在MCU的GND腳串聯(lián)0.1歐姆電阻采樣電流并放大10~40倍(注意要用速度比較高的運(yùn)放,一般要Ft要5MHz以上,我用100MHz的運(yùn)放)。
程序中,主循環(huán)跑一次就進(jìn)入空閑,任何中斷都可以退出空閑,并且有一個(gè)定時(shí)器中斷作為系統(tǒng)節(jié)拍,比如10ms,這樣保證任何中斷都能運(yùn)行并且退出空閑,每隔10ms就會運(yùn)行一圈主程序。
然后,示波器觀察采樣的電流波形,就可以看到MCU運(yùn)行的時(shí)間了。
作者: fishafish    時(shí)間: 2023-2-7 12:06
聞所未聞,單片機(jī)即使跑最簡單的主循環(huán)也是100%利用的,或者講外設(shè)單元的使用率還差不多
作者: ningsy    時(shí)間: 2023-2-7 13:12
因?yàn)橛信笥言谀程永锾徇^一次,正好我這個(gè)項(xiàng)目代碼也差不多了,就想詳細(xì)了下
作者: lkc8210    時(shí)間: 2023-2-7 15:18
可在Keil仿真模式中查看






雙擊要觀測的函數(shù)






運(yùn)行



停止,然后觀看,空閑87.2%



函數(shù)A占12.7%



函數(shù)B占0.1%




作者: coody_sz    時(shí)間: 2023-2-7 15:26
fishafish 發(fā)表于 2023-2-7 12:06
聞所未聞,單片機(jī)即使跑最簡單的主循環(huán)也是100%利用的,或者講外設(shè)單元的使用率還差不多

那是因?yàn)槟銢]關(guān)心過MCU的負(fù)載率,如果經(jīng)常滿載,可能會偶發(fā)隱含的問題。我基本上,用什么單片機(jī)做產(chǎn)品程序,都會測試MCU的負(fù)載率(忙時(shí)間占比),并在源碼中標(biāo)注。
特別是復(fù)雜又要實(shí)時(shí)的程序,我是必須知道MCU負(fù)載率的。
作者: 624353765    時(shí)間: 2023-2-7 15:35
單片機(jī)裸奔不存在cpu使用率,那必須是100%利用,全速跑你的代碼

作者: jizhongbiao    時(shí)間: 2023-2-7 17:58
這個(gè)利用率是操作系統(tǒng)里面的概念,操作系統(tǒng)戶有一個(gè)空閑任務(wù),該任務(wù)優(yōu)先級最低只要有高優(yōu)先級就會被搶占。所以利用率的定義應(yīng)該是1-空閑任務(wù)cpu占用率。實(shí)現(xiàn)也比較簡單就是進(jìn)入臨界區(qū)后在空閑任務(wù)里面做計(jì)數(shù)操作,然后退出臨界區(qū)再搞一次。裸機(jī)的話利用率就是100%了
作者: Y_G_G    時(shí)間: 2023-2-7 22:35
單片機(jī)不跑系統(tǒng),不存在利用率這一說
不管是在干嘛
就是while(1);
它也是100%的利用率
新手最優(yōu)先考慮的是代碼邏輯的正確性
然后再開始考慮合理的,利用片上的資源,有的人開了幾個(gè)中斷就卡死在中斷里,出不來了
最后,當(dāng)你學(xué)得差不多的時(shí)候,你就能自然而然的理解了"效率"這個(gè)詞語,并能有效的去復(fù)用它了
作者: ningsy    時(shí)間: 2023-2-7 22:55
lkc8210 發(fā)表于 2023-2-7 15:18
可在Keil仿真模式中查看

感謝指導(dǎo)!不過在硬件仿真狀態(tài)下點(diǎn)“setup”沒反應(yīng)呢?是不是硬件仿真狀態(tài)下不能用?
作者: ningsy    時(shí)間: 2023-2-7 23:02
coody_sz 發(fā)表于 2023-2-7 10:20
STC系列單片機(jī)沒有專門的模塊統(tǒng)計(jì)CPU利用率,我要測量的話,是在MCU的GND腳串聯(lián)0.1歐姆電阻采樣電流并放大1 ...

這個(gè)方法好,不過我現(xiàn)在既不會玩運(yùn)放,也沒有示波器只有一個(gè)山寨邏輯分析儀,查了一下應(yīng)該也能用,我研究研究~
作者: Angle145    時(shí)間: 2023-2-8 13:20
Y_G_G 發(fā)表于 2023-2-7 22:35
單片機(jī)不跑系統(tǒng),不存在利用率這一說
不管是在干嘛
就是while(1);

是的,上了操作系統(tǒng),才有任務(wù)利用率一說,裸機(jī)利用率100%




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1