μC/O-SII內核擴展接口的低功耗模式
發布時間:2007/8/30 0:00:00 訪問次數:479
摘要:在嵌入式實時操作系統中,如何在操作系統層面盡量降低系統功耗已成為一個值得研究的問題。本文以嵌入式實時操作系統μC/OSII為例,以飛思卡爾8位單片機HCS08GT60作為硬件平臺,詳細討論如何實現一個低功耗的實時操作系統,如何利用μC/OSII內核擴展接口省電;詳細分析如何選擇一種合適的單片機低功耗模式,說明利用μC/OSII內核擴展接口實現一個低功耗系統的可行性。
關鍵詞:μC/OS-II 內核擴展接口 HCS08GT60 低功耗模式
引 言
隨著消費類電子產品的功能日益復雜,在其中移植或固化實時操作系統已不是新鮮事了,如手機、PDA等等。對于該類產品,低功耗特性往往占有舉足輕重的地位。如何在操作系統層面上,盡量降低系統功耗,是一個值得探討的問題。一般來說,嵌入式CPU都具有低功耗的工作模式,如果在任務調度的空閑時間,使CPU進入這種模式,就能大幅度降低系統功耗。
本文以嵌入式實時操作系統μC/OS-II在飛思卡爾8位單片機HCS08GT60上的移植為例,詳細討論如何利用μC/OS-II給出的內核擴展接口,實現一個低功耗的嵌入式實時系統;進一步分析如何選擇一種合適的低功耗模式。μC/OS-II是一種可移植、可固化、可裁剪的可剝奪型多任務內核。由于其源碼公開、注釋詳盡、內核設計概念清晰,已成為世界上學習和使用頻率較高的實時操作系統。2000年7月,μC/OS-II V2.52通過了美國航空航天管理局的安全認證,其可靠性得到了進一步的驗證。利用任務調度的空閑時間使CPU進入低功耗模式,以降低系統功耗這一思想在μC/OS-II內核設計之初就被注意到了。為此設計者特意留出了相應的內核擴展接口。用戶可以利用此接口,實現一個實時的低功耗系統。
1 利用空閑任務擴展接口使CPU進入低功耗模式
實現μC/OS-II低功耗特性的方法很簡單:用戶可以利用μC/OS-II中空閑任務的擴展接口,使系統在空閑狀態下進入某種低功耗模式,降低系統功耗;同時利用RTI信號作為時鐘節拍,周期性地喚醒CPU。CPU被喚醒之后,將執行節拍中斷服務程序,重新判斷是否有任務處于就緒態。如果有,就執行該任務;如果沒有,則重復上面的過程。
μC/OS-II最多可以管理64個任務,并為每一個任務分配一個不同的優先級。每一個任務有五種可能的狀態——睡眠態、就緒態、運行態、等待態和中斷服務態。μC/OS-II屬于可剝奪型內核,也就是說,μC/OS-II總是運行進入就緒狀態的優先級最高的任務。一旦優先級高的任務進入就緒態,就可以將CPU從低優先級任務中搶過來。
在μC/OS-II初始化時,會建立一個優先級最低的任務——空閑任務,在沒有任務進入就緒態的時候,空閑任務就會開始運行。空閑任務會調用一個函數——OSTaskIdleHook()。這是留給用戶使用的內核擴展接口。空閑任務實際上并沒有什么事情可做①,只是一個等待中斷的無限循環。因此用戶可以利用OSTaskIdleHook(),使CPU進入低功耗模式。
① 事實上,空閑任務可以為統計任務提供一個計數,用以統計CPU的利用率,但該工作完全可以在改動OSTaskIdleHook()之前運行。
用戶不必擔心整個內核因為系統進入低功耗模式而停止運行。因為HCS08GT60允許RTI時鐘周期性地將CPU喚醒。喚醒之后的系統會和遇到節拍中斷一樣,進入OSTickISR()中斷服務程序,查看是否有任務進入了就緒態。如果還沒有,就再次進入低功耗模式。對于HCS08GT60,允許RTI時鐘的低功耗模式有WAIT模式、STOP2模式和STOP3模式三種,其功耗、系統恢復時間、喚醒中斷源等各不相同。下面介紹如何選擇一種合適的低功耗模式。
2 選擇合適的低功耗模式
2.1 HCS08GT60的低功耗模式
考慮到后面的討論要涉及到具體的低功耗模式,所以首先介紹一下單片機HCS08GT60的低功耗特性。HCS08GT60屬于飛思卡爾(原Motorola)HCS08系列單片機。該系列單片機的低功耗特性很突出;工作電壓可以在1.8~3.6 V之間選擇,有WAIT和STOP兩種低功耗模式。STOP模式可細分為STOP3、STOP2和STOP1三種,功耗依次降低。WAIT模式下, CPU停止運行,但其他外圍模塊并不斷電,因此,系統隨時可以響應各種中斷。HCS08GT60的三種STOP模式如表1所列。
表1三種STOP子模式的特點
從表1可以看出,在STOP1模式中,喚醒CPU只能通過IRQ中斷或復位信號,由于無法提供時鐘節拍,內核的任務調度無法實現;而在STOP2和STOP3中,RTI都可以作為系統的喚醒中斷源,內核可以使用RTI作為時鐘節拍。
STOP2模式與STOP3模式相比功耗更低;但是,STOP2模式下I/O寄存器是關閉的,必須在進入模式之前將I/O寄存器的值保存在RAM中,而在喚醒之后再從RAM拷貝到I/O寄存器。喚醒STOP2可以使用IRQ、復位信號和RTI。STOP3模式下,RAM和I/O寄存器內容將保持。另外,除STOP2模式允許的喚醒中斷源外,還允許鍵盤中斷喚醒CPU。
2.2 實時性、中斷源和功耗影響低功耗模式的選擇有三個主要因素:功耗、中斷源和實時性
摘要:在嵌入式實時操作系統中,如何在操作系統層面盡量降低系統功耗已成為一個值得研究的問題。本文以嵌入式實時操作系統μC/OSII為例,以飛思卡爾8位單片機HCS08GT60作為硬件平臺,詳細討論如何實現一個低功耗的實時操作系統,如何利用μC/OSII內核擴展接口省電;詳細分析如何選擇一種合適的單片機低功耗模式,說明利用μC/OSII內核擴展接口實現一個低功耗系統的可行性。
關鍵詞:μC/OS-II 內核擴展接口 HCS08GT60 低功耗模式
引 言
隨著消費類電子產品的功能日益復雜,在其中移植或固化實時操作系統已不是新鮮事了,如手機、PDA等等。對于該類產品,低功耗特性往往占有舉足輕重的地位。如何在操作系統層面上,盡量降低系統功耗,是一個值得探討的問題。一般來說,嵌入式CPU都具有低功耗的工作模式,如果在任務調度的空閑時間,使CPU進入這種模式,就能大幅度降低系統功耗。
本文以嵌入式實時操作系統μC/OS-II在飛思卡爾8位單片機HCS08GT60上的移植為例,詳細討論如何利用μC/OS-II給出的內核擴展接口,實現一個低功耗的嵌入式實時系統;進一步分析如何選擇一種合適的低功耗模式。μC/OS-II是一種可移植、可固化、可裁剪的可剝奪型多任務內核。由于其源碼公開、注釋詳盡、內核設計概念清晰,已成為世界上學習和使用頻率較高的實時操作系統。2000年7月,μC/OS-II V2.52通過了美國航空航天管理局的安全認證,其可靠性得到了進一步的驗證。利用任務調度的空閑時間使CPU進入低功耗模式,以降低系統功耗這一思想在μC/OS-II內核設計之初就被注意到了。為此設計者特意留出了相應的內核擴展接口。用戶可以利用此接口,實現一個實時的低功耗系統。
1 利用空閑任務擴展接口使CPU進入低功耗模式
實現μC/OS-II低功耗特性的方法很簡單:用戶可以利用μC/OS-II中空閑任務的擴展接口,使系統在空閑狀態下進入某種低功耗模式,降低系統功耗;同時利用RTI信號作為時鐘節拍,周期性地喚醒CPU。CPU被喚醒之后,將執行節拍中斷服務程序,重新判斷是否有任務處于就緒態。如果有,就執行該任務;如果沒有,則重復上面的過程。
μC/OS-II最多可以管理64個任務,并為每一個任務分配一個不同的優先級。每一個任務有五種可能的狀態——睡眠態、就緒態、運行態、等待態和中斷服務態。μC/OS-II屬于可剝奪型內核,也就是說,μC/OS-II總是運行進入就緒狀態的優先級最高的任務。一旦優先級高的任務進入就緒態,就可以將CPU從低優先級任務中搶過來。
在μC/OS-II初始化時,會建立一個優先級最低的任務——空閑任務,在沒有任務進入就緒態的時候,空閑任務就會開始運行。空閑任務會調用一個函數——OSTaskIdleHook()。這是留給用戶使用的內核擴展接口。空閑任務實際上并沒有什么事情可做①,只是一個等待中斷的無限循環。因此用戶可以利用OSTaskIdleHook(),使CPU進入低功耗模式。
① 事實上,空閑任務可以為統計任務提供一個計數,用以統計CPU的利用率,但該工作完全可以在改動OSTaskIdleHook()之前運行。
用戶不必擔心整個內核因為系統進入低功耗模式而停止運行。因為HCS08GT60允許RTI時鐘周期性地將CPU喚醒。喚醒之后的系統會和遇到節拍中斷一樣,進入OSTickISR()中斷服務程序,查看是否有任務進入了就緒態。如果還沒有,就再次進入低功耗模式。對于HCS08GT60,允許RTI時鐘的低功耗模式有WAIT模式、STOP2模式和STOP3模式三種,其功耗、系統恢復時間、喚醒中斷源等各不相同。下面介紹如何選擇一種合適的低功耗模式。
2 選擇合適的低功耗模式
2.1 HCS08GT60的低功耗模式
考慮到后面的討論要涉及到具體的低功耗模式,所以首先介紹一下單片機HCS08GT60的低功耗特性。HCS08GT60屬于飛思卡爾(原Motorola)HCS08系列單片機。該系列單片機的低功耗特性很突出;工作電壓可以在1.8~3.6 V之間選擇,有WAIT和STOP兩種低功耗模式。STOP模式可細分為STOP3、STOP2和STOP1三種,功耗依次降低。WAIT模式下, CPU停止運行,但其他外圍模塊并不斷電,因此,系統隨時可以響應各種中斷。HCS08GT60的三種STOP模式如表1所列。
表1三種STOP子模式的特點
從表1可以看出,在STOP1模式中,喚醒CPU只能通過IRQ中斷或復位信號,由于無法提供時鐘節拍,內核的任務調度無法實現;而在STOP2和STOP3中,RTI都可以作為系統的喚醒中斷源,內核可以使用RTI作為時鐘節拍。
STOP2模式與STOP3模式相比功耗更低;但是,STOP2模式下I/O寄存器是關閉的,必須在進入模式之前將I/O寄存器的值保存在RAM中,而在喚醒之后再從RAM拷貝到I/O寄存器。喚醒STOP2可以使用IRQ、復位信號和RTI。STOP3模式下,RAM和I/O寄存器內容將保持。另外,除STOP2模式允許的喚醒中斷源外,還允許鍵盤中斷喚醒CPU。
2.2 實時性、中斷源和功耗影響低功耗模式的選擇有三個主要因素:功耗、中斷源和實時性