基于μClinux的觸摸屏軟硬件關(guān)鍵技術(shù)分析
μClinux下驅動(dòng)程序的特點(diǎn)
μClinux繼承了Linux的設備管理方法,將所有的設備看做具體的文件,通過(guò)文件系統層對設備進(jìn)行訪(fǎng)問(wèn)。所以在Clinux的框架結構中,和設備相關(guān)的處理可以分為兩個(gè)層次——文件系統層和設備驅動(dòng)層。設備驅動(dòng)層屏蔽具體設備的細節,文件系統層則向用戶(hù)提供一組統一的規范的用戶(hù)接口。這種設備管理方法可以很好地做到“與設備無(wú)關(guān)性”,使Clinux可以根據硬件外設的發(fā)展進(jìn)行方便的擴展,比如要實(shí)現一個(gè)設備驅動(dòng)程序,只要根據具體的硬件特性向文件系統提供一組訪(fǎng)問(wèn)接口即可。
μClinux中的設備可以分為3類(lèi):字符設備、塊設備和網(wǎng)絡(luò )設備。其中字符設備沒(méi)有緩沖區,數據的處理是以字節為單位按順序進(jìn)行的,它不支持隨機讀寫(xiě),觸摸屏即屬于字符設備的一種。
驅動(dòng)程序在內核中裝載的方式有兩種:一種是直接編譯進(jìn)內核,在系統初始化的時(shí)候就對設備進(jìn)行注冊;一種是模塊化加載的方法,將驅動(dòng)程序編譯成目標文件(*.o),需要添加設備時(shí),使用insmod命令向系統注冊,停止使用時(shí),用rmmod命令卸載。對于觸摸屏這種基本的輸入工具,建議采取直接編譯進(jìn)內核的方式,這樣系統一啟動(dòng)就可以使用了。
向內核注冊一個(gè)字符設備的函數為:externintregister_chrdev(unsignedintmajor,constchar*name, structfile_operations*fops);內核用主設備號和次設備號惟一地標識一個(gè)設備。參數major對應所請求的主設備號,name對應設備的名字,fops是一個(gè)指向file_operations結構的指針,它是Clinux下編寫(xiě)驅動(dòng)程序用到的一個(gè)關(guān)鍵的數據結構,它提供了應用空間與驅動(dòng)程序的調用接口。這個(gè)數據結構的每一項都指向驅動(dòng)程序完成的一個(gè)功能。
在2.4版本內核中對該結構采取標記結構初始化語(yǔ)法(TaggedStructureInitializationSyntax),與2.0內核比較,這種語(yǔ)法可移植性更好,程序的可讀性和代碼的緊湊性都比較好。以觸摸屏為例:
staticstruct file_operations ts_fops={
owner:THIS_MODULE,
評論