www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]本文設(shè)計(jì)了基于AVR微控制器的時(shí)間觸發(fā)多任務(wù)調(diào)度器并應(yīng)用于實(shí)際。該調(diào)度器使用傳遞消息(message)的方式使得微控制器在多個(gè)任務(wù)及設(shè)備間切換。

1.引言

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


本文設(shè)計(jì)了基于AVR微控制器的時(shí)間觸發(fā)多任務(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)為嵌入式系統(tǒng)設(shè)計(jì)提供了良好的硬件保證。


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


在嵌入式系統(tǒng)中,通常采用兩種本質(zhì)上不同的調(diào)度方式:事件觸發(fā)和時(shí)間觸發(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í)對(duì)任務(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í)的中斷打斷。于是,對(duì)第二個(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所示:

4.1 消息隊(duì)列


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


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


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;}


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


SREG=0×80或SEI();調(diào)度器必須先設(shè)定一個(gè)默認(rèn)的時(shí)間片,這并不是件簡單的事。時(shí)間片過長會(huì)導(dǎo)致系統(tǒng)對(duì)交互行為的響應(yīng)表現(xiàn)欠佳;時(shí)間片太短又會(huì)明顯地增大調(diào)度器處理耗時(shí),而留給任務(wù)運(yùn)行的時(shí)間卻很短。


根據(jù)筆者經(jīng)驗(yàn),一個(gè)較為可取的時(shí)間片是略大于一次典型的交互所需要的時(shí)間,使大多數(shù)進(jìn)程在一個(gè)時(shí)間片內(nèi)完成。經(jīng)反復(fù)嘗試,時(shí)間片選擇在1~5ms之間執(zhí)行效率較高,這樣既可滿足響應(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ù)用來將任務(wù)添加到消息隊(duì)列,以保證條件滿足時(shí)被調(diào)用,函數(shù)如下所示:


{定義靜態(tài)變量i;循環(huán)判斷任務(wù)隊(duì)列是否有空間;若無,報(bào)錯(cuò)返回;否則,添加任務(wù);}


4.5 調(diào)度函數(shù)


刷新函數(shù)雖然能夠直接激活任務(wù),但若直接運(yùn)行,長任務(wù)將破壞時(shí)標(biāo)中斷,這意味著所有的系統(tǒng)定時(shí)都將受到嚴(yán)重影響,造成許多任務(wù)不能被調(diào)度。因此,為了在長任務(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è)備,為便于開發(fā),將整個(gè)程序按照硬件及功能進(jìn)行模塊劃分,各個(gè)功能模塊之間通過傳遞消息的方式來完成多任務(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測得,均應(yīng)小于設(shè)定時(shí)間片4ms,否則應(yīng)用將出錯(cuò),需重新設(shè)定時(shí)間片大小或再次分割功能模塊。其中看門狗處理任務(wù)是唯一的搶占式任務(wù)。


6.結(jié)論


實(shí)驗(yàn)表明,以AVR微控制器為核心的控制系統(tǒng),外圍擴(kuò)展功能強(qiáng)大、開發(fā)較簡單,結(jié)合以時(shí)間觸發(fā)理念為內(nèi)核的操作系統(tǒng),設(shè)計(jì)時(shí)一次只為一個(gè)任務(wù)分配空間,每個(gè)任務(wù)的存儲(chǔ)開銷只有8個(gè)字節(jié),采用由C語言與匯編混合式編程,簡單、安全,可預(yù)測性強(qiáng),尤其適用于對(duì)成本和穩(wěn)定性均有要求的中小企業(yè)。隨著嵌入式系統(tǒng)的發(fā)展,基于AVR的時(shí)間觸發(fā)嵌入式系統(tǒng)必然有著廣闊的應(yīng)用前景。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉