擴充套件wince5物理中斷

2021-05-10 11:06:37 字數 913 閱讀 2917

我的開發環境是s3c2450+wince5,需要用到eint20做鍵盤中斷,但是因為wince5

預設只支援64個物理中斷,而且bsp用到的irq_last是eint16。因為eint4到eint16

都有用處,想通過將eint20移到64

以內並新增靜態對映的方法就行不通了,只能用動態分配的方法,為此需要對bsp及wince

做一些調整。具體做法如下:

1、修改bsp中的s3c2450_intr.h:新增irq_eint17到irq_eint23的定義,將irq_last由

irq_eint16改為irq_eint23

2、動態分配中斷的**在platform/common/src/common/intr/base/map.c中

關於oal_intr_irq_maximum的定義是在platform/common/src/inc中,將它由64修改為72

,否則無法動態分配系統中斷給超過64的物理中斷。

關於此巨集定義在bsp的inc目錄中的oal_intr.h

也有定義,但是並沒有使用。開始的時候我改的是bsp

下的不起作用,要注意不要改錯地方。

3、將eint20對應的gpg12設定為外部中斷。

修改bsp的kernel/oal目錄中的intr.c:在bspintrinit中新增將gpg12(eint20)

設定為外部中斷並使能中斷的**

注意在設定好gpgcon、gpgdat、gpgup後要呼叫oalintrenableirqs。剛開始我是把gpg

引腳的設定放到裝置驅動初始化中,也可以執行。不過放到bspintrint感覺更放心。

4、在裝置驅動中按動態分配的方法分配irq_eint20、關聯事件、建立ist。

經過此改動,能夠實現大於64

的物理中斷動態分配,鍵盤程式執行正常。不過沒有做其它測試了。

WinCE5讀核筆記

一 exception vector到底在 struct arm high是被wince5 kernel安放在0xfffd,0000位址的乙個結構體。這個結構體非常大,我說它大不是因為它的 member很多,而是它的每個member都是乙個非常大的陣列。主要是為了對齊到一些特殊的位址。我們知道在 c...

wince5下directdraw初體驗

因專案下一步應用的需求,需要用directdraw來實現相應功能,因此先行做初步嘗試,建立乙個感性的認識。眾所周知wince5支援directdraw,只是和pc下的還是有所不同的,在學習directdraw的時候就以public下的mosquito為例子進行學習,要讓這個程式在wince5下跑起來...

WinCE 5 0邊做邊學 5

對於實時系統,如何除錯是乙個很難解決的問題,包括對系統核心的除錯,對驅動程式的除錯,對應用程式的除錯等。對於應用程式,通常各整合開發環境都提供了常規的單步跟蹤等除錯手段。而對於另兩個的除錯,platform builder除了為我們提供了常規的斷點跟蹤等手段以外,還和系統的源程式配合使用了一種新的除...