新聞中心

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

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

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

由于任務(wù)⑧執(zhí)行一次要幾秒鐘的,整個超級循環(huán)執(zhí)行一次至少大于任務(wù)⑧需要的,也就是說這個超級循環(huán)循環(huán)一次要幾秒鐘,將滿足不了各任務(wù)響應(yīng)時間的要求。
要解決這個問題,只有把任務(wù)⑧拆分成很多個子任務(wù),將每個子任務(wù)的耗時壓縮到10 ms左右,并定義好各個子任務(wù)完成后的狀態(tài),在超級大循環(huán)中每次根據(jù)狀態(tài)只執(zhí)行一個子任務(wù),程序結(jié)構(gòu)如下:
while(1){
任務(wù)①;
任務(wù)②;
……
switch(子任務(wù)狀態(tài)){
case 子任務(wù)狀態(tài)①:
子任務(wù)①;
break;
……
case 子任務(wù)狀態(tài)②:
子任務(wù)②;
break;
……
case 子任務(wù)狀態(tài)c.JPG
子任務(wù)c.JPG;
break;
}
}
這樣,就需要把一個耗時幾秒的FFT運算任務(wù)拆分成幾百個耗時10 ms左有的子任務(wù),這顯然是不可接受的。除此之外,超級大循環(huán)結(jié)構(gòu)隱含的一個缺點就是隨著任務(wù)的增加,循環(huán)體的執(zhí)行時間是線性增加的,在實際設(shè)計中即使沒有像任務(wù)⑧那樣的高耗時任務(wù),當(dāng)功能增加時要保證響應(yīng)的及時性也是一個不小的挑戰(zhàn)。
1.2 使用“時間”進(jìn)行
“時間”的核心是建立一個基丁時間的合作式的任務(wù)調(diào)度器,在中盡量減少事件觸發(fā)(減少中斷的使用),系統(tǒng)通過任務(wù)調(diào)度器完成各任務(wù)的調(diào)度執(zhí)行,下面是“時間觸發(fā)編程”的典型程序結(jié)構(gòu):
d.JPG
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

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

關(guān)閉