tp觸控螢幕,應該是驅動開發中比較簡單並且適合新手入手的模組。不過雖然簡單,但涉及到的內容還是比較多的,其中linux相關主要的機制:
1. input 機制
2. 中斷、定時器
3. i2c
1.tp的原理:tp一般為電容或為電阻屏,不過現在基本上都是電容屏,可能一些wince的裝置還會用電阻屏,但android的基本現在為電容屏,且多點觸控和手套觸控都整合在tp的ic中。當使用者觸控電容屏時,由於人體
電場,使用者手指和工作面形成乙個
耦合電容
,因為工作面上接有
高頻訊號
,於是手指吸收走乙個很小的電流,這個電流分別從屏的四個角上的電極中流出,且理論上流經四個電極的電流與手指頭到四角的距離成比例,控制器通過對四個電流比例的精密計算,得出位置。可以達到99%的精確度,具備小於3ms的響應速度。在實際產品中,當螢幕感應到手指的接觸或者靠近,會產生乙個外部中斷給cpu,在中斷中,一般中斷下半部,通過i2c匯流排,從tp的ic中讀取相關的資訊,經過一定的資料處理,上報x,y座標值。
2.linux input機制:
linux輸入子系統(linux input subsystem)從上到下由三層實現,分別為:輸入子系統事件處理層(eventhandler)、輸入子系統核心層(inputcore)和輸入子系統裝置驅動層。
對於輸入子系統裝置驅動層而言,主要實現對硬體裝置的讀寫訪問,中斷設定,並把硬體產生的事件轉換為核心層定義的規範提交給事件處理層。(工程師主要做的事情)
對於核心層而言,為裝置驅動層提供了規範和介面。裝置驅動層只要關心如何驅動硬體並獲得硬體資料(例如按下的按鍵資料),然後呼叫核心層提供的介面,核心層會自動把資料提交給事件處理層。
對於事件處理層而言,則是使用者程式設計的介面(裝置節點),並處理驅動層提交的資料處理。
3. 中斷
中斷是指在cpu正常執行期間,由於內外部事件或由程式預先安排的事件引起的cpu暫時停止正在執行的程式,轉而為該內部或外部事件或預先安排的事件服務的程式中去,服務完畢後再返回去繼續執行被暫時中斷的程式。linux中通常分為外部中斷(又叫硬體中斷)和內部中斷(又叫異常)。
linux中斷分為兩個半部:上半部(tophalf)和下半部(bottom half)。上半部的功能是"登記中斷",當乙個中斷發生時,它進行相應地硬體讀寫後就把中斷例程的下半部掛到該裝置的下半部執行佇列中去。因此,上半部執行的速度就會很快,可以服務更多的中斷請求。但是,僅有"登記中斷"是遠遠不夠的,因為中斷的事件可能很複雜。因此,linux引入了乙個下半部,來完成中斷事件的絕大多數使命。下半部和上半部最大的不同是下半部是可中斷的,而上半部是不可中斷的,下半部幾乎做了中斷處理程式所有的事情,而且可以被新的中斷打斷!下半部則相對來說並不是非常緊急的,通常還是比較耗時的,因此由系統自行安排執行時機,不在中斷服務上下文中執行。
4. 定時器
兩種裝置進行計時:系統定時器和實時時鐘。
實時時鐘(rtc):用來持久存放系統時間的裝置,即便系統關閉後,靠主機板上的微型電池提供電力保持系統的計時。
系統啟動核心通過讀取rtc來初始化牆上時間,改時間存放在xtime變數中。 系統
定時器:核心定時機制,註冊中斷處理程式,週期性觸發中斷,響應中斷處理程式,進行處理執行以下工作:
5. i2c協議
2條雙向序列線,一條資料線sda,一條時鐘線scl。
sda傳輸資料是大端傳輸,每次傳輸8bit,即一位元組。
支援多主控(multimastering),任何時間點只能有乙個主控。
匯流排上每個裝置都有自己的乙個addr,共7個bit,廣播位址全0.
系統中可能有多個同種晶元,為此addr分為固定部分和可程式設計部份,細節視晶元而定,看datasheet。
載入DTS裝置節點的過程 高通8x26
start kernel setup arch unflatten device tree 在執行完unflatten device tree 後,dts節點資訊被解析出來,儲存到allnodes鍊錶中,allnodes會在後面被用到。隨後,當系統啟動到board檔案時,會呼叫.init machi...
高通平台EFS的製作
用來製作efs的機器稱為a,用來驗證efs的機器稱為b。1.在 modem proc core storage efs inc fs config i.h中增加以下三行 ifndef feature efs enable factory image security hole define feat...
E8卡linux系統讀寫高通字型檔晶元
e8卡linux系統讀寫高通字型檔晶元,在e8卡上通過linux的spi驅動讀寫高通字型檔晶元。spi是分主從的,字型檔晶元不會主動通過spi傳送資料。只有在linux上發起讀操作的時候,字型檔才會把他的資料傳送出來。spi mode ret ioctl fd,spi ioc wr mode,mod...