?

SAFERTOS在新型智能負荷檢測儀中的應用

2012-12-07 06:17季愛明毛凌峰
電子技術應用 2012年7期
關鍵詞:信號量服務程序檢測儀

江 韜,季愛明,毛凌峰

(蘇州大學,江蘇 蘇州 215021)

1 SAFERTOS簡介

SAFERTOS是近年來歐美極為流行的實時操作系統,本文設計的新型智能負荷檢測儀中已將其內嵌于主控芯片LM3S9B96中免費使用。SAFERTOS是從一款開源實時操作系統FREERTOS演化而來的,并且在安全性方面做了很多優化。最重要的是,SAFERTOS通過了歐洲的一個安全認證,使其能夠用于醫療、工業等高安全系數領域。

實時系統的正確性不僅依賴于系統計算的邏輯結果,還依賴于產生這些結果的時間。因此,實時操作系統的調度機制和通信機制對于整個系統來說都是至關重要的[1]。SAFERTOS如大多數實時操作系統一樣支持任務調度、中斷管理、消息隊列等功能,而且內核本身精簡安全,是本應用的理想選擇。

1.1 任務調度

SAFERTOS任務有運行、阻塞、掛起和就緒4個狀態,被劃分為11(10~0)個優先級,其中等級10優先級最高。SAFERTOS的狀態轉換如圖1所示。任務被創建后處于就緒狀態,一旦調度器被開啟,系統就會根據調度算法,找出投入運行的就緒任務,使該任務獲得CPU和硬件資源后即開始運行。運行中的任務可能會由于等待某個事件而被阻塞一段時間,或者被一個例程掛起而由另一個例程恢復,此時調度器會重新進行調度[2]。

SAFERTOS采用搶占式和合作式任務調度,即基于優先級的搶占式調度與時間輪轉調度相結合的算法。SAFERTOS確保了CPU總是被具有最高優先級的就緒任務所控制,當系統中出現兩個或兩個以上就緒任務擁有相同的當前最高優先級時,調度器會使用時間片輪轉算法,將CPU時間平均分配給這些任務。系統至少應該有一個任務處于就緒狀態,因此優先級最低的空閑任務不會被阻塞或掛起。

1.2 任務間通信機制

多任務多個中斷處理過程有機地構成了嵌入式實時多任務應用程序,它們之間相互競爭CPU、共享內存和硬件等資源。任務間通信機制協調彼此運行的步調、彼此間傳遞的數據或信息,保證協同運行的各個任務具有正確的執行次序,協同完成某項工作。SAFERTOS提供的通信機制有臨界區和消息隊列兩種。

SAFERTOS采用傳統的實現臨界區的方法,即關中斷進入臨界區,開中斷出臨界區。SAFERTOS提供了隊列,用于任務間、任務與中斷服務程序之間安全地傳遞數據。隊列的基本元素為項目(item),每個隊列可以包含0個或多個項目,每個項目占內存空間的大小以及隊列包含項目的個數在隊列創建時可任意配置?;谶@種結構,隊列使用靈活,以此為基礎可以開發出實時操作系統常見的郵箱和信號量。

2 SAFERTOS與 μC/OS-II的比較

μC/OS-II(Micro-Control Operation System Version2)是一款源代碼開放的實時操作系統內核,由LABROSSE J J開發。μC/OS-II最大的特點是源代碼開放,移植性強。μC/OS-II是完全搶占式的內核,它總是運行優先級最高的就緒任務,并且提供了許多系統調用,如郵箱、信號量、動態內存分配、時間管理等[3]。μC/OS-II與SAFERTOS的功能比較如表1所示。

從表 1可以看出,SAFERTOS與μC/OS-II的功能差異不大,兩者皆支持中斷嵌套,有類似的任務間通信機制。受任務位圖的影響,μC/OS-II能建立的任務數目不超過56個,而SAFERTOS能夠創建的任務數目只受內存大小限制。SAFERTOS支持同等優先級的輪轉調度,這比μC/OS-II能更好地支持多任務后臺計算。出于安全考慮,SAFERTOS不支持動態內存分配。

3 郵箱與信號量

3.1 郵箱

郵箱用于任務、任務與中斷服務程序之間傳遞結構化數據或事件標志。郵箱實質上是消息的中轉站,一個任務或一個中斷服務程序通過內核服務可以把一個消息(即一段結構化數據)放到郵箱里去。每個郵箱有相應的正在等待消息的任務列表,要得到消息的任務會因為郵箱是空的而被掛起,直到收到消息[4]。

雖然SAFERTOS沒有直接提供郵箱機制,僅僅提供了一種配置靈活的隊列,但從本質上,SAFERTOS的隊列是一種未結構化的郵箱。而通過結構化隊列項目的內存緩存區,可以實現收發特定數據結構的郵箱機制。創建郵箱函數為mbox_create,其中參數mptr為郵箱內存緩存區首地址,msgcnt為隊列項目個數,msgsz為每個項目的大小,mboxptr為郵箱的句柄(郵箱的標志,供收發函數使用),則函數定義如下:

郵箱接收函數為 mbox_get,發送函數為 mbox_put。其中:參數mptr為郵箱句柄,msg為收發的結構化數據的地址,接收函數中的waitopt為獲取消息失敗,任務等待時間。函數定義如下:

3.2 信號量

某些軟硬件資源(例如Flash、串行總線、數據緩沖區等)會被不同任務同時訪問,使用信號量可以實現資源的互斥訪問。每種資源用一個信號量描述,當任務訪問該資源時,必須先成功獲取該信號量。

信號量由計數器和等待隊列組成,計數器描述可用信號量的個數,等待隊列用來掛起等待獲取信號量的任務。釋放信號量(V操作)計數器加1;獲取信號量(P操作)計數器減 1。如果計數器值小于 0,則獲取失敗,請求獲取信號量的任務被阻塞固定長時間,等待其他任務釋放信號量。從本質上來看,信號量是項目長度為零的隊列。定義的信號量數據結構如下:

創建信號量函數為SemaphoreCreate,需要的參數是信號量結構指針和計數器初始值。函數定義如下:

表1 μC/OS-II與SAFERTOS系統服務比較

獲取信號量函數為sem_p,釋放信號量函數為sem_v,其中,參數s為信號量指針,waitopt為獲取失敗等待時間。則函數定義如下:

4 SAFERTOS應用

4.1 智能負荷監測儀

負荷檢測儀是一種廣泛應用于配電變壓器運行狀態監測、運行管理、電能計量、無功補償和遠程通信的智能監測控制裝置[5]。其系統硬件結構圖如圖2所示。檢測儀采用LM3S9B96芯片作為主控芯片,控制整個系統運行;高速高精度電能計量專用芯片ADE7878采集計算電網參數;大容量片外Flash芯片存儲突發事件與電網歷史數據;GPRS通信模塊MC52i用于遠程通信;高精度時鐘芯片FM33256用于精確計時。

圖2 系統硬件結構

檢測儀軟件功能比較復雜,如果采用傳統的前后臺系統架構,則無法實現任務的優先級執行,任務的響應時間與后臺應用程序主循環執行時間有關,再加上前臺中斷程序的影響,任務的運行時間無法預測,這是實時系統難以容忍的[6]。所以需要一個實時操作系統來保證任務執行和執行時間的確定性。

4.2 任務劃分

根據系統各功能的內聚性、時間緊迫程度以及周期性執行原則,將系統劃分為九大任務,如圖3所示(圖中箭頭表示利用郵箱機制發送的事件標志或數據)。

電能累加任務最為緊急,它以非常短的周期讀取緩存中的電能數值并累加。該任務完成累加操作后調用 xTaskDelay函數,將CPU讓出一段時間后繼續執行累加操作。參數計算和無功補償任務以精確秒數周期運行,待定時時間到,由定時器中斷服務程序發送消息喚醒執行。遠程通信任務負責GPRS模塊數據收發,當接收到數據時,由UART中斷服務程序喚醒,并將數據傳遞給規約協議棧,喚醒規約任務。外部I/O事件(包括按鍵)發生時,I/O檢測任務喚醒用戶界面任務,改變用戶界面內容。數據庫用于電網歷史數據和突發事件的存儲,數據庫任務由產生相關數據和事件的任務喚醒。

4.3 啟動系統

基于SAFERTOS系統的啟動關鍵是配置調度器。調度器是SAFERTOS的核心,它負責管理任務狀態轉換、選擇就緒態任務運行、實現任務上下文切換。系統啟動步驟:(1)初始化最小系統,建立C運行環境。(2)設置初始化調度器所需的系統運行環境參數,包括CPU頻率、系統滴答頻率、系統堆棧位置和大小、中斷向量表地址。這些參數包含在結構體xPORT_INIT_PARAMETERS中。(3)建立空閑任務運行環境,調用vTaskInitializeScheduler函數初始化調度器。(4)建立任務。SAFERTOS創建任務采用xTaskCreate函數,創建任務需要指明任務的名稱、優先級、堆棧位置及大小等信息。(5)初始化系統硬件設備。(6)調用startScheduler函數啟動調度器。

調度器啟動后,優先級最高的任務被調度運行,系統啟動完畢。

以上介紹了實時操作系統SAFERTOS在新型智能負荷檢測儀中的應用,經測試,該負荷檢測儀體現了較強的實時性、精確的參數計算、穩定的數據存儲與遠程通信。

[1]魏軍華.嵌入式實時操作系統概述[J].科技廣場,2011(1):254-256.

[2]Texas Instruments.SAFERTOS user’s manual.2009.

[3]LABROSSE J J.嵌入式實時操作系統 μC/OS-II[M].邵貝貝譯.北京:北京航空航天大學出版社,2001:178-185.

[4]郭鵬,羅浩,廖明宏.實時操作系統中任務間通信的一種方法[J].哈爾濱商業大學學報,2003,19(5):561-564.

[5]高璞,高永華,郝建紅.基于ARM和 GPRS的變壓器負荷檢測儀[J].儀器儀表用戶,2010,17(2):36-37.

[6]羅蕾.嵌入式實時操作系統及應用開發[M].北京:北京航空航天大學出版社,2011:73-75.

猜你喜歡
信號量服務程序檢測儀
SylixOS系統的中斷嵌套機制研究與實現
基于C#的進程守護程序的設計
UDP穿透NAT技術實現數據喚醒車聯網T-Box設備的方案
一種防雷接地裝置的便攜式檢測儀電路
Nucleus PLUS操作系統信號量機制的研究與測試
基于555振蕩器的地溝油頻率檢測儀
多功能空氣質量遠程檢測儀
水利工程施工監理服務程序及質量控制
硬件信號量在多核處理器核間通信中的應用
巧用故障檢測儀中的Reset功能
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合