linux irq部分簡介

2021-07-04 21:38:43 字數 1166 閱讀 8870

今天在rockchip的rk3066平台上的音效卡驅動中想加乙個中斷用來進行耳機插拔檢測,在使用request_irq()時,在flags中設定為上下邊沿觸發,結果竟然返回失敗,大體檢查了一下**,發現問題出在平台相關**的gpio irq中,主要是**不支援同時設定上下邊沿觸發,只能設定為上邊沿或者下邊沿觸發模式。由於我們freescale imx6平台沒有這個問題,而且也能正確的觸發,所以我回來後想看看關於gpio irq這塊的內容;

幾個重要的結構:

struct irq_chip    hardware interrupt chip descriptor;可以理解為管理某類中斷集合,比如,我們所有的gpio irq;

它的功能函式比較全面比如 ack/set type/mask等,也就是說,當你需要對某個中斷進行操作時,要用到這裡的函式;

struct irq_desc          interrupt descriptor;中斷描述符,用來全面描述乙個具體的中斷;

struct gpio_chip       abstract a gpio controller;顧名思義,gpio控制器唄,類似struct irq_chip;但是抽象出來的,一般用來表示乙個gpio集合;比如gpioa;

它的功能也是比較全面的,比如設定乙個gpio的方向,請求gpio,get/set gpio,gpio_to_irq等;除了方法,還有關於這個gpio集合的資訊,比如有多少各gpio,這個gpio集合的起始編號等;

看到這,也許能猜到,應該還有乙個描述某個gpio的結構,對,下個就是:

struct gpio_desc       用來描述乙個gpio,結構很簡單,感覺也沒啥用,最重要的就是chip指標指向的struct gpio_chip;它的全部幸福,都在gpio_chip身上;

接下來,怎麼把他們鏈結在一起呢?

看一下**,這也太簡單了吧。。。gpio_to_irq(pin),輕輕鬆鬆的搞定。。下面分析:

在kernel啟動過程中,有乙個init_irq函式被呼叫,它直接初始化所有的irq,當然包含gpio對應的那些個irq,所以,當我們呼叫gpio_to_irq函式時,就取得了已經初始化好的irq的索引了,接下來就很輕鬆,呼叫request_irq,將中斷處理函式,觸發模式等全部寫進了struct irq_desc中,接下來完事ok了,只等中斷到來;

今天就到這,我再分析分析,打通向前到arm處理中斷異常部分;

HTML部分簡介

開啟軟體,輸入xhtml再按tab建,自動生成網頁製作主體部分 注意先儲存一下,將檔名改為.html讓軟體知道你要編輯什麼 html分為三個部分 說明文件型別有三種標準1.strict.dtt 嚴格,寫的嚴格,讀取嚴格,出現不相容性小 2.transitional,dtt 相容 3.frameset...

Linux部分命令簡介

在 瘟酒吧 下呆久了,相信大家都有點膩了,而不時的 該程式執行了非法操作,即將關閉 和藍臉使我們的神經飽受折磨,你試過辛辛苦苦幹了幾個小時的檔案瞬間的丟失嗎?還好還有nt,但是由於我們的計算機的硬體配置 更只要的是我們口袋中的money 所限,在nt的效果並不理想,現在終於有了乙個linux可以為我...

部分加密演算法簡介

1.對稱加密 使用相同金鑰加密解密。對稱加密演算法 des aes等 2.非對稱加密 加密解密使用不同金鑰 代表演算法 rsa rsa加密演算法加密解密使用不同的金鑰,可以用於加密和認證。加密 公鑰負責加密,私鑰負責解密。認證 私鑰負責簽名,公鑰負責驗證。認證原理 代表演算法 md5 sha演算法等...