99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內(nèi)不再提示

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

GReq_mcu168 ? 來源:未知 ? 作者:李倩 ? 2018-04-08 11:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

技巧1—總是創(chuàng)建基準用于比較

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

技巧2—設定優(yōu)化目標

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

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

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

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

技巧4—使用優(yōu)化工具

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

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

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

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

技巧6—多做實驗

在優(yōu)化系統(tǒng)方面沒有一成不變的方法,開發(fā)人員不應該局限于任何一種特殊的技術。有時候?qū)W習和優(yōu)化系統(tǒng)的最好方法是嘗試各種實驗并分析其結(jié)果。

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

技巧7—深入研究編譯器產(chǎn)生的指令

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

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

總結(jié)

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

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

    關注

    48

    文章

    7953

    瀏覽量

    155125
  • 嵌入式
    +關注

    關注

    5152

    文章

    19675

    瀏覽量

    317657

原文標題:優(yōu)化嵌入式軟件的七個技巧

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    用信號發(fā)生器給8channel直接灌正弦波,采樣值各不相同,這是正常的嗎?

    請教大家一ADS1298的問題: 我用信號發(fā)生器給8channel直接灌正弦波(100HZ,1Vpp,0 offset)。發(fā)現(xiàn)采樣值各不相同。 這是正常的嗎?還是我的ADS1298壞了? 謝謝。
    發(fā)表于 02-07 07:46

    優(yōu)化嵌入式軟件的7技巧

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

    ADS1298的8channel采樣值都不相同

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

    嵌入式機器視覺系統(tǒng)有什么特性?怎么優(yōu)化?

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

    淺析嵌入式系統(tǒng)結(jié)構(gòu)

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

    嵌入式系統(tǒng)內(nèi)存優(yōu)化使用

    響應運行。并且經(jīng)過實踐證明,嵌入式系統(tǒng)內(nèi)存優(yōu)化使用,能夠提升系統(tǒng)空間5%內(nèi)存,確保系統(tǒng)順利運行?!娟P鍵詞】 嵌入式 Linux系統(tǒng) 內(nèi)存優(yōu)化 使用方法研究現(xiàn)如今,
    發(fā)表于 11-04 06:23

    嵌入式應用程序進行性能優(yōu)化

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

    嵌入式系統(tǒng)中的MODEM

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

    ARM嵌入式系統(tǒng)開發(fā)-軟件設計與優(yōu)化

    ARM嵌入式系統(tǒng)開發(fā)-軟件設計與優(yōu)化
    發(fā)表于 02-11 09:57 ?94次下載
    ARM<b class='flag-5'>嵌入式</b>系統(tǒng)開發(fā)-<b class='flag-5'>軟件</b>設計與<b class='flag-5'>優(yōu)化</b>

    嵌入式芯片的存儲器映射

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

    基于RTSJ的實時嵌入式系統(tǒng)API的優(yōu)化研究

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

    構(gòu)建和優(yōu)化嵌入式和物聯(lián)網(wǎng)應用程序

    構(gòu)建和優(yōu)化嵌入式,移動和物聯(lián)網(wǎng)應用程序
    的頭像 發(fā)表于 05-31 09:23 ?1999次閱讀

    介紹一些關于優(yōu)化嵌入式軟件的小技巧

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

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

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

    250各不相同的Shell腳本實例

    無論是系統(tǒng)運維,還是應用運維,均可分為“純手工”→ “腳本化”→ “自動化”→“智能化”幾個階段,其中自動化階段,主要是將一些重復性人工操作和運維經(jīng)驗封裝為程序或腳本,一方面避免重復性操作及風險,另一方面提高執(zhí)行效率。
    的頭像 發(fā)表于 07-05 10:50 ?1430次閱讀