全志H3的IRQ驅動程式

2022-07-24 16:03:17 字數 2592 閱讀 5472

1. 使用pg11引腳作為中斷輸入引腳

2. 如何在dts檔案中申明使用irq

​ 如圖所示便是標準的使用乙個pin的irq的dts語法,個人覺得在不同的soc中所使用的dts語法稍微有一些不同,對於具體的使用方法需要參考官方**中給出的標準格式。下面是我的**中給出的:

​ 我認為最重要的屬性是interrupts相關的屬性,其他的pincrtl可以啟動輔助作用(在這裡不能夠通過gpio獲得irq號,需要注意的是gpio_in不能被設定到目標引腳).

3. 我的驅動**

#include #include #include #include #include #include #include #include #include #define dev_name	"button"

static ssize_t irq_open(struct inode *node, struct file *filp)

static ssize_t irq_close(struct inode *node, struct file *filp)

static irqreturn_t button_isr(int irq, void *dev)

static const struct file_operations f_ops = ;

static struct miscdevice irq_misc = ;

static int probe(struct platform_device *pdev)

printk(": success to get node by path !\n");

pin = of_get_named_gpio(node, "gpio", 0);

if(pin < 0)

printk(": success get device need pins = %d \n", pin);

// 2. transfer gpio number to irq number

irq = gpio_to_irq(pin);

if(irq < 0)

printk(": the irq of pin is %d !\n", irq);

*/ // a. through platform device get irq

irq = platform_get_irq(pdev, 0);

if(irq < 0)

printk(": get irq = %d though platform !\n", irq);

ret = devm_request_irq(&pdev->dev, irq, button_isr,

irqf_trigger_rising, dev_name, &pdev->dev);

if(ret)

printk(": had register interrupt isr !\n");

ret = misc_register(&irq_misc);

if(ret != 0)

printk(": success register misc device, minor = %d !\n", irq_misc.minor);

return 0;

}static int __exit remove(struct platform_device *pdev)

static const struct of_device_id irq_ids = ,

,};static struct platform_driver irq_driver = ,

};module_platform_driver(irq_driver);

module_license("gpl");

module_author("weirdo");

module_description("this driver for allwinner h3 irq!");

​ 對於irq驅動的tasklet,workqueen這些需要讀者自己去學習,我只是給出如何使用全志h3的irq的方法。

** 驅動測試** **

#include#include#include#include#include#include#include#include#includeint main()

printf("open file success ! \n");

for(i=0;i<20;i++)

close(fd);

return 0;

}

測試結果:

7 全志H3 準備焊接

cpu和ddr已到 板子到了,開始焊接 下班繼續焊接 發現少了乙個料 漏買了,趕緊 補乙個 現在就把手上的板子拆了個晶元先用著 焊接完成,測試電源 3.3v差了0.05,1.2v高了0.08 應該影響不會太大 今晚下班,飛線測試能不能啟動 現在是凌晨 昨晚跑的有問題,調整了一下電源部分,之前的電壓感...

全志h3通用韌體 全志h3晶元安卓版韌體

安卓 android 系統韌體包修改基礎教程 資訊與通訊 工程科技 專業資料。瑞芯微rk2808 安卓 android 系統韌體包修改基礎教程 本文為 locke 原創文章,請尊重作者的勞動.12.1如何編譯修改配置檔案後有兩種編譯方法可以使得修改生效,第一種是整體編譯重燒韌體,第二種是單獨的 模組...

全志H3 製作刷機包(TF卡)

開發環境 ubuntu 14.04 lts busybox 1.26.2 u boot kernel lichee 全志原廠提供的bsp 1 製作乙個 256m 的空白映象檔案,你可以製作得更小或更大 dd if dev zero of fs nanopi.img bs 1m count 256 2...