資料介紹
11.5 中斷編程
前面所講述的驅(qū)動程序中都沒有涉及中斷處理,而實際上,有很多Linux的驅(qū)動都是通過中斷的方式來進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個事件時通過中斷通知軟件進(jìn)行處理。中斷實現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢方式相比可以大大節(jié)省CPU資源的開銷。
在此將介紹在驅(qū)動程序中用于申請中斷的request_irq()調(diào)用,和用于釋放中斷的free_irq()調(diào)用。request_irq()函數(shù)調(diào)用的格式如下所示:
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。
參數(shù)handler為將要向系統(tǒng)注冊的中斷處理函數(shù)。這是一個回調(diào)函數(shù),中斷發(fā)生時,系統(tǒng)調(diào)用這個函數(shù),傳入的參數(shù)包括硬件中斷號、設(shè)備id以及寄存器值。設(shè)備id就是在調(diào)用request_irq()時傳遞給系統(tǒng)的參數(shù)dev_id。
參數(shù)irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個參數(shù)用于標(biāo)明中斷處理程序是快速處理程序(設(shè)置SA_INTERRUPT)還是慢速處理程序(不設(shè)置SA_INTERRUPT)??焖偬幚沓绦虮徽{(diào)用時屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個SA_SHIRQ屬性,設(shè)置了以后運行多個設(shè)備共享中斷,在中斷處理程序中根據(jù)dev_id區(qū)分不同設(shè)備產(chǎn)生的中斷。
參數(shù)devname為設(shè)備名,會在/dev/interrupts中顯示。
參數(shù)dev_id在中斷共享時會用到。一般設(shè)置為這個設(shè)備的device結(jié)構(gòu)本身或者NULL。中斷處理程序可以用dev_id找到相應(yīng)的控制這個中斷的設(shè)備,或者用irq2dev_map()找到中斷對應(yīng)的設(shè)備。
釋放中斷的free_irq()函數(shù)調(diào)用的格式如下所示。該函數(shù)的參數(shù)與request_irq()相同。
?
前面所講述的驅(qū)動程序中都沒有涉及中斷處理,而實際上,有很多Linux的驅(qū)動都是通過中斷的方式來進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個事件時通過中斷通知軟件進(jìn)行處理。中斷實現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢方式相比可以大大節(jié)省CPU資源的開銷。
在此將介紹在驅(qū)動程序中用于申請中斷的request_irq()調(diào)用,和用于釋放中斷的free_irq()調(diào)用。request_irq()函數(shù)調(diào)用的格式如下所示:
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。
參數(shù)handler為將要向系統(tǒng)注冊的中斷處理函數(shù)。這是一個回調(diào)函數(shù),中斷發(fā)生時,系統(tǒng)調(diào)用這個函數(shù),傳入的參數(shù)包括硬件中斷號、設(shè)備id以及寄存器值。設(shè)備id就是在調(diào)用request_irq()時傳遞給系統(tǒng)的參數(shù)dev_id。
參數(shù)irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個參數(shù)用于標(biāo)明中斷處理程序是快速處理程序(設(shè)置SA_INTERRUPT)還是慢速處理程序(不設(shè)置SA_INTERRUPT)??焖偬幚沓绦虮徽{(diào)用時屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個SA_SHIRQ屬性,設(shè)置了以后運行多個設(shè)備共享中斷,在中斷處理程序中根據(jù)dev_id區(qū)分不同設(shè)備產(chǎn)生的中斷。
參數(shù)devname為設(shè)備名,會在/dev/interrupts中顯示。
參數(shù)dev_id在中斷共享時會用到。一般設(shè)置為這個設(shè)備的device結(jié)構(gòu)本身或者NULL。中斷處理程序可以用dev_id找到相應(yīng)的控制這個中斷的設(shè)備,或者用irq2dev_map()找到中斷對應(yīng)的設(shè)備。
釋放中斷的free_irq()函數(shù)調(diào)用的格式如下所示。該函數(shù)的參數(shù)與request_irq()相同。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- [IC]淺談嵌入式MCU軟件開發(fā)之中斷優(yōu)先級與中斷嵌套
- 嵌入式linux開發(fā)的學(xué)習(xí)之路
- 嵌入式linux報警,嵌入式Linux下LED報警燈驅(qū)動設(shè)計及編程.doc
- 嵌入式Linux驅(qū)動開發(fā)從基礎(chǔ)到框架
- 【嵌入式】基于ARM的嵌入式Linux開發(fā)總結(jié)
- (網(wǎng)盤)ARM嵌入式Linux系統(tǒng)開發(fā)詳解
- 嵌入式詳解
- 嵌入式Linux設(shè)備驅(qū)動程序開發(fā)基礎(chǔ)知識總結(jié)免費下載 13次下載
- 嵌入式Linux的中斷驅(qū)動程序設(shè)計 3次下載
- 《Linux設(shè)備驅(qū)動開發(fā)詳解》第10章、中斷與時鐘PDF免費下載 0次下載
- 基于嵌入式Linux應(yīng)用程序開發(fā)詳解 12次下載
- 嵌入式Linux應(yīng)用程序開發(fā)詳解 61次下載
- ARM嵌入式Linux系統(tǒng)開發(fā)詳解 58次下載
- 嵌入式liunx開發(fā)技術(shù)詳解
- 嵌入式Linux設(shè)備驅(qū)動開發(fā)
- 嵌入式Linux開發(fā)的三種方式 1017次閱讀
- 簡化SBC的嵌入式Linux軟件開發(fā) 1170次閱讀
- 米爾科技Linux設(shè)備驅(qū)動研究淺談 2035次閱讀
- 基于嵌入式Linux內(nèi)核的ARM9運行實現(xiàn)方式介紹 1573次閱讀
- 基于Yocto Project的定制嵌入式Linux產(chǎn)品設(shè)計淺析 1w次閱讀
- 基于嵌入式linux系統(tǒng)下的串口編程具體設(shè)置詳解 7021次閱讀
- 基于嵌入式Linux系統(tǒng)下Mini GUI的移植方法與過程詳解 3702次閱讀
- 什么是嵌入式Linux內(nèi)核調(diào)試技術(shù)?嵌入式開發(fā)又面臨著哪些問題? 1220次閱讀
- 基于PXA255開發(fā)板外圍字符設(shè)備的嵌入式Linux字符設(shè)備驅(qū)動設(shè)計與應(yīng)用 1199次閱讀
- 基于嵌入式Linux內(nèi)核的系統(tǒng)設(shè)備驅(qū)動程序開發(fā)設(shè)計 1209次閱讀
- 關(guān)于Linux嵌入式操作系統(tǒng)的優(yōu)勢特征詳解 5690次閱讀
- 學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),文件類型一定要分清 895次閱讀
- 嵌入式C實現(xiàn)延時程序的不同變量的區(qū)別 幾種Linux嵌入式開發(fā)環(huán)境的簡單介紹 1673次閱讀
- 基于FPGA嵌入式系統(tǒng)的設(shè)備驅(qū)動開發(fā) 2338次閱讀
- 基于嵌入式Linux的家居監(jiān)控系統(tǒng)設(shè)計 2117次閱讀
下載排行
本周
- 1電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 17次下載 | 免費
- 2PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 14次下載 | 4 積分
- 3世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電磁屏電磁感應(yīng)觸摸技術(shù)介紹
- 0.66 MB | 2次下載 | 免費
- 6全面解讀被動式與主動式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7SS1200 SMA肖特基二極管產(chǎn)品規(guī)格書
- 0.93 MB | 1次下載 | 免費
- 8SB15150L TO-277肖特基二極管產(chǎn)品規(guī)格書
- 1.96 MB | 1次下載 | 免費
本月
- 1高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 34次下載 | 10 積分
- 2電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 17次下載 | 免費
- 3PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 14次下載 | 4 積分
- 4USB拓展塢PCB圖資料
- 0.57 MB | 13次下載 | 免費
- 5世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費
- 6TYPEC電路原理圖資料
- 0.14 MB | 10次下載 | 免費
- 7經(jīng)典1000W純正弦波逆變器原理圖資料
- 0.08 MB | 10次下載 | 10 積分
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊
- 0.70 MB | 9次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81601次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論