ARM中断分析之三:WinCE驱动的中断分析
現在有許多高端的ARM芯片,像蘋果、三星、華為都采用ARM芯片做為智能手機芯片。
這篇文章介紹基于ARM的WinCE操作系統的驅動的中斷分析。WinCE驅動分為兩類,這里介紹流驅動,流驅動比較簡單。
關于流驅動,下面是一張框圖,描敘了流驅動的地位:
我們從右往左看上面的那張圖,最右邊是應用程序。應該程序通過CreateFile、WriteFile、ReadFile、IoCtrl、CloseFile這幾個函數來訪問驅動,這和其他的操作系統是一樣的,WindowsXP、Linux都是如此。
流驅動是實現了一批函數的庫(DLL),包括XXX_Init、XXX_Deinit,上面的框圖都列出來了。
在使用驅動之前,需要加載驅動(激活驅動),也就是說讓驅動就緒,以便可以讓應用程序訪問。采用函數ActivateDeviceEx函數來激活,ActivateDeviceEx接收一個注冊表路徑作為參數,所以,我們需要把驅動信息按照格式寫入到注冊表內。下面是一個GPIO的注冊表示例:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\GPIO]
"Dll" = "s3c6410_gpio.dll"
"Prefix" = "GIO"
"Order" = dword:63
"Index" = dword:1
"FriendlyName" = "GPIO Driver"
?
在驅動內部,如果使用中斷,那么操作步驟如下:
1、驅動初始化時,由物理中斷號獲取虛擬中斷號,調用函數KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR…)?
2、驅動初始化時,事件句柄綁定虛擬中斷號,函數函數InterruptInitialize,然后創建一個IST線程,并Waiting事件
3、中斷處理:硬件中斷產生了,在IST線程內的等待事件就會返回,接下來處理中斷,最后調用函數InterruptDone,意指中斷處理完畢
4、退出驅動前,調用InterruptDisable,禁用當前中斷,它與InterruptInitialize相反。
5、退出驅動前,釋放虛擬中斷號資源KernelIoControl(IOCTL_HAL_RELEASE_SYSINTR...)
?
如果開發一個以太網驅動,那么怎么知道以太網芯片的硬件中斷號是什么?答案是,需要問BSP開發人員或硬件開發人員。它不像Windows驅動,Windows驅動的中斷號是由系統通過消息的方式發送給驅動。
?
像Windows XP操作系統的驅動中斷號
總結
以上是生活随笔為你收集整理的ARM中断分析之三:WinCE驱动的中断分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016交通银行信用卡支付宝还款多久到账
- 下一篇: Wince6.0 cleartype