在Windows CE增加自定義中斷處理

2021-06-14 00:54:24 字數 1182 閱讀 2698

**:

isq --> interrupt id(邏輯中斷號)  --> event物件。

當中斷發生時,isr(中斷服務例程)返回該中斷號對應的邏輯中斷號,然後盡可能快地返回;隨後ce就set該邏輯中斷號對應的event物件(如果有的話),以喚醒在該event等待的ist(中斷服務執行緒),大部分工作都是由ist來完成。一般來說ist是存在驅動程式裡,單其實放在普通的應用程式裡也可以,尤其是對應只有乙個應用程式使用的特殊硬體更方便。因為對應ce來說其實驅動程式也只是乙個普通的dll,也是執行在使用者空間。

為了簡單起見我們就直接修改bsp包的isr部分,ist也直接在應用程式裡實現,步驟如下:

1、在bsp的oalintr.h裡定義自定義中斷的邏輯中斷值,如:

#define sysintr_myintr  (sysintr_firmware + 10)

2、修改kernel/hal/cfw.c中的以下三個函式,增加對自定義中斷的啟用禁用**:

oeminterruptenable(), oeminterruptdisable(), oeminterruptdone()

3、修改kernel/hal/arm/armint.c中的oeminterrupthandler(),對irq返回邏輯中斷號,如:

else if (intpendval == intsrc_eint2) // eint2

return(sysintr_myintr);

現在,核心已經支援我們的自定義中斷sysintr_myint了,我們在應用程式中就可以把這個sysintr_myint與乙個event物件關聯起來,然後在乙個執行緒裡等待這個event就ok了,這個執行緒就是ist。

5、在ist裡用interruptinitialize()將自定義中斷和event關聯起來,並waitforsingleobject()。注意下面的**是在乙個執行緒裡(即ist):

hevent = createevent(null, false, false, null));

interruptinitialize(sysintr_myintr, hevent, null, 0));     //若沒有修改oeminterruptenable(),這個呼叫就會失敗

while ( true )

waitforsingleobject(hevent, infinite);

// do some process...

}

在Windows CE增加自定義中斷處理

在windows ce增加自定義中斷處理 isq interrupt id 邏輯中斷號 event 物件。當中斷發生時,isr 中斷服務例程 返回該中斷號對應的邏輯中斷號,然後盡可能快地返回 隨後ce就 set該邏輯中斷號對應的 event 物件 如果有的話 以喚醒在該 event 等待的ist 中...

在Windows CE增加自定義中斷處理

基於 s3c2410 windows ce4.2 bsp 是smdk2410 wince 的中斷處理是三個對映關係 isq interrupt id 邏輯中斷號 event 物件。當中斷發生時,isr 中斷服務例程 返回該中斷號對應的邏輯中斷號,然後盡可能快地返回 隨後ce就 set該邏輯中斷號對應...

自定義view增加動畫效果

通過這一周的學習總算對自定義view比較了解了。所以也想和大家分享一下自定義view的學習方法和我學習的乙個過程。還是來看一下我們每篇比談的我們的自定義view的大綱 1.自定義view單純的用畫筆繪製view 死view 2.自定義view 增加動畫 3.自定義view增加手勢 4.自定義view...