<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于S3C2410微處理器的觸摸屏設計

基于S3C2410微處理器的觸摸屏設計

作者: 時(shí)間:2013-02-19 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

隨著(zhù)信息家電和通訊設備的普及,作為與用戶(hù)交互的終端媒介,在生活中得到廣泛的應用。如何在系統中集成模塊以及在嵌入式操作系統中實(shí)現其驅動(dòng)程序,都成為嵌入式系統設計者需要考慮的問(wèn)題。本文主要介紹在三星X的硬件平臺上進(jìn)行基于嵌入式Linux的驅動(dòng)程序設計。

硬件實(shí)現方案

SPI接口是Motorola推出的一種同步串行接口,采用全雙工、四線(xiàn)通信系統,X是三星推出的自帶觸摸屏接口的ARM920T內核芯片,ADS7843為Burr-Brown生產(chǎn)的一款性能優(yōu)異的觸摸屏控制器。本文采用SPI接口的觸摸屏控制器ADS7843外接四線(xiàn)電阻式觸摸屏,這種方式最顯著(zhù)的特點(diǎn)是響應速度更快、靈敏度更高,與觸摸屏控制器間的通訊時(shí)間大大減少,提高了的效率。ADS7843與的硬件連接如圖1所示,鑒于A(yíng)DS7843差分工作模式的優(yōu)點(diǎn),在硬件電路中將其配置為差分模式。

基于S3C2410微處理器的觸摸屏設計
圖1 觸摸屏輸入系統示意圖

嵌入式Linux系統下的驅動(dòng)程序

設備驅動(dòng)程序是Linux內核的重要組成部分,控制了操作系統和硬件設備之間的交互。Linux的設備管理是和文件系統緊密結合的,各種設備都以文件的形式存放在/dev目錄下,成為設備文件。應用程序可以打開(kāi)、關(guān)閉、讀寫(xiě)這些設備文件,對設備的操作就像操作普通的數據文件一樣簡(jiǎn)便。為開(kāi)發(fā)便利、提高效率,本設計采用可安裝模塊方式開(kāi)發(fā)調試觸摸屏驅動(dòng)程序。

設備驅動(dòng)在加載時(shí)首先需要調用入口函數init_module(),該函數完成設備驅動(dòng)的初始化工作。其中最重要的工作就是向內核注冊該設備,對于字符設備調用register_chrdev()完成注冊,對于塊設備需要調用register_blkdev()完成注冊。注冊成功后,該設備獲得了系統分配的主設備號、自定義的次設備號,并建立起與文件系統的關(guān)聯(lián)。字符設備驅動(dòng)程序向Linux內核注冊登記時(shí),在字符設備向量表chrdevs中增加一個(gè)device_struct數據結構條目,這個(gè)設備的主設備標識符用作這個(gè)向量表的索引。向量表中的每一個(gè)條目,即一個(gè)device_struct數據結構包括兩個(gè)元素:一個(gè)登記的設備驅動(dòng)程序的名稱(chēng)的指針和一個(gè)指向一組文件操作的指針。這塊文件操作本身位于這個(gè)設備的字符設備驅動(dòng)程序中,每一個(gè)都處理特定的文件操作,比如打開(kāi)、讀寫(xiě)和關(guān)閉。所謂登記,就是將由模塊提供的file_operations結構指針填入device_struct數據結構數組的某個(gè)表項。登記以后,位于上層的模塊(內核)可以“看見(jiàn)”這個(gè)模塊了。但是,應用程序卻還不能“看見(jiàn)”它,因而還不能通過(guò)系統調用它。要使應用程序能“看見(jiàn)”這個(gè)模塊或者它所驅動(dòng)的設備,就要在文件系統中為其創(chuàng )建一個(gè)代表它的節點(diǎn)。通過(guò)系統調用mknod()創(chuàng )建代表此項設備的文件節點(diǎn)——設備入口點(diǎn),就可使一項設備在系統中可見(jiàn),成為應用程序可以訪(fǎng)問(wèn)的設備。另外,設備驅動(dòng)在卸載時(shí)需要回收相應的資源,令設備的相應寄存器值復位并從系統中注銷(xiāo)該設備。

Linux操作系統通過(guò)系統調用和硬件中斷完成從用戶(hù)空間到內核空間的控制轉移。設備驅動(dòng)模塊的功能就是擴展內核的功能,主要完成兩部分任務(wù):一個(gè)是系統調用,另一個(gè)是處理中斷。圖2是一個(gè)設備驅動(dòng)模塊動(dòng)態(tài)掛接、卸載和系統調用的全過(guò)程。系統調用部分則是對設備的操作過(guò)程,比如open,read,write,ioctl等操作,設備驅動(dòng)程序所提供的這組入口點(diǎn)由幾個(gè)結構向系統進(jìn)行說(shuō)明,分別是file_operations數據結構、inode數據結構和file 數據結構。內核內部通過(guò)file結構識別設備,通過(guò)file_operations數據結構提供文件系統的入口點(diǎn)函數,也就是訪(fǎng)問(wèn)設備驅動(dòng)的函數,結構中的每一個(gè)成員都對應著(zhù)一個(gè)系統調用。在嵌入式系統的開(kāi)發(fā)中,我們一般僅僅實(shí)現其中幾個(gè)接口函數:read、write、open、ioctl及release就可以完成應用系統需要的功能。寫(xiě)驅動(dòng)程序的任務(wù)之一就是完成file_operations中的函數指針。

觸摸屏驅動(dòng)程序設計

觸摸屏驅動(dòng)程序中重要數據結構

typedef struct {

unsigned short pressure;

unsigned short x;

unsigned short y;

unsigned short pad;

} TS_RET;

typedef struct {

unsigned int PenStatus;

TS_RET buf[MAX_TS_BUF];

unsigned int head, tail;

wait_queue_head_t wq;

spinlock_t lock;

} TS_DEV;

static struct file_operations s3c2410_fops = {

owner: THIS_MODULE,

open: s3c2410_ts_open,

read: s3c2410_ts_read, release: s3c2410_ts_release,

poll: s3c2410_ts_poll, };

在程序中有三個(gè)重要的數據結構:用于表示筆觸點(diǎn)數據信息的結構TS_RET,表示ADS7843中有關(guān)觸摸屏控制器信息的結構TS_DEV,以及驅動(dòng)程序與應用程序的接口file_operations結構的s3c2410_fops。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: S3C2410 微處理器 觸摸屏

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>