嵌入式系統中程式的優化策略

2023-01-12 04:45:02 字數 2581 閱讀 7816

[作者] 汪華冰 0867010235

[摘要]嵌入式系統中的程式往往是執行在有限的硬體資源環境中,而且大多具有實時性的要求,因此要對程式進行優化,盡量提高程式的執行效率,減少程式的儲存空間。討論對嵌入式系統中的程式進行優化的方法和策略。

[關鍵詞]嵌入式系統優化程式**物件導向

一、引言

嵌入式系統是乙個專用計算機系統,完全封裝在其所控制的裝置內。與通用計算機不同,嵌入式系統執行非常明確的預定義任務。而且,嵌入式系統的外形尺寸、功耗、外部介面卡等各種特徵必須滿足應用的要求和限制;另外,一些嵌入式系統還具有實時性的要求。

為了滿足嵌入式系統的實時性和有限儲存空間的要求,嵌入式程式要盡量提高執行速度,減少儲存空間。因此,在嵌入式系統設計中要進行程式的優化以提高系統的效能,縮減產品的尺寸和成本。

對嵌入式程式進行優化主要從兩個方面入手:

1.設計優化;

2.**優化。

二、設計優化

(一)物件導向程式設計技術

現代的程式設計普遍採用物件導向的設計方法。物件導向程式設計於20世紀60年代提出,以後逐漸發展和完善,出現了j**a、c++等物件導向的程式語言。物件導向程式設計的出現是計算機程式設計技術的重大進步。

它以物件為中心觀察、描述和處理問題,按照物件及物件之間的聯絡來構造軟體實體。

物件導向是一種自下而上的程式設計方法,它以資料為中心,類作為表現資料的工具,是劃分程式的基本單位。物件導向程式設計的基本方法就是把資料和對資料的處理函式封裝在一起,形成乙個相對獨立的類模組,類實現了資料與函式功能的有機結合。

(二)物件導向設計的優化

類是面型物件程式設計的基礎,通過類繼承可以最大限度地實現功能**的重用,減少程式的儲存空間。

調整繼承關係是優化設計的乙個重要方面,繼承關係能夠為乙個類族定義乙個協議,並能在類之間實現**共享以減少冗餘。在物件導向設計中,建立良好的繼承關係對優化結構是非常重要的。

在設計類繼承時,使用自頂向下和自底向上相結合的方法。先建立一些功能型別,然後進行歸納。如果在一組相似的類中存在公共的屬性和公共的行為,則可以把這些公共的屬性和行為抽取出來重新定義乙個類作為基類。

三、**優化

**優化,就是採用更精簡的程式**來代替原有的**,使編譯後的程式執行效率更高。以下是一些常用的優化技術和技巧。

(一)盡量定義輕量級的構造方法

在進行類的設計時,要盡量設計輕量級的構造方法。在程式執行過程中,除了建立顯示定義的物件外,還要建立很多臨時的物件,在建立型別的每個物件時都要呼叫型別的構造方法。如果構造方法過於複雜,就會降低程式執行的效率。

(二)盡量定義區域性變數,減少類成員變數的個數

少用全域性變數,多用區域性變數。全域性變數是放在資料儲存器中的,太多的全域性變數,會導致編譯器無足夠的記憶體分配;而區域性變數則大多定位於內部的暫存器中。使用暫存器的操作速度比資料儲存器快,指令也更靈活,有利於生成質量更高的**。

(三)**替換

使用周期短的指令代替周期長的指令,以降低運算的強度。

1.減少除法運算。用關係運算子兩邊乘除數避免除法操作,還有一些除法和取模的運算可以用位操作來代替。

因為位操作指令只需乙個指令週期,而「/」運算則需要呼叫子程式,**長,執行慢。例如:

優化前if((a/b)>c)和a=a/4

優化後if(a>(b*c))和a=a>>2

2.減少乘方運算。例如:

優化前a=pow(a,3.0)

優化後a=a*a*a

3.使用自加、自減指令。例如:

優化前a=a+1、a=a-l

優化後a++、a--

對除法來說,使用無符號數比有符號數會有更高的效率。在實際呼叫中,儘量減少資料型別的強制轉換;少用浮點運算,如果運算的結果能夠控制在誤差之內,則可用長整型代替浮點型。

(四)switch語句和迴圈語句的優化

程式設計時,對case值按照可能性排序,將最可能發生的情況放在第乙個,最不可能的情況放在最後乙個,可以提高switch語句塊的執行速度。

迴圈體是程式優化的乙個重要環節,對於一些不需要迴圈變數參加運算的模組,可以把它放到迴圈的外面。對於次數固定的迴圈體,for迴圈比while迴圈效率更高,減計數迴圈比增計數迴圈速度快。

(五)查表代替計算

在程式中盡量不進行非常複雜的運算,如浮點數的開方。對於這些消耗時間和資源的運算,可以採用空間換取時間的方法。預先將函式值計算出來,置於程式儲存區中,以後程式執行時直接查表即可,減小了程式執行過程中重複計算的工作量。

四、結論

嵌入式系統中的程式往往需要滿足實時性的要求,而且受到儲存空間的限制,因此對嵌入式系統中的程式需要進行反覆的優化。進行程式的優化可以從設計和編碼兩個方面入手。在設計階段,採用物件導向的設計方法,對型別反覆地進行歸納,盡量提高繼承程度。

和在編碼階段,要在資料定義、功能**的編寫等多個方面進行優化,提高**的執行效率。

參考文獻:

[1]王軍安,**嵌入式系統軟體優化設計[j].計算機工程與應用,2004.

[2]覃徵,王志敏等,程式設計方法與優化[m].西安交通大學出版社,2004.

[3]許汝峰譯,32位嵌入式系統程式設計[m].中國電力出版社,2002.

[4]張義青、李華貴,嵌入式程式設計中c/c++**的優化[j].微計算機資訊,2003.

[5]江開耀、張俊欄等,軟體工程[m].西安電子科技大學出版社,2004.

嵌入式系統的組成

嵌入式系統由硬體和軟體兩大部分組成,硬體一般由高效能微處理器和外圍介面電路組成,軟體一般由作業系統和應用程式構成,軟體和硬體之間由所謂的中間層 bsp層,板級支援包 連線。嵌入式系統的硬體有 嵌入式微處理器 儲存器 輸入輸出 i o a d d a 嵌入式系統的軟體有 作業系統 應用軟體。作業系統是...

嵌入式系統設計

課程學習 題目 基於arm嵌入式影象處理系統設計與實現 院系 資訊工程與自動化學院 專業 模式識別與智慧型系統 學生姓名 學號指導老師 2013年08月10日 摘要本文主要設計了一種基於arm的可攜式影象採集處理系統。該系統以arm7 s3c44box 為核心,配上外圍電路以實現影象處理功能,並結合...

嵌入式系統應用

電子資訊工程系實驗報告 課程名稱 嵌入式系統應用 實驗專案名稱 實驗3 gpio 中斷 定時器程式設計實驗時間 2012 10 10 班級 電信092姓名 學號 910706201 t span cr r 12 一 實驗目的 進一步熟悉ads1.2開發環境的使用方法,掌握利用ads1.2開發環境進行...