• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SAFERTOS在新型智能負荷檢測儀中的應(yīng)用

      2012-12-07 06:17:50季愛明毛凌峰
      電子技術(shù)應(yīng)用 2012年7期
      關(guān)鍵詞:信號量服務(wù)程序檢測儀

      江 韜,季愛明,毛凌峰

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

      1 SAFERTOS簡介

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

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

      1.1 任務(wù)調(diào)度

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

      SAFERTOS采用搶占式和合作式任務(wù)調(diào)度,即基于優(yōu)先級的搶占式調(diào)度與時間輪轉(zhuǎn)調(diào)度相結(jié)合的算法。SAFERTOS確保了CPU總是被具有最高優(yōu)先級的就緒任務(wù)所控制,當(dāng)系統(tǒng)中出現(xiàn)兩個或兩個以上就緒任務(wù)擁有相同的當(dāng)前最高優(yōu)先級時,調(diào)度器會使用時間片輪轉(zhuǎn)算法,將CPU時間平均分配給這些任務(wù)。系統(tǒng)至少應(yīng)該有一個任務(wù)處于就緒狀態(tài),因此優(yōu)先級最低的空閑任務(wù)不會被阻塞或掛起。

      1.2 任務(wù)間通信機制

      多任務(wù)多個中斷處理過程有機地構(gòu)成了嵌入式實時多任務(wù)應(yīng)用程序,它們之間相互競爭CPU、共享內(nèi)存和硬件等資源。任務(wù)間通信機制協(xié)調(diào)彼此運行的步調(diào)、彼此間傳遞的數(shù)據(jù)或信息,保證協(xié)同運行的各個任務(wù)具有正確的執(zhí)行次序,協(xié)同完成某項工作。SAFERTOS提供的通信機制有臨界區(qū)和消息隊列兩種。

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

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

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

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

      3 郵箱與信號量

      3.1 郵箱

      郵箱用于任務(wù)、任務(wù)與中斷服務(wù)程序之間傳遞結(jié)構(gòu)化數(shù)據(jù)或事件標(biāo)志。郵箱實質(zhì)上是消息的中轉(zhuǎn)站,一個任務(wù)或一個中斷服務(wù)程序通過內(nèi)核服務(wù)可以把一個消息(即一段結(jié)構(gòu)化數(shù)據(jù))放到郵箱里去。每個郵箱有相應(yīng)的正在等待消息的任務(wù)列表,要得到消息的任務(wù)會因為郵箱是空的而被掛起,直到收到消息[4]。

      雖然SAFERTOS沒有直接提供郵箱機制,僅僅提供了一種配置靈活的隊列,但從本質(zhì)上,SAFERTOS的隊列是一種未結(jié)構(gòu)化的郵箱。而通過結(jié)構(gòu)化隊列項目的內(nèi)存緩存區(qū),可以實現(xiàn)收發(fā)特定數(shù)據(jù)結(jié)構(gòu)的郵箱機制。創(chuàng)建郵箱函數(shù)為mbox_create,其中參數(shù)mptr為郵箱內(nèi)存緩存區(qū)首地址,msgcnt為隊列項目個數(shù),msgsz為每個項目的大小,mboxptr為郵箱的句柄(郵箱的標(biāo)志,供收發(fā)函數(shù)使用),則函數(shù)定義如下:

      郵箱接收函數(shù)為 mbox_get,發(fā)送函數(shù)為 mbox_put。其中:參數(shù)mptr為郵箱句柄,msg為收發(fā)的結(jié)構(gòu)化數(shù)據(jù)的地址,接收函數(shù)中的waitopt為獲取消息失敗,任務(wù)等待時間。函數(shù)定義如下:

      3.2 信號量

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

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

      創(chuàng)建信號量函數(shù)為SemaphoreCreate,需要的參數(shù)是信號量結(jié)構(gòu)指針和計數(shù)器初始值。函數(shù)定義如下:

      表1 μC/OS-II與SAFERTOS系統(tǒng)服務(wù)比較

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

      4 SAFERTOS應(yīng)用

      4.1 智能負荷監(jiān)測儀

      負荷檢測儀是一種廣泛應(yīng)用于配電變壓器運行狀態(tài)監(jiān)測、運行管理、電能計量、無功補償和遠程通信的智能監(jiān)測控制裝置[5]。其系統(tǒng)硬件結(jié)構(gòu)圖如圖2所示。檢測儀采用LM3S9B96芯片作為主控芯片,控制整個系統(tǒng)運行;高速高精度電能計量專用芯片ADE7878采集計算電網(wǎng)參數(shù);大容量片外Flash芯片存儲突發(fā)事件與電網(wǎng)歷史數(shù)據(jù);GPRS通信模塊MC52i用于遠程通信;高精度時鐘芯片F(xiàn)M33256用于精確計時。

      圖2 系統(tǒng)硬件結(jié)構(gòu)

      檢測儀軟件功能比較復(fù)雜,如果采用傳統(tǒng)的前后臺系統(tǒng)架構(gòu),則無法實現(xiàn)任務(wù)的優(yōu)先級執(zhí)行,任務(wù)的響應(yīng)時間與后臺應(yīng)用程序主循環(huán)執(zhí)行時間有關(guān),再加上前臺中斷程序的影響,任務(wù)的運行時間無法預(yù)測,這是實時系統(tǒng)難以容忍的[6]。所以需要一個實時操作系統(tǒng)來保證任務(wù)執(zhí)行和執(zhí)行時間的確定性。

      4.2 任務(wù)劃分

      根據(jù)系統(tǒng)各功能的內(nèi)聚性、時間緊迫程度以及周期性執(zhí)行原則,將系統(tǒng)劃分為九大任務(wù),如圖3所示(圖中箭頭表示利用郵箱機制發(fā)送的事件標(biāo)志或數(shù)據(jù))。

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

      4.3 啟動系統(tǒng)

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

      調(diào)度器啟動后,優(yōu)先級最高的任務(wù)被調(diào)度運行,系統(tǒng)啟動完畢。

      以上介紹了實時操作系統(tǒng)SAFERTOS在新型智能負荷檢測儀中的應(yīng)用,經(jīng)測試,該負荷檢測儀體現(xiàn)了較強的實時性、精確的參數(shù)計算、穩(wěn)定的數(shù)據(jù)存儲與遠程通信。

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

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

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

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

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

      [6]羅蕾.嵌入式實時操作系統(tǒng)及應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2011:73-75.

      猜你喜歡
      信號量服務(wù)程序檢測儀
      基于STM32的mbedOS信號量調(diào)度機制剖析
      基于移動終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計
      基于C#的進程守護程序的設(shè)計
      視聽(2020年3期)2020-06-11 14:28:18
      一種防雷接地裝置的便攜式檢測儀電路
      電子制作(2019年7期)2019-04-25 13:16:56
      Nucleus PLUS操作系統(tǒng)信號量機制的研究與測試
      基于555振蕩器的地溝油頻率檢測儀
      電子制作(2017年20期)2017-04-26 06:57:32
      水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
      巧用故障檢測儀中的Reset功能
      μC/OS- -III對信號量的改進
      Linux操作系統(tǒng)信號量機制的實時化改造
      黄陵县| 贵港市| 克拉玛依市| 交城县| 兴和县| 五莲县| 盐亭县| 廊坊市| 秦皇岛市| 肇州县| 阿合奇县| 莆田市| 武山县| 固安县| 云浮市| 惠州市| 忻城县| 蕲春县| 井冈山市| 潍坊市| 乐平市| 休宁县| 石台县| 吉林省| 孟村| 阜康市| 萨嘎县| 扶绥县| 佛坪县| 绥江县| 吉隆县| 交口县| 福安市| 奇台县| 宁强县| 嘉义市| 柏乡县| 社旗县| 迭部县| 云梦县| 景宁|