210學習日記移植一線觸摸_第1頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、210學習日記(16)-移植一線觸摸經過前面十多章的不懈努力,開發板從無到有的開發Linux驅動的環境已經搭建好(如果你問我,怎么沒有寫怎么制作文件系統,怎么nfs啟動的話,我只能回答,視頻里面講得很詳細了!),接下來肯定就是將二期中的所有驅動在210中給通通實現了。二期里面講的方法非常實用,內核里面的框架都是固定的,而這些框架,韋東山已經詳細分析過,所以大家照著框架做(分配,設置,硬件相關,注冊),就沒有問題,到210開發板的時候,也只是修改硬件相關的東西而已。我已經將二期驅動移植到Tiny210了(大多數也適合QT210,我以后會單獨為QT210移植一次,因為這才是真正能學習東西的開發板)

2、下載地址:http:/ const struct file_operations misc_fops = /分配設置一個file_operations結構體.owner= THIS_MODULE,.open= misc_open,;static int _init misc_init(void) /入口函數misc_class = class_create(THIS_MODULE, misc); /創建類if (register_chrdev(MISC_MAJOR,misc,&misc_fops) /注冊一個主設備號為10的字符設備subsys_initcall(misc_init); /申明

3、misc_init()函數到子系統初始化集問:從上面的分析過程可以發現,該子系統初始化程序完全符號寫一般的字符驅動程序的步驟,那么應用程序是怎么對通過misc_register()注冊的設備進行相應的讀,寫等操作的呢?答:過程如下:app: open() 應用程序使用open函數-kernel:(內核最終會調用到misc.c中的file_operations結構體中的open函數)問:當看上面的file_operations結構體的時候,發現里面只有一個open函數?那是怎么來實現 一系列的其他的操作的呢(讀,寫.)?答:可以猜測出,一定是在這個open函數里面做了一些設置,然后在新的設置里面

4、來進行相關的操作。static int misc_open(struct inode * inode, struct file * file)int minor = iminor(inode); /獲得次設備號list_for_each_entry(c, &misc_list, list) /從misc_list鏈表中取出每一項(即miscdevice結構體)if (c-minor = minor) /通過次設備號進行匹配new_fops = fops_get(c-fops); /如果次設備號一樣,則獲得該項的file_operations結構體成員if (!new_fops) /如果上述操作

5、,獲得file_operations結構體沒有成功,則再次獲取list_for_each_entry(c, &misc_list, list) .file-f_op = new_fops; /重新初始化struct file結構中的成員f_op,讓它指向新的file_operations!if (file-f_op-open) /如果新獲得的file_operations結構體有open函數err=file-f_op-open(inode,file); /則調用他的open函數問:從分析以上open函數時,發現會從misc_list鏈表中取出某一項來獲取一個miscdevice結構體,進而獲取

6、他的成員fops(即新的file_operations結構體),從而構建出了一個新的file_operations結構體,那么上述misc_list鏈表是由誰來設置的呢?即鏈表中的成員miscdevice結構體又由誰來傳入呢?答:收索最終發現,它在misc_register函數中被設置:int misc_register(struct miscdevice * misc)misc-this_device = device_create(misc_class, misc-parent, dev, misc, %s, misc-name); /建設備節點list_add(&misc-list, &

7、misc_list); /將傳入的參數miscdevice結構體放入misc_list鏈表Tiny210的硬件原理:問:Tiny210一線觸摸屏到底是什么?答:友善的人自以為傲的核心技術,設計了一個一線精準觸摸電路,并集成到LCD 的驅動板上,它采用觸摸屏控制芯片ADS7843(或者相類似),配合一個ATC的單片機(該單片機里面固話了程序),構成一個獨立的四線電阻觸摸屏采集電路,最后通過一個普通的GPIO口把處理過的數據發送出去,在開發板上與之相連的是GPH1_2,實現單總線通信,這就是一線的來源。說白了,就是ATC單片機通過SPI和ADS7843通信,控制ADS7843去讀寫觸摸屏的數據,然

8、后將數據存在單片機里面的RAM中,然后再通過單片機的一個GPIO發給ARM。問:能夠自己寫出一線觸摸的驅動嗎?答:能使肯定的,但是有些煩躁:.在開發板的原理圖上面,與GPH1_2相連接的LCD管腳上面用的net為PWM,讓人誤以為是用PWM來通信(當然不可能,PWM是輸出,無法讀入數據);.上面說了,觸摸屏的數據會經單片機處理后,然后通過一個IO管腳發個ARM,但是該IO發出的數據的格式是什么樣子的呢(即時序,幾秒代表1,幾秒代表0),由于友善把其視為核心技術,他們不向外提供固話在單片機中的程序(這個我能理解),但是他們也不提供IO發出的數據的時序,這很是冒火。但是大家可以去閱讀他們提供的內核里面的觸摸屏驅動,然后反推出時序是怎么樣的。但是,我沒有去弄了,我只是移植了。.我不去弄明白它的時序到底是什么,因為太好精力了,而且沒有任何實際的意義(我和專搞觸摸屏的交流過),因為大家都用IIC(如電容屏,這得強烈推薦QT210開發板了,他們就是用的電容屏),SPI等通用接口通信,即使用自己的協議,也會對客戶提供時序圖的,可是友善的什么都沒有,所以它的一線觸摸屏無任何可用的價值。當然,我希望大家出于好奇和好勝,有空的時候,能夠攻下這個時序來,讓友善所謂的核心技術見鬼去吧。最后說說,友善的一線觸摸驅動是怎么寫的,它在入口函數中注冊了一個內核定時器,用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論