資料介紹
11.5 中斷編程
前面所講述的驅(qū)動(dòng)程序中都沒(méi)有涉及中斷處理,而實(shí)際上,有很多Linux的驅(qū)動(dòng)都是通過(guò)中斷的方式來(lái)進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個(gè)事件時(shí)通過(guò)中斷通知軟件進(jìn)行處理。中斷實(shí)現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢(xún)方式相比可以大大節(jié)省CPU資源的開(kāi)銷(xiāo)。
在此將介紹在驅(qū)動(dòng)程序中用于申請(qǐng)中斷的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是要申請(qǐng)的硬件中斷號(hào)。在Intel平臺(tái),范圍是0~15。
參數(shù)handler為將要向系統(tǒng)注冊(cè)的中斷處理函數(shù)。這是一個(gè)回調(diào)函數(shù),中斷發(fā)生時(shí),系統(tǒng)調(diào)用這個(gè)函數(shù),傳入的參數(shù)包括硬件中斷號(hào)、設(shè)備id以及寄存器值。設(shè)備id就是在調(diào)用request_irq()時(shí)傳遞給系統(tǒng)的參數(shù)dev_id。
參數(shù)irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個(gè)參數(shù)用于標(biāo)明中斷處理程序是快速處理程序(設(shè)置SA_INTERRUPT)還是慢速處理程序(不設(shè)置SA_INTERRUPT)。快速處理程序被調(diào)用時(shí)屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個(gè)SA_SHIRQ屬性,設(shè)置了以后運(yùn)行多個(gè)設(shè)備共享中斷,在中斷處理程序中根據(jù)dev_id區(qū)分不同設(shè)備產(chǎn)生的中斷。
參數(shù)devname為設(shè)備名,會(huì)在/dev/interrupts中顯示。
參數(shù)dev_id在中斷共享時(shí)會(huì)用到。一般設(shè)置為這個(gè)設(shè)備的device結(jié)構(gòu)本身或者NULL。中斷處理程序可以用dev_id找到相應(yīng)的控制這個(gè)中斷的設(shè)備,或者用irq2dev_map()找到中斷對(duì)應(yīng)的設(shè)備。
釋放中斷的free_irq()函數(shù)調(diào)用的格式如下所示。該函數(shù)的參數(shù)與request_irq()相同。
?
前面所講述的驅(qū)動(dòng)程序中都沒(méi)有涉及中斷處理,而實(shí)際上,有很多Linux的驅(qū)動(dòng)都是通過(guò)中斷的方式來(lái)進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個(gè)事件時(shí)通過(guò)中斷通知軟件進(jìn)行處理。中斷實(shí)現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢(xún)方式相比可以大大節(jié)省CPU資源的開(kāi)銷(xiāo)。
在此將介紹在驅(qū)動(dòng)程序中用于申請(qǐng)中斷的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是要申請(qǐng)的硬件中斷號(hào)。在Intel平臺(tái),范圍是0~15。
參數(shù)handler為將要向系統(tǒng)注冊(cè)的中斷處理函數(shù)。這是一個(gè)回調(diào)函數(shù),中斷發(fā)生時(shí),系統(tǒng)調(diào)用這個(gè)函數(shù),傳入的參數(shù)包括硬件中斷號(hào)、設(shè)備id以及寄存器值。設(shè)備id就是在調(diào)用request_irq()時(shí)傳遞給系統(tǒng)的參數(shù)dev_id。
參數(shù)irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個(gè)參數(shù)用于標(biāo)明中斷處理程序是快速處理程序(設(shè)置SA_INTERRUPT)還是慢速處理程序(不設(shè)置SA_INTERRUPT)。快速處理程序被調(diào)用時(shí)屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個(gè)SA_SHIRQ屬性,設(shè)置了以后運(yùn)行多個(gè)設(shè)備共享中斷,在中斷處理程序中根據(jù)dev_id區(qū)分不同設(shè)備產(chǎn)生的中斷。
參數(shù)devname為設(shè)備名,會(huì)在/dev/interrupts中顯示。
參數(shù)dev_id在中斷共享時(shí)會(huì)用到。一般設(shè)置為這個(gè)設(shè)備的device結(jié)構(gòu)本身或者NULL。中斷處理程序可以用dev_id找到相應(yīng)的控制這個(gè)中斷的設(shè)備,或者用irq2dev_map()找到中斷對(duì)應(yīng)的設(shè)備。
釋放中斷的free_irq()函數(shù)調(diào)用的格式如下所示。該函數(shù)的參數(shù)與request_irq()相同。
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- [IC]淺談嵌入式MCU軟件開(kāi)發(fā)之中斷優(yōu)先級(jí)與中斷嵌套
- 嵌入式linux開(kāi)發(fā)的學(xué)習(xí)之路
- 嵌入式linux報(bào)警,嵌入式Linux下LED報(bào)警燈驅(qū)動(dòng)設(shè)計(jì)及編程.doc
- 嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)從基礎(chǔ)到框架
- 【嵌入式】基于ARM的嵌入式Linux開(kāi)發(fā)總結(jié)
- (網(wǎng)盤(pán))ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解
- 嵌入式詳解
- 嵌入式Linux設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)基礎(chǔ)知識(shí)總結(jié)免費(fèi)下載 13次下載
- 嵌入式Linux的中斷驅(qū)動(dòng)程序設(shè)計(jì) 3次下載
- 《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第10章、中斷與時(shí)鐘PDF免費(fèi)下載 0次下載
- 基于嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解 12次下載
- 嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解 61次下載
- ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)詳解 58次下載
- 嵌入式liunx開(kāi)發(fā)技術(shù)詳解
- 嵌入式Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)
- 嵌入式Linux開(kāi)發(fā)的三種方式 1017次閱讀
- 簡(jiǎn)化SBC的嵌入式Linux軟件開(kāi)發(fā) 1170次閱讀
- 米爾科技Linux設(shè)備驅(qū)動(dòng)研究淺談 2035次閱讀
- 基于嵌入式Linux內(nèi)核的ARM9運(yùn)行實(shí)現(xiàn)方式介紹 1573次閱讀
- 基于Yocto Project的定制嵌入式Linux產(chǎn)品設(shè)計(jì)淺析 1w次閱讀
- 基于嵌入式linux系統(tǒng)下的串口編程具體設(shè)置詳解 7021次閱讀
- 基于嵌入式Linux系統(tǒng)下Mini GUI的移植方法與過(guò)程詳解 3702次閱讀
- 什么是嵌入式Linux內(nèi)核調(diào)試技術(shù)?嵌入式開(kāi)發(fā)又面臨著哪些問(wèn)題? 1220次閱讀
- 基于PXA255開(kāi)發(fā)板外圍字符設(shè)備的嵌入式Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì)與應(yīng)用 1199次閱讀
- 基于嵌入式Linux內(nèi)核的系統(tǒng)設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)設(shè)計(jì) 1209次閱讀
- 關(guān)于Linux嵌入式操作系統(tǒng)的優(yōu)勢(shì)特征詳解 5690次閱讀
- 學(xué)習(xí)嵌入式linux系統(tǒng)開(kāi)發(fā),文件類(lèi)型一定要分清 895次閱讀
- 嵌入式C實(shí)現(xiàn)延時(shí)程序的不同變量的區(qū)別 幾種Linux嵌入式開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹 1673次閱讀
- 基于FPGA嵌入式系統(tǒng)的設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 2338次閱讀
- 基于嵌入式Linux的家居監(jiān)控系統(tǒng)設(shè)計(jì) 2117次閱讀
下載排行
本周
- 1蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 10次下載 | 5 積分
- 2EMC電路設(shè)計(jì)工程師必備的EMC基礎(chǔ)
- 0.42 MB | 2次下載 | 2 積分
- 3AU3116 2×60W模擬輸入雙通道Class-D 音頻功率放大器數(shù)據(jù)手冊(cè)
- 1.19 MB | 1次下載 | 免費(fèi)
- 4低壓降肖特基整流管SR340L數(shù)據(jù)手冊(cè)
- 0.78 MB | 1次下載 | 免費(fèi)
- 5FH153C6電子開(kāi)關(guān)芯片數(shù)據(jù)手冊(cè)
- 0.95 MB | 次下載 | 免費(fèi)
- 6LI32480T035IA3004 液晶屏規(guī)格書(shū)
- 4.27 MB | 次下載 | 1 積分
- 7DFN1610-2L塑料封裝二極管SD07FDT系列規(guī)格書(shū)
- 2.61 MB | 次下載 | 免費(fèi)
- 8SOT-23塑料封裝ESD保護(hù)二極管SMxxOC Series系列規(guī)格書(shū)
- 2.66 MB | 次下載 | 免費(fèi)
本月
- 1三相逆變主電路的原理圖和PCB資料合集免費(fèi)下載
- 27.35 MB | 110次下載 | 1 積分
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 14次下載 | 免費(fèi)
- 3蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 10次下載 | 5 積分
- 4TL494工業(yè)用開(kāi)關(guān)電源原理圖資料
- 0.22 MB | 10次下載 | 1 積分
- 5常用電子元器件介紹
- 3.21 MB | 7次下載 | 免費(fèi)
- 6AIWA J36 維修手冊(cè)
- 4.34 MB | 4次下載 | 10 積分
- 7QW2893應(yīng)急燈專(zhuān)用檢測(cè)芯片
- 590.40 KB | 4次下載 | 免費(fèi)
- 8相關(guān)協(xié)議信號(hào)總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935130次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183344次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論