<output id="yn1pw"></output>
    <wbr id="yn1pw"></wbr>

    <form id="yn1pw"><legend id="yn1pw"></legend></form>

  1. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    優化嵌入式軟件的七個技巧

    • 發布:嵌入式培訓
    • 來源:嵌入式教程
    • 時間:2019-08-08 16:55

    早前的專欄中曾討論過在許多情況下需要優化的嵌入式系統的關鍵特征,包括系統時序、代碼大小、RAM使用率和能耗。雖然優化每個特征通常要求不同的方法和技術,但開發人員在優化嵌入式軟件時可以遵循幾個通用技巧。

    技巧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這樣的語言是標準的,但每種編譯器在優化和產生機器指令時有少許差異。唯一現實的方法是檢查匯編語言,了解編譯器在做什么。

    總結

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

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:嵌入式主板開發必知的7個技巧
    下一篇:ARM常用概念有哪些?

    裸編程怎么做?裸編程具體做法

    嵌入式編程中你必須知道的小知識

    嵌入式C語言編程小知識總結

    有哪些工具可以讓嵌入式開發事半功倍?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    高清在线不卡一区二区_2019最新国产高清不卡a_亚洲欧洲日本aⅴ 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>