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

優化嵌入式軟件的特性包括系統時序,代碼大小,RAM使用和能耗等。雖然優化每個特性通常都需要自己的方法和技術,但開發人員在優化嵌入式軟件時可以遵循幾個一般性提示。


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


始終創建比較基線

首先創建一個比較優化結果的基線是顯而易見的,但是我們也能發現很多團隊是匆忙地直接進入優化而沒有任何基線。基線測量很重要,因為每個優化週期的回報都會減少。例如,優化能量的第一次通過可以導致20%的改善。第二10%,然後是5%,依此類推。開發人員需要能夠看到這種趨勢,並根據他們的時間輸入量化他們在系統中看到的改進。

設置優化目標

每次優化過程都需要越來越多的時間來從系統中擠出最小的改進。團隊需要仔細平衡他們的時間投資,並確定最終的改進是否值得花時間。在意識到這一點之前,可以花費數週來優化不再需要優化的系統。在優化開始之前,團隊應該設置一個目標,一旦實現,就足以滿足當前應用程序的要求。實現該目標表明優化過程已完成。

獲取正確的工具進行測量

沒有正確的測量工具,優化系統可能非常困難。例如,如果沒有準確的方法來測量系統和微控制器能量消耗,則無法優化能量。在許多情況下,團隊無法將這兩種不同的能量測量結果分開,並試圖在微控制器無法降低時將其最小化。如果沒有可以準確測量或允許開發人員查看系統行為的工具,那麼嘗試優化系統是沒有意義的。

使用優化工具

嵌入式軟件有許多領域可以進行優化,以減少代碼大小或提高性能。在某些情況下,可以使用單獨的或附加的工具鏈來執行優化。但有時可能不需要外部工具。只選擇合適的工具鏈就足夠了。

使用編譯器屬性和#pragma

在微調嵌入式軟件時,開發人員通常無法做出選擇。使用屬性和#pragma可以提高速度,有選擇地將優化應用於單個函數,致力於優化軟件的開發人員應該熟悉屬性,還要閱讀用C編寫可移植優化,以便他們能夠理解如何編寫仍然可移植的優化,並且不會再回過頭來討論它們。

不要猶豫,試驗一下

沒有用於優化系統的固定實踐,開發人員不應該感到受限於遵循任何特定技術。有時,學習和優化系統的最佳方法是將實驗放在一起,看看會發生什麼。通過實驗和記錄結果能夠弄清楚哪些有效,哪些無效,以及什麼是浪費資源和時間。通過嘗試不同的驅動程序模型,有很多方法可以大大提高開發人員在使用printf時獲得的實時性能,通常認為這比實際情況要好得多。

深入研究編譯器生成的指令

在資源極為受限的應用程序中,開發人員只需要捲起袖子並深入研究編譯器生成的指令。通過if / else選擇三元運算符可能是正在執行的三個或四個額外指令之間的差異,這會導致應用程序崩潰。雖然C等語言是標準的,但每個編譯器優化並生成機器指令的方式略有不同。瞭解編譯器正在做什麼的唯一真正方法是查看程序集。

應用程序的優化需求將大不相同。一些小批量生產的應用可能根本不需要優化。在其他每個時鐘週期或納米放大器都很重要的情況下,可能會花費大量時間來嘗試從系統中擠出最後一點性能或能量。雖然每個系統都不同,但這些技巧為開發人員和團隊提供了一個起點,可以幫助他們實現更高效的系統。


分享到:


相關文章: