基于時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)與應(yīng)用
根據(jù)筆者經(jīng)驗(yàn),一個(gè)較為可取的時(shí)間片是略大于一次典型的交互所需要的時(shí)間,使大多數(shù)進(jìn)程在一個(gè)時(shí)間片內(nèi)完成。經(jīng)反復(fù)嘗試,時(shí)間片選擇在1~5ms之間執(zhí)行效率較高,這樣既可滿(mǎn)足響應(yīng)速度的要求又能把任務(wù)執(zhí)行的時(shí)間降到最低。該時(shí)間與任務(wù)個(gè)數(shù)和任務(wù)運(yùn)行時(shí)間均有關(guān),具體大小視情況而定。
4.3 中斷服務(wù)程序
建議該函數(shù)由CTC方式激活,當(dāng)某任務(wù)需要運(yùn)行時(shí),使之處于就緒態(tài)等待被執(zhí)行。該函數(shù)內(nèi)容由具體任務(wù)而定。
4.4 調(diào)度器任務(wù)添加函數(shù)
該函數(shù)用來(lái)將任務(wù)添加到消息隊(duì)列,以保證條件滿(mǎn)足時(shí)被調(diào)用,函數(shù)如下所示:
{定義靜態(tài)變量i;循環(huán)判斷任務(wù)隊(duì)列是否有空間;若無(wú),報(bào)錯(cuò)返回;否則,添加任務(wù);}
4.5 調(diào)度函數(shù)
刷新函數(shù)雖然能夠直接激活任務(wù),但若直接運(yùn)行,長(zhǎng)任務(wù)將破壞時(shí)標(biāo)中斷,這意味著所有的系統(tǒng)定時(shí)都將受到嚴(yán)重影響,造成許多任務(wù)不能被調(diào)度。因此,為了在長(zhǎng)任務(wù)存在的情況下使調(diào)度器的可靠性最大化,分離刷新和調(diào)度這兩個(gè)操作是必要的。
時(shí)間觸發(fā)嵌入式系統(tǒng)采用的是FCFS算法,為了提高系統(tǒng)的響應(yīng)速度,必須要求Durationtask
void SCH_Dispatch_Tasks(void){定義靜態(tài)變量i;如果運(yùn)行標(biāo)志位大于0,則執(zhí)行該任務(wù);該標(biāo)志位清零;如果是單次任務(wù),則將其刪除;}
4.6 調(diào)度器任務(wù)刪除函數(shù)
void SCH_Delete_Task(const uint8task_id){定義 靜態(tài)返回值;若指針函數(shù)為空,返回空閑代碼;否則,對(duì)其延遲、周期、狀態(tài)等變量清零;返回代碼;}
5.應(yīng)用實(shí)驗(yàn)
以電磁爐系統(tǒng)為例,進(jìn)一步介紹基于AVR微控制器的時(shí)間觸發(fā)嵌入式系統(tǒng)的具體應(yīng)用。
電磁爐系統(tǒng)是一個(gè)復(fù)雜的嵌入式系統(tǒng),如圖2所示,AVR要處理大量的外圍設(shè)備,為便于開(kāi)發(fā),將整個(gè)程序按照硬件及功能進(jìn)行模塊劃分,各個(gè)功能模塊之間通過(guò)傳遞消息的方式來(lái)完成多任務(wù)的處理。
針對(duì)該應(yīng)用,可設(shè)計(jì)功能模塊:MSGMap[],該數(shù)組由各個(gè)功能模塊組成,具體子函數(shù)如表1所列,使用函數(shù)數(shù)組的方式可以增強(qiáng)程序的擴(kuò)展能力。如果有新的外設(shè),只需在這里添加對(duì)應(yīng)的模塊入口,并完成相應(yīng)的模塊就可以增加系統(tǒng)的功能。
其中每個(gè)任務(wù)的運(yùn)行周期間隔時(shí)間是程序中設(shè)定的參數(shù)(周期應(yīng)為4ms的倍數(shù)),具體執(zhí)行時(shí)間由AVR Studio測(cè)得,均應(yīng)小于設(shè)定時(shí)間片4ms,否則應(yīng)用將出錯(cuò),需重新設(shè)定時(shí)間片大小或再次分割功能模塊。其中看門(mén)狗處理任務(wù)是唯一的搶占式任務(wù)。
6.結(jié)論
實(shí)驗(yàn)表明,以AVR微控制器為核心的控制系統(tǒng),外圍擴(kuò)展功能強(qiáng)大、開(kāi)發(fā)較簡(jiǎn)單,結(jié)合以時(shí)間觸發(fā)理念為內(nèi)核的操作系統(tǒng),設(shè)計(jì)時(shí)一次只為一個(gè)任務(wù)分配空間,每個(gè)任務(wù)的存儲(chǔ)開(kāi)銷(xiāo)只有8個(gè)字節(jié),采用由C語(yǔ)言與匯編混合式編程,簡(jiǎn)單、安全,可預(yù)測(cè)性強(qiáng),尤其適用于對(duì)成本和穩(wěn)定性均有要求的中小企業(yè)。隨著嵌入式系統(tǒng)的發(fā)展,基于AVR的時(shí)間觸發(fā)嵌入式系統(tǒng)必然有著廣闊的應(yīng)用前景。
電磁爐相關(guān)文章:電磁爐原理
評(píng)論