久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
uC/OS-II學(xué)習(xí)筆記—中斷管理
[打印本頁(yè)]
作者:
xueren
時(shí)間:
2013-7-26 13:43
標(biāo)題:
uC/OS-II學(xué)習(xí)筆記—中斷管理
本帖最后由 xueren 于 2013-7-26 13:43 編輯
uC/OS-II是實(shí)時(shí)多任務(wù)操作系統(tǒng),系統(tǒng)的實(shí)時(shí)性主要體現(xiàn)在對(duì)中斷的響應(yīng)上,要求能夠盡可能快地響應(yīng)中斷,進(jìn)入中斷程序處理中斷請(qǐng)求。uC/OS-II還要求中斷服務(wù)程序運(yùn)行的時(shí)間不能過(guò)長(zhǎng),長(zhǎng)時(shí)間的運(yùn)行中斷服務(wù)程序會(huì)使系統(tǒng)中其他的任務(wù)得不到運(yùn)行,或使系統(tǒng)不能處理新的中斷。因此在中斷服務(wù)程序的設(shè)計(jì)上,必須做到短小精悍,而把復(fù)雜的處理過(guò)程通過(guò)消息等機(jī)制交給用戶(hù)任務(wù)來(lái)做。
uC/OS-II并沒(méi)有單獨(dú)的C語(yǔ)言文件來(lái)做中斷的處理。因?yàn)椴煌挠布到y(tǒng),中斷服務(wù)程序的編寫(xiě)是完全不同的,操作系統(tǒng)中提供的中斷管理函數(shù)還是在內(nèi)核OS_core.c中。但是,對(duì)中斷服務(wù)程序的編寫(xiě)必須根據(jù)uC/OS-II的思路來(lái)實(shí)現(xiàn)。
事實(shí)上,任務(wù)的調(diào)度也大多依靠中斷。我們知道,如果創(chuàng)建任務(wù)或調(diào)用OSTaskDelete(OSPrioSelf)刪除自己,或調(diào)用OSTaskSuspend(OSPrioSelf)阻塞自己,這時(shí)候這些函數(shù)會(huì)執(zhí)行一次任務(wù)切換。但更多的任務(wù)切換是時(shí)鐘中斷。時(shí)鐘中斷在每個(gè)時(shí)鐘滴答都發(fā)生,該中斷服務(wù)程序在發(fā)現(xiàn)了有更高優(yōu)先級(jí)的就緒任務(wù)就會(huì)進(jìn)行任務(wù)調(diào)度。當(dāng)操作系統(tǒng)有其他的中斷時(shí),如定時(shí)器中斷,外部中斷,串口中斷等等,只要中斷是打開(kāi)的,而且正在運(yùn)行的任務(wù)并沒(méi)有關(guān)中斷,就會(huì)相應(yīng)中斷,這時(shí)任務(wù)就被切換了。因此,遵循uC/OS-II的中斷管理思路,設(shè)計(jì)好的中斷服務(wù)程序是使用好uC/OS=II的關(guān)鍵之一。
如果正在運(yùn)行的任務(wù)沒(méi)有關(guān)閉中斷,在中斷到來(lái)時(shí),操作系統(tǒng)將會(huì)響應(yīng)中斷,進(jìn)入中斷服務(wù)程序。這時(shí)任務(wù)的運(yùn)行環(huán)境還沒(méi)有保存,因此需要將任務(wù)的運(yùn)行環(huán)境保存。這時(shí)任務(wù)由于中斷的到來(lái)而進(jìn)入掛起狀態(tài),如下圖所示:
50.png
(61.3 KB, 下載次數(shù): 112)
下載附件
2013-7-26 02:05 上傳
進(jìn)入中斷服務(wù)程序,首先將當(dāng)前正在運(yùn)行的任務(wù)的CPU環(huán)境保存。接著將中斷使用的一個(gè)重要全局變量 OSIntNesting加1,表示中斷嵌套深了一層。實(shí)現(xiàn)此功能的就是OSIntEnter函數(shù),該函數(shù)實(shí)現(xiàn)且只實(shí)現(xiàn)這一功能,程序如下所示:
51.png
(30.12 KB, 下載次數(shù): 83)
下載附件
2013-7-26 02:05 上傳
由OSIntEnter代碼可知,中斷的嵌套存數(shù)要求小于255。在操作系統(tǒng)初始化過(guò)程中,OSIntNesting被初始化為0。如果原來(lái)沒(méi)有中斷服務(wù)程序在運(yùn)行,顯然OSIntNesting的值仍然是0,在這里由于進(jìn)入中斷服務(wù)程序,所以應(yīng)該加1。否則,將暫停正在運(yùn)行的其他中斷服務(wù)程序,而運(yùn)行本中斷服務(wù)程序,即發(fā)生中斷嵌套。如果中斷服務(wù)程序不希望把被打斷,很簡(jiǎn)單地執(zhí)行關(guān)中斷即可。所以,操作系統(tǒng)是允許中斷嵌套的,使不使用是另外一回事。
中斷服務(wù)程序應(yīng)該處理硬件的緊急操作,對(duì)于處理數(shù)據(jù)等操作,可以交給任務(wù)來(lái)完成。中斷服務(wù)程序和任務(wù)之間可以共享數(shù)據(jù)結(jié)構(gòu),中斷服務(wù)程序可以向任務(wù)發(fā)消息等。總之,中斷服務(wù)程序的運(yùn)行事件不宜太長(zhǎng)。
中斷服務(wù)完成后,應(yīng)調(diào)用與OSIntEnter相匹配的OSIntExit來(lái)進(jìn)行最后的處理。OSIntExit函數(shù)是用來(lái)通知uC/OS-II已經(jīng)結(jié)束了中斷的操作。
OSIntEnter和OSIntExit是成對(duì)出現(xiàn)在os_core.c中的系統(tǒng)函數(shù),用戶(hù)的中斷服務(wù)程序中應(yīng)調(diào)用它們,按中斷管理的思路來(lái)進(jìn)行,才不會(huì)產(chǎn)生系統(tǒng)錯(cuò)誤。
我們知道,uC/OS-II在每個(gè)時(shí)間片都要進(jìn)行任務(wù)的調(diào)度。調(diào)度的結(jié)果或者是返回原來(lái)的任務(wù)繼續(xù)執(zhí)行,或者是因?yàn)檎业搅司途w的更高優(yōu)先級(jí)的任務(wù),而讓該任務(wù)運(yùn)行。這個(gè)時(shí)間片可以是10ms或者其他值。如果時(shí)間太長(zhǎng),高優(yōu)先級(jí)的就緒任務(wù)可能等待時(shí)間過(guò)長(zhǎng),如果時(shí)間短,花費(fèi)在操作系統(tǒng)調(diào)度上的時(shí)間就顯得過(guò)長(zhǎng),系統(tǒng)的吞吐量就變小。
時(shí)鐘中斷服務(wù)是依賴(lài)于中斷的,如果是單片機(jī)系統(tǒng),那么就設(shè)置為定時(shí)器中斷。用定時(shí)器中斷的服務(wù)程序來(lái)完成該功能是恰當(dāng)?shù)摹?br />
作者:
yyyxiaowei
時(shí)間:
2013-7-26 23:12
學(xué)習(xí)中
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91av视频在线观看
|
精品国产乱码久久久久久蜜退臀
|
国产午夜精品一区二区三区嫩草
|
久久精品欧美一区二区三区麻豆
|
蜜桃av一区二区三区
|
一区二区电影网
|
欧洲一区二区视频
|
日日人人
|
亚洲精品久久久久久下一站
|
激情欧美一区二区三区中文字幕
|
久久精品二区
|
凹凸日日摸日日碰夜夜
|
亚洲视频中文字幕
|
www.9191
|
国产精品久久久久影院色老大
|
一区二区在线不卡
|
久久久妇女国产精品影视
|
欧美一区二区三区视频在线播放
|
www.狠狠干
|
一区二区三区在线 | 欧
|
99色视频
|
日韩国产精品一区二区三区
|
国产一区二区三区日韩
|
三级黄片毛片
|
成人在线视频免费观看
|
久久久久久久成人
|
免费播放一级片
|
五月婷婷在线视频
|
91丨九色丨国产在线
|
国产一区二区欧美
|
亚洲精品乱码久久久久久9色
|
天天干天天谢
|
麻豆视频在线看
|
国产高潮av
|
大陆一级毛片免费视频观看
|
日韩精品1区2区3区 成人黄页在线观看
|
中文字幕成人av
|
亚洲精品美女视频
|
成人影院在线视频
|
91视频在线观看
|
99久久久久久久久
|