三级黄色在线视频中文,国产精品一二三区,在线观看三级,成人午夜久久,日韩国产一区二区,韩日免费av,日韩成人一级

wince5.0中斷的詳細(xì)解釋

來(lái)源:網(wǎng)絡(luò)

點(diǎn)擊:2041

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞: wince5.0,wince中斷,wince

      1 WinCE中第一次對(duì)中斷的處理是在OAL的OEMInit()中,該函數(shù)調(diào)用OALIntrInit()完成對(duì)中斷的初始化。

      2 OALIntrInit()對(duì)中斷的初始化做了如下工作:

      2.1 通過(guò)配置IPR0-IPR33設(shè)置中斷優(yōu)先級(jí),優(yōu)先級(jí)定義在g_IntPriorities和g_IntPriorities2中,其中IRQ_OSMR0為最高優(yōu)先級(jí), IRQ_KEYPAD為最低優(yōu)先級(jí)。

      2.2 設(shè)置ICCR,在空閑模式時(shí)只對(duì)有效的,非屏蔽的中斷響應(yīng)。

      2.3 BSPIntrInit()。該函數(shù)對(duì)BSP中需要處理的中斷進(jìn)行初始化工作,主要是設(shè)置ICMR寄存器使GPIO1(CPLD)和GPIO2為非屏蔽狀態(tài),然后通過(guò)OALIntrStaticTranslate建立IRQ和sysintr之間的關(guān)聯(lián)。

      2.4 對(duì)于WinCE來(lái)說(shuō),中斷可以作如下分類:

      1》 與BSP無(wú)關(guān)的Kernel使用的內(nèi)部中斷, 比如IRQ_OSMR0(for

      sched),IRQ_RTCALARM;

      2》 與BSP有關(guān)的CPU內(nèi)部中斷,比如IRQ_USBOHCI, IRQ_OSM

      R1, IRQ_KEYPAD, IRQ_FFUART, IRQ_BTUART, IRQ_STUART, IRQ_DMAC, IRQ_USBFN;

      3》 CPLD所管理的中斷,以GPIO1通知CPU中斷的產(chǎn)生,在收到G

      PIO1產(chǎn)生的中斷后可以通過(guò)讀取地址0x0A00_0010判斷具體的中斷源,比如IRQ_GPIO1_MMCCD(MMC_IN_INT, MMC_OUT_INT), IRQ_GPIO1_USBCD(USB_IN_INT, USB_OUT_INT), IRQ_GPIO1_PCMCIA_S0_CSC(CF_IN_INT. CF_OUT_INT),還有在代碼中沒(méi)有處理的SIM卡中斷(SIM_IN_INT, SIM_OUT_INT)。

      4》 GPIO2_120產(chǎn)生的中斷,通過(guò)寄存器ICIP的位10-GPIO_x通

      知CPU中斷的產(chǎn)生,然后查詢寄存器GEDR_x可以判斷具體的中斷源,比如IRQ_GPIO12_MARATHO, IRQ_GPIO10_ETHERNET,IRQ_GPIO13_UCB1400;

      5》 以Installable ISR形式產(chǎn)生的中斷,這類中斷通常是以DLL的形式安裝,在注冊(cè)表中定義其實(shí)際的IRQ中斷值,比如IRQ_MMC_DETECT,IRQ_MMC_CONTROL;

      2.5 有幾種方式可以建立實(shí)際中斷IRQ到系統(tǒng)中斷sysintr之間的關(guān)聯(lián),對(duì)于build-in設(shè)備,可以在OEMInit中通過(guò)OALIntrStaticTranslate來(lái)建立靜態(tài)的關(guān)聯(lián);但是對(duì)于installable ISRs,可以在注冊(cè)表中定義實(shí)際的中斷IRQ,然后通過(guò)在KernelIOControl中使用IOCTL_HAL_REQUEST_SYSINTR來(lái)實(shí)時(shí)分配新的sysintr,這有助于驅(qū)動(dòng)的移植。

      3 在CPU接收到中斷后,對(duì)中斷的處理是在 OEMInterruptHandler()中,該函數(shù)的首先屏蔽該中斷,最后得到實(shí)際中斷IRQ所對(duì)應(yīng)的sysintr的值。

      3.1 首先它通過(guò)中斷寄存器ICHP得到實(shí)際的IRQ值;

      3.2 對(duì)于GPIO產(chǎn)生的中斷,通過(guò)清空GFER和GRER寄存器來(lái)屏蔽相同的中斷;對(duì)于其余的CPU內(nèi)部中斷,通過(guò)清空ICMR寄存器的相應(yīng)位來(lái)屏蔽中斷;

      3.3 對(duì)于Kernel使用的IRQ_OSMR0和IRQ_OSMR2,分別進(jìn)行處理,得到sysintr;

      3.4 對(duì)于通過(guò)GPIO0,GPIO1和GPIO2_120產(chǎn)生的中斷,將IRQ的值進(jìn)行轉(zhuǎn)化,使之與OAL/intr.c和bulverder_intr.h中所定義的新的IRQ值相對(duì)應(yīng),此時(shí)的IRQ值就不是在ICIP中對(duì)定義的IRQ值了;

      3.5 接著調(diào)用NKCallIntChain(irq)判斷該IRQ是否已經(jīng)被加入中斷列表,同時(shí)開(kāi)始調(diào)用該中斷的ISR程序。

      4 當(dāng)中斷處理完成后,調(diào)用OALIntrDoneIrqs(),重新使能中斷。

    (審核編輯: 智匯小新)

    聲明:除特別說(shuō)明之外,新聞內(nèi)容及圖片均來(lái)自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請(qǐng)聯(lián)系我們刪除。