运行时间_如何测量嵌入式软件运行时间?
整理:黃工
素材來源:最后一個(gè)Bug
程序的運(yùn)行時(shí)間,對(duì)一個(gè)系統(tǒng)比較重要。有的地方要求精確延時(shí)Nus,有的地方要求程序運(yùn)行時(shí)間不能超過Nus。
所以,今天給大家分享一些常見測(cè)量程序(任務(wù))運(yùn)行時(shí)間的方法。
0、為什么需要測(cè)定程序運(yùn)行時(shí)間?軟件的時(shí)效性決定著系統(tǒng)的快速性,這一句話的前提是在不考慮硬件的限制。不過對(duì)于我們大部分項(xiàng)目而言,而是真正限制系統(tǒng)反應(yīng)速度的還是硬件資源等。比如說我們真實(shí)世界與數(shù)字世界的窗口-AD采樣芯片,我們都需要通過感知外界的一些反饋來對(duì)我們的系統(tǒng)做出正確的決策,那么AD芯片的轉(zhuǎn)化速度就成了決定該反饋的速度,進(jìn)而影響著我們的系統(tǒng)。
再比如,我們要運(yùn)行一段算法,我們都期待越快越好,但這段算法會(huì)牽涉?zhèn)鞲衅鞯牟杉幚怼D敲催@其中要綜合考慮傳感器采集的最大速率等問題。
所以,我們?cè)陧?xiàng)目研發(fā)初期就要考慮一些地方程序運(yùn)行的時(shí)間問題。下面為大家總結(jié)日常的測(cè)量方法,供大家學(xué)習(xí)參考。
1、IO翻轉(zhuǎn)示波器測(cè)量法該方法簡(jiǎn)單方便,在測(cè)量的起始位置,設(shè)置IO為一種狀態(tài)(低);在測(cè)量的結(jié)束位置,設(shè)置IO為另一個(gè)狀態(tài)(高)。TEST_IO_LOW();//被測(cè)量代碼start//······//被測(cè)量代碼endTEST_IO_HIGH();這種測(cè)量方法要考慮添加的IO語句會(huì)占用一定時(shí)間(具體與你處理器能力有關(guān)),比如72M的STM32F1,一個(gè)IO翻轉(zhuǎn),應(yīng)該在幾十ns。2、捕獲IO測(cè)量法該方法其實(shí)和示波器法類似,都屬于外部測(cè)量方法,不過該方法的好處是能夠彌補(bǔ)任務(wù)運(yùn)行時(shí)間變化較大導(dǎo)致示波器測(cè)量顯示難以辨識(shí)最長(zhǎng)時(shí)間的問題。大體實(shí)現(xiàn)思路我們可以把IO翻轉(zhuǎn)信號(hào)看成一個(gè)脈沖寬度來進(jìn)行測(cè)量,只需要通過編程在用另外一款盡量高端的或者是主頻更高的芯片通過捕獲功能結(jié)合定時(shí)器進(jìn)行時(shí)間記錄即可,這樣我們既可以獲得程序運(yùn)行的時(shí)間,還可以通過編程的思路,進(jìn)行一段長(zhǎng)時(shí)間內(nèi)的脈寬的最大值、平均值等來更好的表征程序運(yùn)行的狀況。該方法的缺點(diǎn)該辦法的精度等得由外部芯片來決定,不過對(duì)于大部分應(yīng)用是滿足的。3、內(nèi)部定時(shí)器法
該方法與上面的捕獲IO方法是類似的,在嵌入式系統(tǒng)中經(jīng)常會(huì)遇到時(shí)間戳的使用,同時(shí)還能獲得CPU的利用率,其實(shí)方法都是一樣的,系統(tǒng)中會(huì)開啟一個(gè)核心定時(shí)器,該定時(shí)器一般不會(huì)受到外部的干擾等,通過該定時(shí)器在任務(wù)的開頭和結(jié)尾分別安插標(biāo)志,從而獲得這段時(shí)間內(nèi)的定時(shí)器計(jì)數(shù),從而計(jì)算出程序運(yùn)行時(shí)間。
該方法在我們的小型或者資源不足的芯片上使用得不多,因?yàn)槲覀兒苌儆卸嘤嗟亩〞r(shí)器來進(jìn)行額外的處理,同時(shí)由于定時(shí)器處理需要一定的時(shí)間,以及一些額外的計(jì)算等都會(huì)導(dǎo)致測(cè)量時(shí)間上的誤差,如果該誤差在能夠接受的范圍還是可以采用該方法的。
4.仿真器法
目前許多芯片的調(diào)試仿真器都會(huì)具備測(cè)量仿真程序的多方面性能的功能,比如說KEIL或者CCS集成開發(fā)環(huán)境也都基本支持測(cè)量程序運(yùn)行時(shí)間的,一般都是測(cè)量斷點(diǎn)之間的程序所運(yùn)行時(shí)間,用戶需要在開發(fā)環(huán)境中進(jìn)行芯片當(dāng)前的晶振、主頻等等方面參數(shù)的設(shè)置以后基本能夠獲得一個(gè)運(yùn)行時(shí)間結(jié)果。
1.美國(guó)再出狠手!這家中國(guó)創(chuàng)業(yè)公司被下禁令:技術(shù)無法轉(zhuǎn)回國(guó),IPO 計(jì)劃擱淺
2.TIOBE 3 月編程語言排行榜:Java 大漲,Delphi 輝煌不再!
3.默默無聞的嵌入式技術(shù),其實(shí)一直在創(chuàng)新中求發(fā)展
4.震驚!FPGA運(yùn)算單元可支持高算力浮點(diǎn)
5.6 個(gè)步驟,搞定 AI 車牌識(shí)別器!(附詳細(xì)分析)
6.WiFi芯片出現(xiàn)Kr00k漏洞
免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)與我們聯(lián)系,我們將根據(jù)您提供的版權(quán)證明材料確認(rèn)版權(quán)并支付稿酬或者刪除內(nèi)容。
總結(jié)
以上是生活随笔為你收集整理的运行时间_如何测量嵌入式软件运行时间?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aspose word copy 获取某
- 下一篇: coordinatorlayout 设置