找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1529|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

迅為iTOP-iMX6開發(fā)板-設(shè)備樹內(nèi)核-中斷例程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1.1 中斷概述
ARM 架構(gòu) linux 內(nèi)核中,有 5 種常見(jiàn)的異常,其中中斷異常是其一,Linux 內(nèi)核將所
有中斷統(tǒng)一編號(hào),使用一個(gè) irq_desc 結(jié)構(gòu)體來(lái)描述這些中斷,里面記錄了中斷名稱、中斷狀
態(tài)、中斷標(biāo)記、并提供了中斷的底層硬件訪問(wèn)函數(shù)(如:清除、屏蔽、使能中斷),提供了這
個(gè)中斷的處理函數(shù)入口,通過(guò)它還可以調(diào)用用戶注冊(cè)的的中斷處理函數(shù)。linux 內(nèi)核的中斷體
系已經(jīng)很完善了,驅(qū)動(dòng)工程師需要做的就是調(diào)用 request_irq 函數(shù)向內(nèi)核注冊(cè)中斷處理函
數(shù),下面我們來(lái)看看 request_irq 函數(shù)的定義:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
第一個(gè)參數(shù) irq:中斷號(hào),與平臺(tái)架構(gòu)相關(guān);
第二個(gè)參數(shù) handler:用戶中斷處理函數(shù);
第三個(gè)參數(shù) flags:中斷標(biāo)記
第四個(gè)參數(shù) devname:中斷名字,可以通過(guò) cat /proc/interrupts 查看;
第五個(gè)參數(shù) dev_id:在 free_irq 中有用,也用做區(qū)分中斷處理函數(shù);
有注冊(cè)就得對(duì)應(yīng)著有注銷,驅(qū)動(dòng)的注銷函數(shù)是 free_irq,其定義如下:
void free_irq(unsigned int irq, void *dev_id)
第一個(gè)參數(shù) irq:中斷號(hào),與 request_irq 中的 irq 一致,用于定位 action 鏈表;
第二個(gè)參數(shù) dev_id:用于在 action 鏈表中找到要卸載的表項(xiàng);同一個(gè)中斷的不同中斷
處理函數(shù)必須使用不通的 dev_id 來(lái)區(qū)分,這就要求在注冊(cè)中斷共享時(shí)參數(shù) dev_id 必須唯
一。
1.2 設(shè)備樹文件修改
這里我們選用 back 按鍵用于測(cè)試,它的網(wǎng)絡(luò)標(biāo)號(hào)是“DISP0_WR”,對(duì)應(yīng)的 IO 管腳編
號(hào)是“NANDF_WP”,對(duì)應(yīng)的宏定義為“MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09 ”
這個(gè)管腳在 gpio-keys 驅(qū)動(dòng)中已經(jīng)使用,我們需要在設(shè)備樹中將其屏蔽,然后在設(shè)備樹
文件中增加測(cè)試?yán)痰脑O(shè)備樹代碼。
打開“arch/arm/boot/dts/imx6qdl-sabresd.dtsi”設(shè)備樹文件。
將 gpios = <&gpio6 9 GPIO_ACTIVE_LOW>; 屏蔽掉,如下圖所示。
在“itop_max485_ctl”之后添加以下代碼:
key_int{
compatible = "itop,key_int_name";
pinctrl-names = "default";
gpio_key_int = <&gpio6 9 GPIO_ACTIVE_LOW>;
status = "okay";
};
添加完成之后如下圖所示,
重新燒寫設(shè)備樹文件,在開發(fā)板“/sys/bus/platform/device”目錄下會(huì)有 key_int 文件
夾生成,表明設(shè)備注冊(cè)完成。
1.3 測(cè)試驅(qū)動(dòng)
驅(qū)動(dòng)源碼在壓縮包“獨(dú)立中斷例程_V1.0”中。
使用“insmod key_int.ko”命令加載驅(qū)動(dòng)模塊。如下圖。
按下按鍵“Back”,會(huì)有打印信息,如下圖所示。
卸載驅(qū)動(dòng)如下圖。
測(cè)試完成。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表