資料介紹
11.5 中斷編程
前面所講述的驅動程序中都沒有涉及中斷處理,而實際上,有很多Linux的驅動都是通過中斷的方式來進行內核和硬件的交互。中斷機制提供了硬件和軟件之間異步傳遞信息的方式。硬件設備在發生某個事件時通過中斷通知軟件進行處理。中斷實現了硬件設備按需獲得處理器關注的機制,與查詢方式相比可以大大節省CPU資源的開銷。
在此將介紹在驅動程序中用于申請中斷的request_irq()調用,和用于釋放中斷的free_irq()調用。request_irq()函數調用的格式如下所示:
int request_irq(unsigned int irq,
void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
unsigned long irqflags, const char * devname, oid *dev_id);
其中irq是要申請的硬件中斷號。在Intel平臺,范圍是0~15。
參數handler為將要向系統注冊的中斷處理函數。這是一個回調函數,中斷發生時,系統調用這個函數,傳入的參數包括硬件中斷號、設備id以及寄存器值。設備id就是在調用request_irq()時傳遞給系統的參數dev_id。
參數irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個參數用于標明中斷處理程序是快速處理程序(設置SA_INTERRUPT)還是慢速處理程序(不設置SA_INTERRUPT)。快速處理程序被調用時屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個SA_SHIRQ屬性,設置了以后運行多個設備共享中斷,在中斷處理程序中根據dev_id區分不同設備產生的中斷。
參數devname為設備名,會在/dev/interrupts中顯示。
參數dev_id在中斷共享時會用到。一般設置為這個設備的device結構本身或者NULL。中斷處理程序可以用dev_id找到相應的控制這個中斷的設備,或者用irq2dev_map()找到中斷對應的設備。
釋放中斷的free_irq()函數調用的格式如下所示。該函數的參數與request_irq()相同。
?
前面所講述的驅動程序中都沒有涉及中斷處理,而實際上,有很多Linux的驅動都是通過中斷的方式來進行內核和硬件的交互。中斷機制提供了硬件和軟件之間異步傳遞信息的方式。硬件設備在發生某個事件時通過中斷通知軟件進行處理。中斷實現了硬件設備按需獲得處理器關注的機制,與查詢方式相比可以大大節省CPU資源的開銷。
在此將介紹在驅動程序中用于申請中斷的request_irq()調用,和用于釋放中斷的free_irq()調用。request_irq()函數調用的格式如下所示:
int request_irq(unsigned int irq,
void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
unsigned long irqflags, const char * devname, oid *dev_id);
其中irq是要申請的硬件中斷號。在Intel平臺,范圍是0~15。
參數handler為將要向系統注冊的中斷處理函數。這是一個回調函數,中斷發生時,系統調用這個函數,傳入的參數包括硬件中斷號、設備id以及寄存器值。設備id就是在調用request_irq()時傳遞給系統的參數dev_id。
參數irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個參數用于標明中斷處理程序是快速處理程序(設置SA_INTERRUPT)還是慢速處理程序(不設置SA_INTERRUPT)。快速處理程序被調用時屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個SA_SHIRQ屬性,設置了以后運行多個設備共享中斷,在中斷處理程序中根據dev_id區分不同設備產生的中斷。
參數devname為設備名,會在/dev/interrupts中顯示。
參數dev_id在中斷共享時會用到。一般設置為這個設備的device結構本身或者NULL。中斷處理程序可以用dev_id找到相應的控制這個中斷的設備,或者用irq2dev_map()找到中斷對應的設備。
釋放中斷的free_irq()函數調用的格式如下所示。該函數的參數與request_irq()相同。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- [IC]淺談嵌入式MCU軟件開發之中斷優先級與中斷嵌套
- 嵌入式linux開發的學習之路
- 嵌入式linux報警,嵌入式Linux下LED報警燈驅動設計及編程.doc
- 嵌入式Linux驅動開發從基礎到框架
- 【嵌入式】基于ARM的嵌入式Linux開發總結
- (網盤)ARM嵌入式Linux系統開發詳解
- 嵌入式詳解
- 嵌入式Linux設備驅動程序開發基礎知識總結免費下載 13次下載
- 嵌入式Linux的中斷驅動程序設計 3次下載
- 《Linux設備驅動開發詳解》第10章、中斷與時鐘PDF免費下載 0次下載
- 基于嵌入式Linux應用程序開發詳解 12次下載
- 嵌入式Linux應用程序開發詳解 61次下載
- ARM嵌入式Linux系統開發詳解 58次下載
- 嵌入式liunx開發技術詳解
- 嵌入式Linux設備驅動開發
- 嵌入式Linux開發的三種方式 755次閱讀
- 簡化SBC的嵌入式Linux軟件開發 998次閱讀
- 米爾科技Linux設備驅動研究淺談 1913次閱讀
- 基于嵌入式Linux內核的ARM9運行實現方式介紹 1475次閱讀
- 基于Yocto Project的定制嵌入式Linux產品設計淺析 1w次閱讀
- 基于嵌入式linux系統下的串口編程具體設置詳解 6843次閱讀
- 基于嵌入式Linux系統下Mini GUI的移植方法與過程詳解 3549次閱讀
- 什么是嵌入式Linux內核調試技術?嵌入式開發又面臨著哪些問題? 1134次閱讀
- 基于PXA255開發板外圍字符設備的嵌入式Linux字符設備驅動設計與應用 1138次閱讀
- 基于嵌入式Linux內核的系統設備驅動程序開發設計 1113次閱讀
- 關于Linux嵌入式操作系統的優勢特征詳解 5521次閱讀
- 學習嵌入式linux系統開發,文件類型一定要分清 809次閱讀
- 嵌入式C實現延時程序的不同變量的區別 幾種Linux嵌入式開發環境的簡單介紹 1566次閱讀
- 基于FPGA嵌入式系統的設備驅動開發 2259次閱讀
- 基于嵌入式Linux的家居監控系統設計 2023次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多