嵌入式Linux設(shè)備驅(qū)動(dòng)開發(fā)之中斷編程詳解
2017-10-18 |
rar |
0.3 MB |
次下載 |
1積分
資料介紹
11.5 中斷編程
前面所講述的驅(qū)動(dòng)程序中都沒有涉及中斷處理,而實(shí)際上,有很多Linux的驅(qū)動(dòng)都是通過中斷的方式來(lái)進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個(gè)事件時(shí)通過中斷通知軟件進(jìn)行處理。中斷實(shí)現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢方式相比可以大大節(jié)省CPU資源的開銷。
在此將介紹在驅(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)程序中都沒有涉及中斷處理,而實(shí)際上,有很多Linux的驅(qū)動(dòng)都是通過中斷的方式來(lái)進(jìn)行內(nèi)核和硬件的交互。中斷機(jī)制提供了硬件和軟件之間異步傳遞信息的方式。硬件設(shè)備在發(fā)生某個(gè)事件時(shí)通過中斷通知軟件進(jìn)行處理。中斷實(shí)現(xiàn)了硬件設(shè)備按需獲得處理器關(guān)注的機(jī)制,與查詢方式相比可以大大節(jié)省CPU資源的開銷。
在此將介紹在驅(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软件开发之中断优先级与中断嵌套11次下载
- 嵌入式linux开发的学习之路15次下载
- 嵌入式linux报警,嵌入式Linux下LED报警灯驱动设计及编程.doc6次下载
- 嵌入式Linux驱动开发从基础到框架15次下载
- 【嵌入式】基于ARM的嵌入式Linux开发总结28次下载
- (网盘)ARM嵌入式Linux系统开发详解76次下载
- 嵌入式详解64次下载
- 嵌入式Linux设备驱动程序开发基础知识总结免费下载13次下载
- 嵌入式Linux的中断驱动程序设计3次下载
- 《Linux设备驱动开发详解》第10章、中断与时钟PDF免费下载0次下载
- 基于嵌入式Linux应用程序开发详解12次下载
- 嵌入式Linux应用程序开发详解61次下载
- ARM嵌入式Linux系统开发详解58次下载
- 嵌入式liunx开发技术详解55次下载
- 嵌入式Linux设备驱动开发82次下载
- 硬核升级!华清远见STM32MP157驱动开发课程助力嵌入式Linux底层开发入门进阶419次阅读
- 嵌入式Linux开发的三种方式1337次阅读
- 简化SBC的嵌入式Linux软件开发1464次阅读
- 米尔科技Linux设备驱动研究浅谈2226次阅读
- 基于嵌入式Linux内核的ARM9运行实现方式介绍1733次阅读
- 基于Yocto Project的定制嵌入式Linux产品设计浅析10822次阅读
- 基于嵌入式linux系统下的串口编程具体设置详解7331次阅读
- 什么是嵌入式Linux内核调试技术?嵌入式开发又面临着哪些问题?1405次阅读
- 基于PXA255开发板外围字符设备的嵌入式Linux字符设备驱动设计与应用1349次阅读
- 基于嵌入式Linux内核的系统设备驱动程序开发设计1370次阅读
- 关于Linux嵌入式操作系统的优势特征详解5925次阅读
- 学习嵌入式linux系统开发,文件类型一定要分清1054次阅读
- 嵌入式C实现延时程序的不同变量的区别 几种Linux嵌入式开发环境的简单介绍1917次阅读
- 基于FPGA嵌入式系统的设备驱动开发2494次阅读
- 基于嵌入式Linux的家居监控系统设计2340次阅读
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論