硬件平臺:FL2440
內(nèi)核版本:2.6.28
主機(jī)平臺:Ubuntu 11.04
內(nèi)核版本:2.6.39
原創(chuàng)作品,轉(zhuǎn)載請標(biāo)明出處: http://blog.csdn.net/yming0221/archive/2011/06/26/6568937.aspx
這個(gè)驅(qū)動(dòng)寫了好久,因?yàn)樵瓉淼腖inux內(nèi)核編譯的時(shí)候?qū)⒂|摸屏驅(qū)動(dòng)編譯進(jìn)內(nèi)核了,而觸摸屏驅(qū)動(dòng)里的ADC中斷在注冊的時(shí)候類型選擇的是
IRQF_SAMPLE_RANDOM,不是共享類型,所以,自己寫的ADC驅(qū)動(dòng)在每次open的時(shí)候,總提示ADC中斷注冊失敗。
解決方案:
重新配置內(nèi)核,選擇觸摸屏驅(qū)動(dòng)以模塊的形式編譯,而不是直接編譯進(jìn)內(nèi)核,這樣Linux在啟動(dòng)的時(shí)候不會自動(dòng)加載觸摸屏驅(qū)動(dòng),當(dāng)然,IRQ_ADC中斷號不會被占用。這樣可以測試自己寫的ADC驅(qū)動(dòng)了。
以下是驅(qū)動(dòng)源代碼:
Makefile文件:
以下是測試代碼:
首先新建設(shè)備:
mknod /dev/my_adc c 102 32
然后插入驅(qū)動(dòng) insmod adc.ko
運(yùn)行測試程序./read
結(jié)果如下:
可以看出,調(diào)節(jié)ad轉(zhuǎn)換器上的旋鈕,看到AD轉(zhuǎn)換值的變化,說明驅(qū)動(dòng)工作正常。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
