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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 改進(jìn)型時(shí)間觸發(fā)嵌入式系統(tǒng)編程模式

          改進(jìn)型時(shí)間觸發(fā)嵌入式系統(tǒng)編程模式

          作者: 時(shí)間:2012-07-18 來源:網(wǎng)絡(luò) 收藏

          中每個(gè)任務(wù)都定義了優(yōu)先級、任務(wù)循環(huán)周期和任務(wù)延遲定時(shí)器中斷程序SCH Updatc()按設(shè)定的節(jié)拍對任務(wù)隊(duì)列進(jìn)行刷新,在超級大循環(huán)中只執(zhí)行任務(wù)調(diào)度器SCH_Dispatch_Tasks(),根據(jù)任務(wù)隊(duì)列的狀念安排任務(wù)的執(zhí)行。
          這種結(jié)構(gòu)避免了超級大循環(huán)結(jié)構(gòu)循環(huán)隨代碼量的增加而線性增加的問題,但是由于任務(wù)是不可剝奪的,一旦任務(wù)啟動執(zhí)行,任務(wù)調(diào)度器只有在當(dāng)前任務(wù)完成后才有機(jī)會執(zhí)行,這就要求每個(gè)任務(wù)占用CPU的不能太長,否則將影響整個(gè)的響應(yīng)速度。所以,F(xiàn)FT運(yùn)算在這種下還是必須進(jìn)行有效的拆分,否則就必須提高CPU的檔次或使用可剝奪型的搶先式RTOS,這勢必造成系統(tǒng)成本的增加。那么有沒有更好的解決辦法呢?
          下面的結(jié)構(gòu)塒“時(shí)間編程”進(jìn)行了改進(jìn),使之在不提高硬件成本的情況下,使編程人員更直觀地定義任務(wù),減少任務(wù)特性對系統(tǒng)程序結(jié)構(gòu)的沖擊,使程序結(jié)構(gòu)簡單、明了并提高系統(tǒng)的實(shí)時(shí)響應(yīng)速度。

          2 對“時(shí)間編程”的改進(jìn)
          根據(jù)多年系統(tǒng)編程的經(jīng)驗(yàn),通常嵌入系統(tǒng)的任務(wù)可以劃分成3種類型:
          ①及時(shí)型任務(wù)。這類任務(wù)是事件型的,一旦事件發(fā)生,系統(tǒng)必須在限定的時(shí)間內(nèi)進(jìn)行響應(yīng),對這類任務(wù),最自然的方法就是使用中斷來完成,即定義成“前后臺方式”中的后臺任務(wù)。
          ②周期型任務(wù)。這類任務(wù)是時(shí)間觸發(fā)式周期型的,系統(tǒng)必須保證在指定的周期內(nèi)執(zhí)行任務(wù),“時(shí)間觸發(fā)編程模式”可以很好地滿足這類任務(wù)的需求。
          ③背景型任務(wù)。這類任務(wù)是非實(shí)時(shí)型的,實(shí)時(shí)性不是非常重要,系統(tǒng)在運(yùn)行過程中可隨時(shí)中斷這類任務(wù)以便執(zhí)行前兩類任務(wù),系統(tǒng)只要能充分利用資源盡最大可能快速完成這類任務(wù)即可,這類任務(wù)最適合定義成“前后臺方式”中的前臺任務(wù)。
          根據(jù)以上任務(wù)分類,對“時(shí)間觸發(fā)編程模式”的改進(jìn)可概括成以下需求:
          ◆任務(wù)分3類,1類任務(wù)優(yōu)先級最高,3類任務(wù)優(yōu)先級最低;
          ◆高優(yōu)先級的任務(wù)可中斷低優(yōu)先級任務(wù)的執(zhí)行,同級的任務(wù)之間不可相互剝奪;
          ◆實(shí)際沒計(jì)中為提高系統(tǒng)的可預(yù)測性,應(yīng)盡量減少1類任務(wù)的數(shù)量及1類任務(wù)的執(zhí)行時(shí)間;
          ◆為降低系統(tǒng)資源的占用,系統(tǒng)不給任務(wù)劃分單獨(dú)的堆??臻g。
          以上改進(jìn)的本質(zhì)是設(shè)計(jì)3個(gè)優(yōu)先級的簡單的任務(wù)調(diào)度機(jī)制,高優(yōu)先級的任務(wù)可中斷低優(yōu)先級的任務(wù),同優(yōu)先級的任務(wù)之間不能相互剝奪,該調(diào)度機(jī)制不為每個(gè)單獨(dú)的任務(wù)保存任務(wù)上下文和單獨(dú)的堆棧,這樣可以減少該編程模式對系統(tǒng)資源的需求。
          可剝奪式RTOS中的一個(gè)高優(yōu)先級任務(wù)中斷一個(gè)低優(yōu)先級的任務(wù)時(shí),會保存好低優(yōu)先級任務(wù)的上下文并把該低優(yōu)先級任務(wù)的局部變量保存在本任務(wù)單獨(dú)的堆棧中,如果系統(tǒng)不給任務(wù)分配單獨(dú)的堆棧,如何保證高優(yōu)先級任務(wù)退出后,低優(yōu)先級任務(wù)執(zhí)行環(huán)境的恢復(fù)呢?
          對這個(gè)問題,可以借鑒中斷的處理機(jī)制用以下辦法予以解決:
          ①在系統(tǒng)中設(shè)計(jì)一個(gè)定時(shí)中斷函數(shù),該函數(shù)的功能就是執(zhí)行周期性任務(wù)的調(diào)度,該定時(shí)中斷在所有中斷中優(yōu)先級最低。
          ②在系統(tǒng)中設(shè)計(jì)另一個(gè)定時(shí)中斷函數(shù),該函數(shù)的功能是刷新周期型任務(wù)的任務(wù)管理隊(duì)列,為任務(wù)調(diào)度提供支持,本定時(shí)中斷函數(shù)的優(yōu)先級在系統(tǒng)中次低。
          ③周期型任務(wù)就是一個(gè)函數(shù),該函數(shù)入口的第一個(gè)操作是開中斷,允許任務(wù)執(zhí)行期間被中斷以便響應(yīng)及時(shí)型任務(wù)。
          ④背景型任務(wù)就是在主函數(shù)超級循環(huán)中執(zhí)行的代碼,該代碼可隨時(shí)被及時(shí)型和周期型任務(wù)中斷,當(dāng)系統(tǒng)沒有及時(shí)型任務(wù)和周期型任務(wù)時(shí)才循環(huán)執(zhí)行背景型任務(wù)的代碼。
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();