<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

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

1.引言

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

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

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

2.AVR微控制器的結構特點(diǎn)

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

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

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

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

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

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

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

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

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

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

4.時(shí)間觸發(fā)嵌入式系統的設計

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

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

4.1 消息隊列

消息隊列是調度器的核心,它是用戶(hù)自定義的數據類(lèi)型,包括了每個(gè)任務(wù)所需要的信息。盡量將其存儲在DATA區,以供快速存取。

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

基于時(shí)間觸發(fā)嵌入式系統的設計與應用

4.2 調度器定時(shí)器初始化函數

該函數用來(lái)產(chǎn)生驅動(dòng)調度器的定時(shí)時(shí)標。

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

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

注:在此期間不可開(kāi)啟總中斷,即:

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



上一頁(yè) 1 2 下一頁(yè)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>