新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)與應(yīng)用

基于時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)與應(yīng)用

作者: 時(shí)間:2013-12-13 來源:網(wǎng)絡(luò) 收藏

1.引言

本文引用地址:http://2s4d.com/article/227567.htm

近年來,嵌入式發(fā)展迅速,采用51單片機(jī)死循環(huán)的事件觸發(fā)編程方式已逐漸不能滿足企業(yè)對產(chǎn)品穩(wěn)定性和安全性的要求。目前,軟件有VxWork、Linux、WinCE、μC/OS-II等,可出于成本和技術(shù)上的考慮,微控制器往往不會(huì)選取其進(jìn)行設(shè)計(jì)。在實(shí)際應(yīng)用中,往往會(huì)面臨同時(shí)應(yīng)付多外設(shè)、多任務(wù)的情況,則對它們的相互調(diào)度必不可少。就是這樣的簡單實(shí)用的操作系統(tǒng)。

本文設(shè)計(jì)了基于AVR微控制器的多任務(wù)調(diào)度器并應(yīng)用于實(shí)際。該調(diào)度器使用傳遞消息(message)的方式使得微控制器在多個(gè)任務(wù)及設(shè)備間切換。

2.AVR微控制器的結(jié)構(gòu)特點(diǎn)

AVR是目前使用以該系列的ATmega128為例說明,它采用哈佛結(jié)構(gòu),RISC指令集、低功耗、片上資源豐富的特點(diǎn),極大簡化了外圍電路,使系統(tǒng)更加穩(wěn)定可靠。其特點(diǎn)為設(shè)計(jì)提供了良好的硬件保證。

3.嵌入式兩種觸發(fā)方式的對比

在嵌入式系統(tǒng)中,通常采用兩種本質(zhì)上不同的調(diào)度方式:事件觸發(fā)和。事件觸發(fā)方式往往使用多級(jí)中斷來實(shí)現(xiàn),其發(fā)生時(shí)間具有隨機(jī)性;而時(shí)間觸發(fā)方式由一個(gè)全局時(shí)鐘驅(qū)動(dòng),系統(tǒng)的行為在功能與時(shí)間上都是確定的,即具有可預(yù)測性。

3.1 事件觸發(fā)方式存在的問題

嵌入式系統(tǒng)開發(fā)人員有一種中斷事件絕不會(huì)丟失的錯(cuò)誤觀念,這往往給開發(fā)的產(chǎn)品帶來災(zāi)難性的后果。中斷事件丟失在實(shí)際應(yīng)用中是一個(gè)不爭的事實(shí),產(chǎn)生的原因有多方面,但無外乎內(nèi)因和外因兩種。外因指嵌入式系統(tǒng)外產(chǎn)生的原因,這里主要指中斷源信號(hào)丟失或過于頻繁;而內(nèi)因又可分為硬件原因和軟件原因,硬件原因主要由所用嵌入式器件的中斷嵌套能力所致,軟件原因主要由開發(fā)者編程時(shí)對任務(wù)中斷優(yōu)先級(jí)設(shè)置錯(cuò)誤以及任務(wù)處理不當(dāng)所致。

例如,中斷0是一個(gè)高優(yōu)先級(jí)中斷,而中斷1是一個(gè)低優(yōu)先級(jí)中斷,則由高優(yōu)先級(jí)中斷激活的中斷服務(wù)程序不能被低優(yōu)先級(jí)的中斷打斷。于是,對第二個(gè)中斷的響應(yīng)將被延遲,甚至在一些情況下它有被完全忽略的可能。

如果多個(gè)中斷源可能在“隨機(jī)的”時(shí)間間隔產(chǎn)生中斷,則中斷響應(yīng)可能被遺漏。實(shí)際上,在同時(shí)有幾個(gè)有效的中斷源的情況下,幾乎不可能創(chuàng)建程序代碼來正確地處理所有可能的中斷組合。并且同時(shí)處理多個(gè)事件不但增加了系統(tǒng)復(fù)雜性,而且降低了系統(tǒng)在所有情況下的行為預(yù)測能力。至于使用效率,Metzner討論并得出結(jié)論:一個(gè)包含27個(gè)任務(wù)、采用RM調(diào)度算法的事件觸發(fā)系統(tǒng),CPU的實(shí)際利用率僅為18%.

3.2 時(shí)間觸發(fā)方式的優(yōu)勢

在該系統(tǒng)中,設(shè)計(jì)人員能夠通過仔細(xì)安排可控的順序,保證一次只處理一個(gè)事件。它的可預(yù)測性使其成為安全相關(guān)的系統(tǒng)的首選。

Kopetz首先提出:使用基于時(shí)間觸發(fā)的合作式調(diào)度器會(huì)使得系統(tǒng)有非常好的可預(yù)測性。除可提高可靠性之外,使用該方式有助于減輕CPU的負(fù)荷及存儲(chǔ)器的使用量。

4.時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)

在該調(diào)度器中,定時(shí)器的設(shè)置被分離出來,并使之不依賴于編譯器的數(shù)據(jù)類型以及處理器的位數(shù),通過修改該部分可以輕松移植到多種硬件平臺(tái)。系統(tǒng)整體方框圖如圖1所示:

基于時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)與應(yīng)用

4.1 消息隊(duì)列

消息隊(duì)列是調(diào)度器的核心,它是用戶自定義的數(shù)據(jù)類型,包括了每個(gè)任務(wù)所需要的信息。盡量將其存儲(chǔ)在DATA區(qū),以供快速存取。

對于基于時(shí)間觸發(fā)的混合式調(diào)度器,使用如下的數(shù)據(jù)結(jié)構(gòu),對于每個(gè)任務(wù)存儲(chǔ)器的開銷僅為8個(gè)字節(jié)。即使是使用32位處理器,每個(gè)任務(wù)的開銷也僅為14個(gè)字節(jié)。

基于時(shí)間觸發(fā)嵌入式系統(tǒng)的設(shè)計(jì)與應(yīng)用

4.2 調(diào)度器定時(shí)器初始化函數(shù)

該函數(shù)用來產(chǎn)生驅(qū)動(dòng)調(diào)度器的定時(shí)時(shí)標(biāo)。

本文所選用AVR系列的ATmega128微控制器具有四個(gè)定時(shí)器(兩個(gè)8位,兩個(gè)16位),任一個(gè)都能用來驅(qū)動(dòng)調(diào)度器,權(quán)衡考慮選用定時(shí)器0.

void SCH_Init_T0(void){逐個(gè)刪除各個(gè)任務(wù);停止定時(shí)器0;設(shè)置時(shí)間大小函數(shù);使能定時(shí)器0方式;啟動(dòng)定時(shí)器0;}

注:在此期間不可開啟總中斷,即:

電磁爐相關(guān)文章:電磁爐原理



上一頁 1 2 下一頁

關(guān)鍵詞: 時(shí)間觸發(fā) 嵌入式系統(tǒng)

評(píng)論


相關(guān)推薦

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

關(guān)閉