<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于RTOS與DSPs的微機保護裝置

          基于RTOS與DSPs的微機保護裝置

          作者: 時間:2011-08-18 來源:網(wǎng)絡 收藏

          1 引言

          本文引用地址:http://www.ex-cimer.com/article/150325.htm

            我國電力系統(tǒng)的得到迅速發(fā)展,已在電力系統(tǒng)得到了廣泛應用。從早期的8位機,到現(xiàn)在16/32位機,性能得到了提高,運算能力也大大加強了。

            的性能及其可靠性取決于軟、硬件,因此軟件的編寫和硬件的選擇是一項關鍵性的工作。我們在編寫軟件時,通常先畫好流程圖,然后按著流程圖來編程,一般是一個無限循環(huán),循環(huán)中調用相應的函數(shù)(子程序)完成相應的操作(稱為后臺行為或任務級);用中斷來處理隨機事件(稱為前臺行為或中斷級)。程序流程如圖1所示。任務的響應時間取決于后臺循環(huán)執(zhí)行的時間(在不同的狀態(tài)或運行方式下,執(zhí)行時間不同),程序經(jīng)過某一點的時間不能確定,程序修改了,循環(huán)時序就受到影響。這種編程方法,使得程序開發(fā)周期長,修改困難,任何一處受到破壞,就會死機。在8位機時代,還不算明顯,隨著16/32位機的使用及系統(tǒng)復雜性的增加,表現(xiàn)的越來越明顯了。這種傳統(tǒng)的前臺/后臺程序開發(fā)機制已不能滿足日益復雜和多樣化的的應用需求,采用來開發(fā)微機保護應用程序,現(xiàn)已成為開發(fā)人員的發(fā)展方向。

            目前運行的微機保護大多數(shù)為16位單片機,對于常規(guī)的保護其性能基本能滿足。但16位單片機往往受到運算速度等因素的影響,不易實現(xiàn)更復雜的算法和更高采樣速率。隨著微電子和半導體技術的發(fā)展,已運用在了眾多領域。由于的強大數(shù)字信號處理能力,越來越受到開發(fā)人員的青睞。

            2 關于(Real Time Operating System)實時操作系統(tǒng)

            實時操作系統(tǒng)是一段在系統(tǒng)啟動后,首先執(zhí)行的背景程序。用戶的應用程序是運行于之上的各個任務,RTOS根據(jù)各個任務的要求,進行資源管理、消息管理、任務調度,異常處理等工作。實時多任務內核是RTOS的關鍵部分,基本功能包括任務管理、定時器管理、存儲管理、資源管理、事件管理、系統(tǒng)管理、消息管理等。RTOS與其它OS相比主要特征是規(guī)模小、可裁剪、微內核。

            在RTOS機制下開發(fā)多任務程序,CPU的運行時間被劃分為許多小的時間片,RTOS按照某種調度算法分別分配給不同的任務,多個任務分別在自己的時間片內訪問CPU,達到微觀上輪流運行,宏觀上并發(fā)運行的多任務效果。程序流程如圖2所示。

            任務是單線程序列指令形成的一個無限循環(huán),它有五種狀態(tài):休眠、就緒、運行、等待和中斷。實時內核是通過任務控制塊(TCB)來管理任務的。程序調用內核服務創(chuàng)建任務,并在任務中分配一個任務控制塊,進行初始化,使任務進入就緒狀態(tài)。實時內核以事件為基礎,根據(jù)任務執(zhí)行的狀態(tài),對任務進行切換,狀態(tài)也隨之變化。在實時任務中,內存中存在多個任務控制模塊,以及各個任務獨立的私有堆棧。

            任務進行切換,首先要保存CPU寄存器內容到當前任務的任務控制塊中,然后從新任務的任務控制塊裝載堆棧指針,并將新任務的上下文裝載到CPU寄存器中,這樣就從一個任務切換到另一個任務運行。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();