<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Windows CE陷阱調(diào)度機(jī)制詳解

          Windows CE陷阱調(diào)度機(jī)制詳解

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

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

          本文引用地址:http://www.ex-cimer.com/article/148857.htm

          (1) 中斷處理流程

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

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

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

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

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

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

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


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

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();