欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1751|回復: 0
收起左側

迅為iTOP-iMX6開發板-設備樹內核-中斷例程

[復制鏈接]
ID:151620 發表于 2019-8-29 10:57 | 顯示全部樓層 |閱讀模式
1.1 中斷概述
ARM 架構 linux 內核中,有 5 種常見的異常,其中中斷異常是其一,Linux 內核將所
有中斷統一編號,使用一個 irq_desc 結構體來描述這些中斷,里面記錄了中斷名稱、中斷狀
態、中斷標記、并提供了中斷的底層硬件訪問函數(如:清除、屏蔽、使能中斷),提供了這
個中斷的處理函數入口,通過它還可以調用用戶注冊的的中斷處理函數。linux 內核的中斷體
系已經很完善了,驅動工程師需要做的就是調用 request_irq 函數向內核注冊中斷處理函
數,下面我們來看看 request_irq 函數的定義:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
第一個參數 irq:中斷號,與平臺架構相關;
第二個參數 handler:用戶中斷處理函數;
第三個參數 flags:中斷標記
第四個參數 devname:中斷名字,可以通過 cat /proc/interrupts 查看;
第五個參數 dev_id:在 free_irq 中有用,也用做區分中斷處理函數;
有注冊就得對應著有注銷,驅動的注銷函數是 free_irq,其定義如下:
void free_irq(unsigned int irq, void *dev_id)
第一個參數 irq:中斷號,與 request_irq 中的 irq 一致,用于定位 action 鏈表;
第二個參數 dev_id:用于在 action 鏈表中找到要卸載的表項;同一個中斷的不同中斷
處理函數必須使用不通的 dev_id 來區分,這就要求在注冊中斷共享時參數 dev_id 必須唯
一。
1.2 設備樹文件修改
這里我們選用 back 按鍵用于測試,它的網絡標號是“DISP0_WR”,對應的 IO 管腳編
號是“NANDF_WP”,對應的宏定義為“MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09 ”
這個管腳在 gpio-keys 驅動中已經使用,我們需要在設備樹中將其屏蔽,然后在設備樹
文件中增加測試例程的設備樹代碼。
打開“arch/arm/boot/dts/imx6qdl-sabresd.dtsi”設備樹文件。
將 gpios = <&gpio6 9 GPIO_ACTIVE_LOW>; 屏蔽掉,如下圖所示。
01.jpg
在“itop_max485_ctl”之后添加以下代碼:
key_int{
compatible = "itop,key_int_name";
pinctrl-names = "default";
gpio_key_int = <&gpio6 9 GPIO_ACTIVE_LOW>;
status = "okay";
};
添加完成之后如下圖所示,
03.jpg
重新燒寫設備樹文件,在開發板“/sys/bus/platform/device”目錄下會有 key_int 文件
夾生成,表明設備注冊完成。
1.3 測試驅動
驅動源碼在壓縮包“獨立中斷例程_V1.0”中。
使用“insmod key_int.ko”命令加載驅動模塊。如下圖。
04.jpg
按下按鍵“Back”,會有打印信息,如下圖所示。
05.jpg
卸載驅動如下圖。
06.jpg
測試完成。
9911245-4af7a16ceefa7f25.webp.jpg

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表