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...