亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于TQ2440和Linux的觸摸屏的驅(qū)動研究

        2011-08-14 01:12:08趙建軍袁宏攀
        關鍵詞:開發(fā)板驅(qū)動程序內(nèi)核

        印 盼,趙建軍,袁宏攀

        (昆明理工大學 理學院,云南 昆明650093)

        隨著信息查詢技術的發(fā)展,觸摸屏因具有堅固耐用、反應速度快、節(jié)省空間、易于交流等優(yōu)點,而得到了廣泛應用[1]。觸摸屏作為一種新興的電腦輸入設備,是目前最簡單、方便的一種人機交互設備。

        1硬件簡介

        1.1 TQ2440開發(fā)板簡介

        天嵌公司生產(chǎn)的TQ2440開發(fā)板,微處理器采用Samsung S3C2440AL, 板載 64 MB SDRAM、256 MB Nand Flash、2 MB Nor Flash,板載 5線異步串行口(UART0)、100 Mb/s DM9000網(wǎng)卡、USB HOST接口、USB Device接口和一個SD卡接口,集成了4線電阻式觸摸屏接口和JTAG接口等,音頻接口采用芯片UDA1341,立體聲音頻輸出,可錄音。

        1.2 S3C2440處理器簡介

        S3C2440是由三星公司推出的16/32 bit RISC微處理器,最高主頻可達533 MHz,為手持設備和一般類型應用提供了低價格、低功耗、高性能小型微控制器的解決方案。處理器內(nèi)部集成SDRAM控制器、LCD控制器、4通道 DMA、3通道 UART、I2C總線、I2S總線、SD接口、PWMtimer、觸摸屏接口、8通道 10 bit A/D控制器和camera接口等,很便于一般開發(fā)。

        1.3觸摸屏

        按照觸摸屏的工作原理和傳輸信息的介質(zhì)一般可分為4種,分別為電阻式、紅外線式、電容感應式以及表面聲波式。本次設計采用的是東華3.5英寸觸摸屏,為4線電阻式觸摸屏。具體參數(shù)為:型號:WXCAT35-TG3#001F;尺寸:103 mm×83 mm;顯示面積:70.08 mm(H)×52.56 mm(V);顯示顏色:16.7 兆色分辨率;對比度:300:1;亮度:320 cd/m2;電源:5 V 電壓供電。

        電阻式觸摸屏利用壓力感應進行控制,由觸摸檢測部件和觸摸屏控制器組成。觸摸檢測部件安裝在顯示器屏幕前面,用于檢測用戶觸摸位置,并將觸摸位置信息送到觸摸屏控制器;觸摸屏控制器的主要作用是從觸摸點檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給CPU,它同時能接收來自CPU的命令并加以執(zhí)行。觸摸屏的屏體部分是一塊與顯示器表面非常配合的多層復合薄膜,由一層玻璃或有機玻璃作為基層,表面涂有一層透明的導電層氧化銦(OTI),上面再覆蓋有一層外表面硬化處理、光滑防刮的塑料層,它的內(nèi)表面也涂有一層OTI,在兩層導電層之間有許多細小 (小于1/1 000)的透明隔離點把它們隔開絕緣。當手指接觸屏幕時,兩層OTI導電層將出現(xiàn)一個接觸點,因其中一面導電層接通Y軸方向的5 V均勻電壓場,使得偵測層的電壓由零變?yōu)榉橇?,控制器偵測到這個接通數(shù)據(jù)后,進行A/D轉(zhuǎn)換,并將得到的電壓值與5 V相比較,即可得出觸摸點的Y軸坐標。同理可得出X軸的坐標。

        S3C2440的觸摸屏接口包括觸摸觸點控制邏輯和有中斷產(chǎn)生邏輯的ADC接口邏輯,可以控制或選擇觸摸屏觸點用于XY坐標的轉(zhuǎn)換。觸摸屏接口為了完成相應的工作,具有4種工作模式[2]:

        (1)正常轉(zhuǎn)換模式:此模式與通用的AD轉(zhuǎn)換模式相似,可以在ADCCON(ADC控制寄存器)中設置,在ADCDAT0(ADC數(shù)據(jù)寄存器0)中完成數(shù)據(jù)讀寫。

        (2)X/Y坐標各自轉(zhuǎn)換:觸摸屏控制器支持兩種轉(zhuǎn)換模式,X/Y坐標各自轉(zhuǎn)換與X/Y坐標自動轉(zhuǎn)換。各自轉(zhuǎn)換是在X模式下,將X坐標寫入ADCDAT0后產(chǎn)生中斷;在Y模式下,將Y坐標寫入ADCDAT1后產(chǎn)生中斷。

        (3)X/Y坐標自動轉(zhuǎn)換:在此模式下,觸摸屏控制器先后轉(zhuǎn)換觸摸點的X坐標與Y坐標。當X坐標與Y坐標都轉(zhuǎn)換完成時,中斷控制器產(chǎn)生中斷。

        (4)等待中斷模式:當觸摸筆按下時,觸摸屏產(chǎn)生中斷(INT_TC)。等待中斷模式必須將寄存器rADCTSC設置為0xd3;在觸摸屏控制器產(chǎn)生中斷以后,必須將此模式清除。

        如果GCLK是50 MHz且預分頻器的分頻值設置為49 MHz,10 bit的轉(zhuǎn)換時間按下式計算:

        A/D轉(zhuǎn)換頻率=50 MHz/(49+1)MHz=1 MHz

        轉(zhuǎn) 換時 間=1/(1 MHz/5 個 周 期)=1/200 kHz=5 μs,可見轉(zhuǎn)換時間很短。

        2觸摸屏驅(qū)動程序

        2.1建立嵌入式Linux系統(tǒng)開發(fā)環(huán)境

        建立此開發(fā)環(huán)境的步驟為:

        (1)在Windows XP SP3系統(tǒng)下安裝虛擬機vmware5.5.3,在虛擬機里安裝Redhat9.0系統(tǒng)。在Redhat9.0系統(tǒng)下編譯開發(fā)板所需的鏡像和文件,使用虛擬機工具實現(xiàn)了Windows和Redhat的文件共享,在Windows系統(tǒng)下可以直接下載鏡像和文件到開發(fā)板上。

        (2)使用 Windows XP SP3自帶的超級終端,并使用串口線連接PC和開發(fā)板。這樣就可以在PC上對開發(fā)板進行相關的操作。

        (3)本次實驗開發(fā)板使用的是Linux2.6.30.4內(nèi)核,而Redhat9.0系統(tǒng)是2.4.20.8內(nèi)核,所以需要下載適合開發(fā)板的編譯器。下載最新版本的支持EABI技術的交叉編譯器(本次實驗使用的是EABI_4.3.3_2009版本),復制到Redhat9.0系統(tǒng)目錄/opt/EABI_4.3.3_2009/下,打開系統(tǒng)文件/etc/profile(可在終端使用命令vim/etc/profile),添加相應語句(本次實驗使用vim命令打開profile文件,在第20行添加語句pathmunge/opt/EABI_4.3.3_2009/4.3.3/bin)讓編譯器生效,這樣就可以在PC上交叉編譯開發(fā)板所需要的文件。至此開發(fā)環(huán)境已經(jīng)建立。

        2.2 Linux內(nèi)核的移植

        本次實驗使用的boatload是天嵌公司自己開發(fā)的u-boot,用 J-TAG燒寫方式寫入 NOR Flash,然后便可以使用u-boot自帶的 USB下載(需要在 Windows下安裝USB下載驅(qū)動程序)功能下載開發(fā)板上需要的Linux內(nèi)核鏡像了,這樣方便而且高效。下載Linux2.6.30.4內(nèi)核源代碼,復制到Redhat9.0系統(tǒng)目錄/opt下,并解壓。在目錄/opt/linux2.6.30.4/目錄下便可以進行修改和編譯開發(fā)板上需要的內(nèi)核鏡像。在移植觸摸屏驅(qū)動之前,需要移植板載256 MB NAND Flash的驅(qū)動、yaffs文件系統(tǒng),這樣便完善了串口驅(qū)動程序,最后移植LCD屏的驅(qū)動。

        2.3觸摸屏驅(qū)動程序

        Linux系統(tǒng)將存儲器和外設分為字符設備、塊設備、網(wǎng)絡設備三大類。觸摸屏屬于字符設備,以串行順序依次進行訪問。在Linux系統(tǒng)中,以文件名的形式在/dev目錄下建立觸摸屏設備文件,應用程序可以通過系統(tǒng)調(diào)用函數(shù)open()打開此文件,建立起與設備的連接,然后通 過 函 數(shù) read()、write()、release()、ioctl()等 常 規(guī) 的 文 件 操作對目標設備進行操作。Linux為了把所有的設備當作文件系統(tǒng)進行管理,為所有的文件及設備文件定義了統(tǒng)一的操作函數(shù)接口file_operations,每個文件都通過指向file_operations結構的指針字段與它自己的函數(shù)集相關聯(lián)。file_operations中成員為一系列指向各操作函數(shù)的指針,這些操作函數(shù)主要負責系統(tǒng)調(diào)用的實現(xiàn),不同類型的設備文件系統(tǒng)有不同類型的file_operations結構[4]。觸摸屏的 file_operations結構定義為:

        結構中s3c2410_ts_open函數(shù)為file_operations中函數(shù)指針open所指向的函數(shù),即打開觸摸屏設備時 open操作即為調(diào)用s3c2410_ts_open函數(shù),完成觸摸屏初始狀態(tài)參數(shù)的設置、消息隊列初始化等。read所指向s3c2410_ts_read函數(shù)主要是向消息隊列提供觸摸屏坐標采集數(shù)據(jù),以供應用程序調(diào)用。s3c2410_ts_poll為查詢設備的可讀寫狀態(tài),s3c2410_ts_release則在釋放設備時調(diào)用。

        在觸摸屏驅(qū)動程序中定義了一組宏,用于控制觸摸屏和ADC進入不同的工作模式,如等待中斷、X/Y位置轉(zhuǎn)換等。定義了觸摸屏結構體TS_DEV包含一個緩沖區(qū)、自旋鎖、等待隊列和fasync_struct指針,結構為:

        觸摸屏結構體中的TS_RET包含屏幕的X、Y坐標和觸摸狀態(tài)信息(PEN_DOWN、PEN_UP),這個信息會在用戶讀取觸摸屏信息時復制到用戶空間,結構為:

        觸摸屏工作時會產(chǎn)生兩類中斷:一類是觸點中斷(INT_TC),一類是 X/Y位置轉(zhuǎn)換中斷(INT_ADC)。使用函數(shù)s3c2410_isr_tc用來處理觸摸屏的觸點/抬起中斷,在觸點中斷發(fā)生后,若之前處于PEN_UP狀態(tài),則應該啟動X/Y位置轉(zhuǎn)換;當處于PEN_DOWN狀態(tài)時,則調(diào)用函數(shù)tsEvent完成緩沖區(qū)的填充、等待隊列的喚醒和異步通知信號的釋放。使用函數(shù)s3c2410_isr_adc來處理X/Y位置轉(zhuǎn)換中斷,當X/Y位置轉(zhuǎn)換中斷發(fā)生后,讀取X、Y的坐標值,填入緩沖區(qū)。在函數(shù)s3c2410_isr_adc中通過調(diào)用函數(shù)s3c2410_get_XY來獲取X、Y坐標的。最后由函數(shù)s3c2410_ts_poll實現(xiàn)輪詢接口,將等待隊列添加到結構體poll_table中,當緩沖區(qū)有數(shù)據(jù)時,返回資源可讀取標志,否則返回0。函數(shù)s3c2410_ts_fasync完成觸摸屏對應用程序的異步通知。在程序的最后,由函數(shù)__init s3c2410_ts_init和 __exit s3c2410_ts_exit完成從內(nèi)核中加載和卸載觸摸屏驅(qū)動程序,加載函數(shù) __init s3c2410_ts_init還需要完成申請設備號、添加 cdev、申請中斷、設置觸摸屏控制引腳等多項工作,卸載函數(shù)_exit s3c2410_ts_exit完成釋放設備號、刪除 cdev、釋放中斷等工作[3]。

        2.4實驗操作過程

        將編寫好的觸摸屏驅(qū)動ts.c文件拷貝到內(nèi)核源碼目錄“drivers/input/touchsreen/”下,并修改同目錄下的“Kconfig”和“Makefile”文件。在內(nèi)核配置單中添加觸摸屏編譯配置選項,修改Kconfig文件的第468行,添加如下內(nèi)容:

        在目錄的Makefile文件中添加觸摸屏的編譯條目,添加內(nèi)容如下:

        內(nèi)核配置單的選擇:

        配置完畢后,保存配置單,然后編譯內(nèi)核,再將編譯好的鏡像下載到開發(fā)板中運行。

        2.5觸摸屏的校準

        TQ2440出廠時使用的是Linux2.6.25.8內(nèi)核,觸摸屏已經(jīng)完成校準,但本次實驗重新使用了最新的Linux2.6.30.4內(nèi)核,所以需要重新校準。移植好內(nèi)核之后,下載了天嵌公司已經(jīng)做好的QT圖形界面到開發(fā)板,并重啟開發(fā)板,校準時只需要將觸摸筆點中十字架的中心,然后進行5點校準,完畢后觸摸屏就可以正常使用。如圖1所示。

        觸摸屏因其使用方便、快捷,而得到廣泛應用。Linux系統(tǒng)因其源代碼公開、成本低廉、裁減性好、高效、靈活等特點,在嵌入式領域得到了很好的發(fā)展和應用。本文介紹了觸摸屏的工作原理,對嵌入式Linux系統(tǒng)內(nèi)核源碼的觸摸屏驅(qū)動做了深入探討,編譯和下載Linux內(nèi)核到開發(fā)板上運行,并且移植了QT圖形界面,觸摸屏校準之后,使用情況良好。

        [1]吳金宏.觸摸屏技術及其應用[J].家庭電子,1998,9(4):96-99.

        [2]王立鳳.觸摸屏技術及其應用[J].電子工業(yè)專用設備,2006,35(1):63-66.

        [3]宋寶華.Linux設備驅(qū)動開發(fā)詳解[M].北京:人民郵電出版社,2008.

        猜你喜歡
        開發(fā)板驅(qū)動程序內(nèi)核
        萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        基于嵌入式Linux內(nèi)核的自恢復設計
        Linux內(nèi)核mmap保護機制研究
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機開發(fā)板的設計與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        Mouser為您呈上開發(fā)關鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        欧美刺激午夜性久久久久久久| 亚洲精品久久久久一区二区| 无码无套少妇毛多18p| 国产免费av片无码永久免费 | 欧美日韩中文字幕日韩欧美| 丁香六月久久| 日本一级二级三级在线| 亚洲乱码中文字幕视频| 国产精品毛片va一区二区三区| 亚洲av无码国产精品色午夜洪| 亚洲婷婷丁香激情| 中文字幕大屁股熟女乱| 午夜一区二区三区av| 少妇人妻无一区二区三区| 精品人妻系列无码人妻漫画| 亚洲av高清在线一区二区三区| 妺妺窝人体色www在线图片| 国产亚洲欧美精品一区| 亚洲色图视频在线观看,| 亚洲国产精品婷婷久久| 朋友的丰满人妻中文字幕| 国产一区内射最近更新| 国产无套内射久久久国产| 日韩欧美亚洲综合久久影院d3 | 亚洲一区二区三区99| 亚洲男人天堂一区二区| 中文字幕人妻中文| 国产精品揄拍100视频| 国产免费三级三级三级| 日韩精品一级在线视频| 丰满人妻中文字幕一区三区| 中文字幕无码乱人伦| 国产精品美女久久久久久| 国产精品亚洲一区二区杨幂| 国产成人一区二区三区高清| 国产三级精品三级在专区中文| 人妻有码av中文幕久久| 欧美成人午夜免费影院手机在线看| 日韩精品一区二区午夜成人版 | 欧美老熟妇乱xxxxx| 俺来也俺去啦最新在线|