在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

優化嵌入式軟件的七個技巧,不同應用程序的優化需求各不相同

GReq_mcu168 ? 來源:未知 ? 作者:李倩 ? 2018-04-08 11:21 ? 次閱讀

技巧1—總是創建基準用于比較

創建基準用于比較優化結果的必要性顯而易見,令人驚訝的是開發團隊常常在沒有任何基準的情況下匆忙開展優化。基準測量很重要,因為每次優化得到的改進會越來越小。舉例來說,第一遍能耗優化可能有20%的改進,第二次有10%,第三次5%,以此類推。開發人員應了解這種趨勢,并將他們在系統中獲得的改進量化為輸入次數的函數。

技巧2—設定優化目標

每一次優化都比前一次需要更多的時間才能從系統中獲得極少量的改進。開發團隊需要仔細平衡他們的時間投入,并根據改進結果判斷是否值得花這么多時間。一味悶頭做事很容易沉迷,可能花了數周時間才認識到自己在優化一個不再需要優化的系統。因此在優化開始之前,開發團隊應設定一個目標值,達到這個目標,就表示優化結果對當前應用來說足夠好,優化過程已經完成。

技巧3—使用正確的測量工具

如果沒有合適的測量工具,優化一個系統是很困難的。舉例來說,如果不使用一種精確的方法來測量系統和微控制器的能耗,便很難完成能耗的優化。開發人員經常無法區分這兩種不同的能量測量,他們試圖減少實際上無法再減少的微控制器能耗。

對性能優化感興趣的開發人員可以看一看我在“親自動手:Segger系統查看工具”中介紹的Segger系統查看工具,這款工具對于了解哪些 函數正在獨占CPU非常有用。如果沒有能夠精確測量或可供開發人員查看系統行為的工具,那么在優化系統時便抓不住重點。

技巧4—使用優化工具

為了減小代碼大小或提高性能,嵌入式軟件的許多方面都可以優化。一些情況下可以使用獨立的或附屬的工具鏈。Somnium DRT優化器就是一種很好的優化工具,可以與GCC一起用來優化代碼大小、能量使用率和性能。

不過有時候外部工具可能不是必需的,只要選擇正確的工具鏈就足夠了。我最近寫了一篇題為《開源與商用編譯器》的文章,說明了這樣一個事實:在Coremark測試中,對于相同的微控制器和相同的測試條件,商用編譯器的得分總是高于GCC等開源編譯器。

技巧5—使用編譯器屬性和#pragma指令

我一般很不喜歡用#pragma指令或編譯器屬性。屬性和#pragma指令通常是不可移植的,改變編譯器可能會造成軟件缺陷。然而,在調整嵌入式軟件時,開發人員通常沒有選擇。使用屬性和#pragma指令可以提高速度,并能根據實際情況有選擇地優化某個功能?;谶@些理由,想要優化軟件的開發人員應該熟悉屬性的使用,而且要閱讀《用C語言編寫可移植的優化程序》,這樣他們才知道如何編寫出可移植的最優程序,并且沒有負面影響。

技巧6—多做實驗

在優化系統方面沒有一成不變的方法,開發人員不應該局限于任何一種特殊的技術。有時候學習和優化系統的最好方法是嘗試各種實驗并分析其結果。

當我首次為了低功耗而優化系統時,做了很多實驗,也出現了一些錯誤。通過實驗過程和所記錄的結果,我就能夠理解什么有用,什么沒用,以及做哪些事是在浪費資源和時間。如何最好地利用printf就是一個簡單的例子: 通過嘗試不同的驅動模型可以發現,很多方法都可以顯著提高開發人員使用printf時獲得的實時性能,而人們設想的結果通常遠好于真實結果。

技巧7—深入研究編譯器產生的指令

在資源特別有限的應用中,開發人員有時只需挽起袖子深入理解編譯器產生的指令。在將要執行的三四個廣義指令間選擇三元操作符而不是if/else是有區別的,這很可能會導致應用程序崩潰。

雖然像C這樣的語言是標準的,但每種編譯器在優化和產生機器指令時有少許差異。唯一現實的方法是檢查匯編語言,了解編譯器在做什么。

總結

不同應用程序的優化需求各不相同。小批量產生的應用程序也許根本不需要優化;而對于另外一些應用程序,每個時鐘周期或每毫微安電流都很重要,則可能需要開發人員花大量時間從系統中榨出最后一點性能或能量。雖然每種系統都是不同的,但開發人員若熟記這些技巧,便為實現更高效的系統邁出了可喜的第一步。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7646

    瀏覽量

    151947
  • 嵌入式
    +關注

    關注

    5091

    文章

    19176

    瀏覽量

    307104

原文標題:優化嵌入式軟件的七個技巧

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    優化嵌入式軟件的7技巧

    正在做什么的唯一真正方法是查看程序集。應用程序優化需求將大不相同。一些小批量生產的應用可能根本不需要
    發表于 01-16 18:07

    ADS1298的8channel采樣值都不相同

    請假大家一ADS1298的問題:我用信號發生器給8channel直接灌正弦波(100HZ,1Vpp,0 offset)。發現采樣值各不相同。這是正常的嗎?還是我的ADS1298壞了? 謝謝。
    發表于 05-23 09:42

    嵌入式機器視覺系統有什么特性?怎么優化

    介紹了基于ARM+DSP架構的嵌入式機器視覺系統的特性,分析了制約嵌入式機器視覺系統性能的因素。從操作系統和應用程序方面,討論了嵌入式機器視覺系統的
    發表于 03-11 06:47

    淺析嵌入式系統結構

    必須的設備。外部設備將根據需要而各不相同,如通用通信接口USB,RS-232,RJ45等,輸入輸出設備,如
    發表于 10-27 06:10

    嵌入式系統內存優化使用

    響應運行。并且經過實踐證明,嵌入式系統內存優化使用,能夠提升系統空間5%內存,確保系統順利運行?!娟P鍵詞】 嵌入式 Linux系統 內存優化 使用方法研究現如今,
    發表于 11-04 06:23

    嵌入式應用程序進行性能優化

    滿足嵌入式應用的性能需求。1 嵌入式程序優化的類型嵌入式應用
    發表于 12-22 07:46

    嵌入式系統中的MODEM

    嵌入式系統中的MODEM 近日研究MODEM心得不少,寫出來,請大家提提意見。(一)協議按照調制解調協議的不同,數據傳輸速度亦各不相同。56K bit/秒有ITU V.90、Rockwell
    發表于 04-18 22:55 ?57次下載

    ARM嵌入式系統開發-軟件設計與優化

    ARM嵌入式系統開發-軟件設計與優化
    發表于 02-11 09:57 ?94次下載
    ARM<b class='flag-5'>嵌入式</b>系統開發-<b class='flag-5'>軟件</b>設計與<b class='flag-5'>優化</b>

    嵌入式芯片的存儲器映射

    很多嵌入式芯片都集成了多種存儲器(RAM、ROM、Flash、),這些存儲器的介質、工藝、容量、價格、讀寫速度和讀寫方式都各不相同,嵌入式系統設計需根據應用需求巧妙地規劃和利用
    發表于 11-24 11:43 ?101次下載
    <b class='flag-5'>嵌入式</b>芯片的存儲器映射

    基于RTSJ的實時嵌入式系統API的優化研究

    描述了一基于RTSJ的應用程序接口,該API的功能是提供高級的并發實時計算結構,優化實時嵌入式系統開發。同時,部署和優化(在開銷足跡/時間
    發表于 11-30 12:20 ?432次閱讀

    構建和優化嵌入式和物聯網應用程序

    構建和優化嵌入式,移動和物聯網應用程序
    的頭像 發表于 05-31 09:23 ?1739次閱讀

    優化嵌入式軟件時可以遵循幾個通用技巧盤點

    早前的專欄中曾討論過在許多情況下需要優化嵌入式系統的關鍵特征,包括系統時序、代碼大小、RAM使用率和能耗。雖然優化每個特征通常要求不同的方法和技術,但開發人員在優化
    發表于 03-08 14:40 ?671次閱讀

    介紹一些關于優化嵌入式軟件的小技巧

    優化嵌入式軟件的特點包括系統定時、碼大小、RAM使用、功耗等。當優化每個特征通常需要其自己的方法和技術時,當優化
    發表于 12-23 14:10 ?943次閱讀

    嵌入式Linux應用程序開發-(1)第一嵌入式QT應用程序

    第一嵌入式QT應用程序在成功安裝 Qt Creator 開發環境后,我們通過一簡單的嵌入式Qt應用程
    發表于 11-01 17:21 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>應用程序</b>開發-(1)第一<b class='flag-5'>個</b><b class='flag-5'>嵌入式</b>QT<b class='flag-5'>應用程序</b>

    250各不相同的Shell腳本實例

    無論是系統運維,還是應用運維,均可分為“純手工”→ “腳本化”→ “自動化”→“智能化”幾個階段,其中自動化階段,主要是將一些重復性人工操作和運維經驗封裝為程序或腳本,一方面避免重復性操作及風險,另一方面提高執行效率。
    的頭像 發表于 07-05 10:50 ?1216次閱讀
    主站蜘蛛池模板: 色骚综合 | 四虎黄色影院 | 女人aaaaa片一级一毛片 | 免费性视频 | 免费视频网站在线看视频 | 婷婷在线网站 | 中文字幕亚洲一区二区va在线 | 好吊色37pao在线观看 | 夜夜爽天天干 | 伊人成伊人成综合网2222 | 欧美色视频日本片免费高清 | 天天做天天做天天综合网 | 成人午夜大片免费视频77777 | 这里只有精品视频 | 国产成人啪午夜精品网站 | 久久观看午夜精品 | 亚洲国产成人最新精品资源 | 久久视频精品线视频在线网站 | 国产亚洲精品久久久久久久软件 | 91黄视频在线观看 | 久久成人综合 | 操农村妇女| 亚洲国产欧美在线人成aaa | 欧美特级午夜一区二区三区 | 男人cao女人视频在线观看 | 国产―笫一页―浮力影院xyz | 你懂的手机在线 | 日本三浦理惠子中文字幕 | 色婷婷久久合月综 | 成人a毛片免费全部播放 | 校园 春色 欧美 另类 小说 | 色妞综合网 | 你懂的福利网站 | 69xxx视频| 免费番茄社区性色大片 | 国产欧美一区二区日本加勒比 | 日本三级视频在线 | 巨臀中文字幕一区二区翘臀 | 曰本黄色一级 | 欧美一级欧美一级高清 | 欧美操穴视频 |