新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌基于μC/OS-II嵌入式實時操作系統的低功耗開發

        基于嵌基于μC/OS-II嵌入式實時操作系統的低功耗開發

        作者: 時間:2009-09-01 來源:網絡 收藏

          本文將依次從系統硬件設計、系統軟件設計、利用μC/OS-II給出的內核擴展接口和產品應用特點這四個方面系統地討論系統設計。

          3.2 硬件設計

          3.2.1 設計的器件

          選擇低功耗的電子器件可以從根本上降低整個硬件系統的功耗。處理器是系統的硬件核心,消耗大量的功率,因此設計時應選用低功耗的處理器;另外,選擇低功耗的通信收發器(對于通信應用系統)、低功耗的外圍電路。

          本文中使用的微控制器是夏普公司的LH79520。LH79520有五種工作模式,分別是:運行模式、休眠模式、睡眠模式、停止模式1、停止模式2。處于不同的工作模式下,微控制器消耗的功率不同,處于運行模式的微控制器消耗的功率最多,處于停止模式2的微控制器消耗的功率最少。

          3.2.2 低功耗電路

          目前的半導體工藝主要有TTL工藝和CMOS工藝,CMOS工藝具有很低的功耗,在電路設計上盡量選用,使用CMLS系列電路時,其不用的輸入端不要懸空,因為懸空的輸入端可能存在的感應信號造成高低電平的轉換,轉換器件的功耗很大,盡量采用輸出為高的原則。同時盡量使用集成度高的器件,減少電路中使用的元件的個數,從而減少整機的功耗。

          3.2.3 分區/分時供電技術

          一個系統的所有組成部分并非時刻在工作,基于此,可采用分時/分區供電技術。原理是利用“開關”控制電源供電單元,在某一部分電路處于休眠狀態時,關閉其供電電源,僅保留工作部分的電源。

          本文使用的硬件平臺,使用了TI公司的直流電源轉換芯片TPS5430,給其他輔助板和主控板上的外設提供電源。

          3.2.4 降低處理器的時鐘頻率

          處理器的工作頻率和功耗的關系很大,頻率越高,功耗越大。可以動態改變處理器的時鐘以降低系統的總功耗。微控制器空閑時降低時鐘頻率;處于工作狀態時,提高時鐘頻率,全速運行處理事務。

          本文使用的硬件平臺的控制板所使用的時鐘,使用了外部晶振和鎖相環技術,可以在很寬的范圍內調整系統時鐘。

          3.3 軟件部分的設計

          至今,還沒有一個嚴格的標準來判斷一個軟件的低功耗特性,但是,設計者仍需盡量將應用的低功耗特性反映在軟件中,以避免那些“看不見”的功耗損失。

          3.3.1 中斷與查詢

          一個程序使用中斷方式還是查詢方式對于一些簡單的應用并不那么重要,但在其低功耗特性上卻相去甚遠。使用中斷方式,微控制器可以什么都不做,甚至可以進入等待模式或停止模式;而查詢方式下,微控制器必須不停地訪問I/O寄存器,這會帶來很多額外的功耗。

          本文是通過中斷通信方式與片上的兩個串口資源進行通信,而非采用查詢的方式,減少了串口占用處理器的工作時間,有效地降低了系統的功耗。

          3.3.2 宏的使用

          讀RAM會比讀Flash帶來更大的功耗,正是因為如此,低功耗性能突出的ARM微控制器在設計上僅允許一次子程序調用。因為微控制器進入子程序時,會首先將當前微控制器寄存器推入堆棧(RAM),在離開時又將微控制器寄存器彈出堆棧,這樣至少帶來兩次對RAM的操作。因此,考慮用宏定義來代替子程序調用。調用一個子程序還是一個宏在程序寫法上并沒有什么不同,但宏會在編譯時展開,微控制器只是順序執行指令,避免了調用子程序。這實際上是一種以空間換時間的思想。這樣做,不儀提高了程序的執行效率,同時可以減少系統的功耗。

          3.3.3 減少微控制器的運算量

          將一些運算的結果預先算好,放在Flash中,用查表的方法替代的計算,減少微控制器的運算工作量,可以有效地降低微控制器的功耗;不可避免的計算,算到精度夠了就結束,避免“過度”的計算;盡量使用短的數據類型,在精度允許的情況下,使用簡單函數代替復雜函數作近似,也可以減少功耗。

          3.3.4 減少微處理器的工作時間

          盡量減少CPU的全速運行時間以降低系統的功耗,使微控制器較長地處于空閑方式或掉電方式是用軟件設計降低系統功耗的關鍵。讓它盡量在短時間內完成對信息或數據的處理,然后就進入空閑或掉電方式,在關機狀態下讓它完全進入掉電方式,用定時中斷、外部中斷或系統復位將它喚醒。

          3.4 基于μC/OS-II內核擴展接口的低功耗模式

          利用任務調度的空閑時間使微控制器進入低功耗模式,以降低系統功耗這一思想在μC/OS-II內核設計之初就被注意到了。為此設計者特意留出了相應的內核擴展接口。用戶可以利用此接口,實現一個的低功耗系統。

          3.4.1、μC/OS-II的空閑任務擴展接口

          實現μC/OS-II低功耗特性的方法:利用μC/OS-II中空閑任務的擴展接口,使系統在空閑狀態下進入某種低功耗模式,降低系統功耗;利用時鐘節拍(本文使用LH79520內部定時器0作為時鐘節拍),周期性地喚醒CPU。CPU被喚醒之后,將執行節拍中斷服務程序,重新判斷是否有任務處于就緒態,如果有,就執行該任務;如果沒有,則重復上面的過程。

          μC/OS-II最多可以管理64個任務,并為每一個任務分配一個不同的優先級。每一個任務有五種可能的狀態――睡眠態、就緒態、運行態、等待態和中斷服務態。μC/OS-II屬于可剝奪型內核,也就是說,μC/OS-II總是運行進入就緒狀態的優先級最高的任務。一旦優先級高的任務進入就緒態,就可以將CPU從低優先級任務中搶過來。在μC/OS-II初始化時,會建立一個優先級最低的任務――空閑任務,在沒有任務進人就緒態的時候,空閑任務就會開始運行。空閑任務會調用一個函數――OSTaskI-dleHook()。這是留給用戶使用的內核擴展接口。空閑任務實際上并沒有什么事情可做,只是一個等待中斷的無限循環。因此用戶可以利用OSTaskIdleHook(),使CPU進入低功耗模式。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 赣州市| 安仁县| 沁源县| 迁安市| 二手房| 抚顺县| 瑞昌市| 即墨市| 连云港市| 方城县| 封开县| 靖江市| 高邑县| 吉隆县| 井冈山市| 康保县| 夏河县| 剑阁县| 泰兴市| 吉隆县| 丹阳市| 深圳市| 海门市| 雅安市| 江城| 伊金霍洛旗| 辉县市| 红原县| 昌吉市| 尚义县| 淮南市| 重庆市| 通渭县| 观塘区| 阿荣旗| 密山市| 基隆市| 巴南区| 建湖县| 长子县| 名山县|