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

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