<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è) > 嵌入式系統 > 設計應用 > Windows CE陷阱調度機制詳解

Windows CE陷阱調度機制詳解

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

三. 如何進(jìn)行中斷處理?

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

(1) 中斷處理流程

①硬件設備向Kernel發(fā)送中斷異常的代碼,如果檢測到這個(gè)中斷異常,就會(huì )被Kernel層的異常處理所截獲。然后,中斷服務(wù)程序會(huì )調用OAL例程中的OEMInterruptDisable函數,這個(gè)函數會(huì )通知硬件在處理完這一中斷前關(guān)閉特殊的中斷,但其它的中斷仍然處于開(kāi)放狀態(tài),中斷服務(wù)例程ISR會(huì )被調用來(lái)決定如何處理這一中斷。

②Kernel接收到ISR的返回值可得知如何處理這一中斷。它的響應結果之一是忽略掉這一中斷不作處理(SYSINTR_NOP),或另一結果是準備執行IST。然后,Kernel引發(fā)中斷服務(wù)程序去喚醒中斷服務(wù)線(xiàn)程。IST是常規的Win32線(xiàn)程,一旦啟動(dòng)后,它會(huì )創(chuàng )建必要的EVENT,然后等待該EVENT被激發(fā)。中斷服務(wù)通過(guò)調用PulseEvent函數來(lái)激發(fā)EVENT,從而喚醒IST線(xiàn)程運行。當喚醒以后,IST會(huì )對中斷進(jìn)行處理。

③當IST處理完成后,還需要調用InterruptDone函數通知Kernel。Kernel則調用OEMInterruptDone函數完成此次中斷的處理過(guò)程。最后,OAL例程通知硬件設備重新啟用中斷。

(2)中斷處理涉及的幾個(gè)常用函數

在處理中斷時(shí)會(huì )涉及到兩類(lèi)函數的使用,第一類(lèi)是供OAL調用的ISR函數,例如HookInterrupt函數在OEMInit函數中被調用以關(guān)聯(lián)IRQ和ISR,UnhookInterrupt函數用來(lái)終止IRQ和ISR的關(guān)聯(lián)。第二類(lèi)是供驅動(dòng)程序調用的IST函數,例如InterruptInitialize函數用來(lái)將EVENT對象和邏輯中斷號關(guān)聯(lián)并允許中斷,InterruptDone函數用來(lái)通知中斷處理的結束,InterruptDisable函數被驅動(dòng)程序調用以關(guān)閉中斷同時(shí)取消被InterruptInitialize初始化的EVENT對象。

ISR函數屬于OAL層,它將CPU寄存器中的數據移動(dòng)到內存緩沖區中,但是它不能做更多的工作,其中一個(gè)原因是它不能訪(fǎng)問(wèn)用戶(hù)態(tài)的存儲區,它要把這些工作交給IST來(lái)完成。ISR函數做的另一項工作是進(jìn)行物理中斷號和邏輯中斷號的映射。經(jīng)過(guò)ISR后,就能把這一物理中斷轉換成Windows CE標準的SYSINTR_KEYBOARD邏輯中斷。Kernel會(huì )根據這個(gè)邏輯中斷值找到對應的EVENT,從而喚醒IST。

最后,需要提醒一下的是,常常有一些開(kāi)發(fā)人員習慣拖延或忽視調度的編寫(xiě)。因為輕視調度這一壞習慣是如此常見(jiàn),它甚至已經(jīng)影響到了Windows CE系統的研發(fā)。因此,建議從開(kāi)始時(shí)就應該著(zhù)手進(jìn)行調度研發(fā)和計劃,應該投入大精力把陷阱調度的策略融合到嵌入式產(chǎn)品中。


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

關(guān)鍵詞: 機制 詳解 調度 陷阱 CE Windows

評論


相關(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>