第7章 触摸屏驱动移植 Linux系统移植(第2版) 教学课件
Linux内核移植+根文件系统制作+触摸屏

第一章移植内核1.1 Linux内核基础知识在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux 内核的版本和分类说起。
1.1.1 Linux版本Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中:VERSION = 2PATCHLEVEL = 6SUBLEVEL = 29EXTRAVERSION = .1其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4、2.5、2.6等,稳定版本的德主版本号用偶数表示(比如2.6的内核),开发中的版本号用奇数表示(比如2.5),它是下一个稳定版本内核的前身。
“SUBLEVEL”称为次版本号,它不分奇偶,顺序递增,每隔1~2个月发布一个稳定版本。
“EXTRAVERSION”称为扩展版本号,它不分奇偶,顺序递增,每周发布几次扩展本版号。
1.1.2 什么是标准内核按照资料上的习惯说法,标准内核(或称基础内核)就是指主要在/维护和获取的内核,实际上它也有平台属性的。
这些linux内核并不总是适用于所有linux支持的体系结构。
实际上,这些内核版本很多时候并不是为一些流行的嵌入式linux系统开发的,也很少运行于这些嵌入式linux系统上,这个站点上的内核首先确保的是在Intel X86体系结构上可以正常运行,它是基于X86处理器的内核,如对linux-2.4.18.tar.bz2的配置make menuconfig时就可以看到,Processor type and features--->中只有386、486、586/K5/5x86/6x86/6x86MX、Pentium-Classic、Pentium-MMX、Pentium-Pro/Celeron/Pentium-II、Pentium-III/Celeron(Coppermine)、Pentium-4、K6/K6-II/K6-III 、Athlon/Duron/K7 、Elan 、Crusoe、Winchip-C6 、Winchip-2 、Winchip-2A/Winchip-3 、CyrixIII/C3 选项,而没有类似Samsun 2410等其他芯片的选择。
7_uClinux简介

uClinux开发环境建立
在linux环境下建立uClinux开发环境
安装编译器
下载并安装uClinux源代码
uClinux开发环境建立
安装编译器
如果采用arm-elf-tools交叉编译环境arm-elf-tools20030314.sh,该工具可以从 /pub/uClinux/arm-elf-tools/ 上下载。 在Linux控制台下执行以下命令:
uClinux开发环境建立
Windows+VMWare虚拟机环境下的uClinux开发
VMWare是运行于Windows中的一个应用程序,是 一个虚拟机,可以在其上安装多个操作系统,相当于在 Windows上安装一个虚拟的操作系统。 如果需要使用只支持Windows环境下调试的调试器, 可以通过在VMWare中安装linux虚拟机,在该虚拟机中进 行编辑、编译uClinux,然后通过网络(ftp、nfs、ssh)等 手段传送到Windows中,进行调试,这样编译和调试可以 分别在linux和windows环境下但是是在一台电脑中完成, 它的缺点是系统要求较高,运行速度慢。 也可以在两台电脑中分别安装linux和windows,分别 实现编译和调试。
uClinux开发环境建立
在Windows+Cygwin环境下进行uClinux开发
Cygwin是运行于Windows中的一个应用程序,它可 以使得Linux环境下的应用程序可以在Cygwin环境下进 行编译,即可以在Windows进行编译。 uClinux内核配置和编译等在Cygwin环境下运行,程 序编辑和调试都在Windows环境下进行,必须采用支持 Windows下进行linux调试的调试器(如ADT1000A)才 能进行调试,否则只能通过BOOTLOADER进行简单的 程序烧写运行等 调试信息的打印可以通过串口完成,使用Windows 上的超级终端工具接收并显示目标板传送的打印信息
《unix-os教学课件》第一章-绪论

1.2.2 处理器单元——指令处理操作
❖取指令期
CU将指令从内存读到CPU的指令寄存器 CU增加指令指针寄存器的值,以指向内存中下一条指令
的位置 CU给ALU发信号,通知ALU执行该指令
1.2.2 处理器单元——指令处理操作
❖指令执行期
ALU访问指令寄存器中的指令操作码,以确定要执行的 功能并得到指令的输入数据
(3)
: 为一次只执行一个进程设计Leabharlann ,用于单用户环境(4)
: 一次能执行一个用户的多个程序
(5)
: 多个用户可以使用同一个主机
(6)理解分时和虚拟空间的概念
3、UNIX系统的主要特性 了解
❖ 可移植性 可运行各种类型的计算机上,支持不同的硬件
❖ 多用户性能 多个用户同时共享计算机资源
❖ 多任务性能 允许多个任务同时运行,前台、后台
❖ 寄存器、内存、外部存储器的区别
存储器类型
在系统中的位置
寄存器 速度最快的是?
内存
外部存储器
用途 存储哪些数据?
1.2 计算机硬件
❖1.2.5 输出设备 显示器、打印机、声音设备、绘图仪等
1.2 计算机硬件
❖1.2.6 性能评价指标 针对每台计算机的组成部件、各部件间的通信能力 和所有性能指标的综合测量 CPU速度: 指令的执行速度,MIPS/MFLOPS 访问时间: 反映CPU从存储器或I/O设备检索数据 的速度,us/ns 通道容量: 数据传输速率反映CPU与设备间的通 信通道支持的数据传输能力 总体性能指标: 指CPU速度、存储器和I/O设备的 访问时间,以及存储器和I/O设备与CPU间传送 通道的通道容量的综合。
补充1:Unix/Linux环境搭建
步科触摸屏usb下载驱动安装说明

步科触摸屏usb下载驱动安装说明摘要:1.步科触摸屏USB 驱动下载安装概述2.触摸屏参数及安装注意事项3.驱动程序安装步骤4.常见问题及解决方案5.总结正文:步科触摸屏USB 驱动下载安装说明一、步科触摸屏USB 驱动下载安装概述步科触摸屏是一种广泛应用于各种自动化设备、智能家居和工业控制领域的人机交互设备。
为了使触摸屏能够正常工作,需要安装对应的USB 驱动程序。
本文主要介绍如何下载和安装步科触摸屏的USB 驱动程序。
二、触摸屏参数及安装注意事项1.触摸屏参数触摸屏的尺寸、分辨率、接口等参数会影响到驱动程序的安装。
以XPT2046 触摸屏为例,其参数如下:- 触摸面板宽度:240- 触摸面板高度:320- IO 端子与正点原子F103 的2.4 英寸电阻型触摸面板相同2.安装注意事项- 在安装驱动程序之前,请确保触摸屏与计算机连接正常。
- 根据触摸屏的具体参数,选择合适的驱动程序。
三、驱动程序安装步骤1.下载驱动程序访问步科官方网站或其他可靠的驱动程序下载网站,下载与触摸屏参数匹配的USB 驱动程序。
2.安装驱动程序- 将下载的驱动程序解压缩到某个文件夹。
- 返回计算机桌面,右键单击“我的电脑”或“此电脑”,选择“属性”。
- 在弹出的系统窗口中,选择“硬件”选项卡,然后点击“设备管理器”。
- 在设备管理器窗口中,找到“人机交互设备”或“触摸屏设备”,右键单击,选择“更新驱动程序”。
- 在弹出的驱动程序更新窗口中,选择刚才解压缩的驱动程序文件夹,选择其中的驱动程序文件(如:xpt2046.inf 或touchpad.inf),点击“安装”。
- 安装完成后,系统会自动重启。
3.驱动程序测试安装完成后,可以打开触摸屏相关的测试软件,检查触摸屏是否正常工作。
四、常见问题及解决方案1.触摸屏无法正常工作请检查触摸屏连接是否正常,驱动程序是否安装正确。
如果问题依然存在,可以尝试安装其他版本的驱动程序或联系触摸屏厂商。
linux操作系统实验--电子教案文档

Linux操作系统实验-电子教案文档第一章:Linux操作系统概述1.1 课程目标了解Linux操作系统的起源和发展历程掌握Linux操作系统的特点和优势了解Linux操作系统的应用领域1.2 教学内容Linux操作系统的起源和发展历程Linux操作系统的特点和优势Linux操作系统的应用领域1.3 实验内容安装Linux操作系统熟悉Linux操作系统的界面和基本操作1.4 课后作业简述Linux操作系统的起源和发展历程列举Linux操作系统的特点和优势探讨Linux操作系统的应用领域第二章:Linux文件系统2.1 课程目标了解Linux文件系统的基本概念和结构掌握Linux文件系统的权限管理学会使用Linux文件系统的常用命令2.2 教学内容Linux文件系统的基本概念和结构Linux文件系统的权限管理Linux文件系统的常用命令2.3 实验内容浏览Linux文件系统结构修改文件权限使用文件复制、移动、删除等命令2.4 课后作业简述Linux文件系统的基本概念和结构解释Linux文件系统的权限管理列举Linux文件系统的常用命令第三章:Linux常用命令3.1 课程目标掌握Linux操作系统的常用命令学会使用Linux命令行界面了解Linux命令的参数和选项3.2 教学内容Linux操作系统的常用命令Linux命令行界面的使用方法Linux命令的参数和选项3.3 实验内容练习使用ls、cd、pwd等基本命令学习使用grep、find等高级命令掌握管道命令和重定向命令的使用3.4 课后作业列举Linux操作系统的常用命令解释Linux命令的参数和选项编写一个简单的Linux命令行脚本第四章:Linux文本处理4.1 课程目标学会使用Linux文本处理工具掌握文本编辑器Vim的使用方法了解文本处理的基本技巧4.2 教学内容Linux文本处理工具的使用方法Vim文本编辑器的功能和操作文本处理的基本技巧4.3 实验内容使用cat、more、less等工具查看文本文件学习Vim文本编辑器的基本操作练习文本处理技巧,如查找、替换、排序等4.4 课后作业简述Linux文本处理工具的使用方法解释Vim文本编辑器的功能和操作探讨文本处理的基本技巧第五章:Linux网络配置5.1 课程目标了解Linux操作系统的网络配置方法学会使用Linux网络命令掌握Linux操作系统的网络资源共享5.2 教学内容Linux操作系统的网络配置方法Linux网络命令的使用方法Linux操作系统的网络资源共享5.3 实验内容配置Linux操作系统的IP地址使用ping、ifconfig等网络命令设置Linux操作系统的网络资源共享5.4 课后作业简述Linux操作系统的网络配置方法解释Linux网络命令的使用方法探讨Linux操作系统的网络资源共享第六章:Linux软件管理6.1 课程目标学会使用Linux软件包管理器掌握软件包的安装、升级和卸载了解软件仓库和软件源的使用6.2 教学内容Linux软件包管理器的基本概念使用apt-get和dpkg管理软件包软件包的依赖关系和解决方法软件仓库和软件源的使用6.3 实验内容使用apt-get安装软件包升级和卸载软件包配置软件仓库和软件源6.4 课后作业简述Linux软件包管理器的基本概念列举使用apt-get和dpkg管理软件包的命令解释软件包的依赖关系和解决方法第七章:Linux常用shell脚本7.1 课程目标学会编写简单的Shell脚本掌握Shell脚本的语法和结构了解Shell脚本的应用场景7.2 教学内容Shell脚本的基本语法和结构变量、条件语句和循环语句的使用函数和数组的概念Shell脚本的应用场景7.3 实验内容编写简单的Shell脚本练习使用变量、条件语句和循环语句了解函数和数组的使用方法7.4 课后作业简述Shell脚本的基本语法和结构解释变量、条件语句和循环语句的使用方法探讨Shell脚本的应用场景第八章:Linux系统管理8.1 课程目标学会使用Linux系统管理工具掌握系统监控和性能分析方法了解系统配置和优化技巧8.2 教学内容Linux系统管理工具的使用方法系统监控和性能分析的基本方法系统配置和优化的技巧8.3 实验内容使用top、htop等工具监控系统性能使用vmstat、iostat等工具分析系统性能练习系统配置和优化8.4 课后作业简述Linux系统管理工具的使用方法解释系统监控和性能分析的基本方法探讨系统配置和优化的技巧第九章:Linux安全与权限9.1 课程目标了解Linux操作系统的安全机制学会设置文件和目录权限掌握用户和群组管理方法9.2 教学内容Linux操作系统的安全机制文件和目录权限的设置方法用户和群组管理的基本操作9.3 实验内容设置文件和目录的权限创建和管理用户和群组配置Linux操作系统的安全策略9.4 课后作业简述Linux操作系统的安全机制解释文件和目录权限的设置方法探讨用户和群组管理的基本操作第十章:Linux常用服务与管理10.1 课程目标学会配置和管理Linux常用服务掌握Web服务器(如Apache)、文件服务器(如Samba)和邮件服务器的基本配置了解Linux操作系统的服务管理方法10.2 教学内容Linux常用服务的概述和管理方法Web服务器(如Apache)的基本配置文件服务器(如Samba)的基本配置邮件服务器的基本配置10.3 实验内容配置和测试Web服务器(如Apache)配置和测试文件服务器(如Samba)配置和测试邮件服务器10.4 课后作业简述Linux常用服务的概述和管理方法解释Web服务器(如Apache)、文件服务器(如Samba)和邮件服务器的基本配置探讨Linux操作系统的服务管理方法重点和难点解析重点环节一:Linux操作系统的起源和发展历程解析:理解Linux操作系统的起源和发展历程对于掌握其核心理念和设计哲学至关重要。
第4章 Linux内核裁剪与移植 Linux系统移植(第2版) 教学课件

4.1 Linux内核结构 4.2 内核配置选项 4.3 内核裁剪及编译 4.4 内 核 升 级
4.1.2 内核源码目录介绍
Linux内核代码以源码树的形式存放,如 果在安装系统的时候已经安装了源码树, 其源码树就在/usr/src/linux下。
1.arch目录
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它 的实现方式有多种,可以由OS实现,也可以由运行库实现,也可以在一个 栈中来实现一个堆)
Choose SLAB allocator Profiling support Kprobes
选择内存分配管理器,建议选择 支持系统评测,建议不选 探测工具,开发人员可以选择,建议不选
5.init目录
init子目录包含核心的初始化代码(注意, 不是系统的引导代码)。它包含两个文件 main.c和version.c,这是研究核心如何工 作的一个非常好的起点。
6.ipc目录
ipc子目录包含核心进程间的通信代码。 Linux下进程间通信机制主要包括管道、 信号、消息队列、共享内存、信号量、套 接口。
Physical 选择XIP后,内核存放的物理地址
Kexec system call
Kexec系统调用
4.2.4 网络协议支持相关选项
菜单选项(Networking Support)的子菜 单中包含一些网络协议支持的选项。
选项名 Networking options Amateur Radio support
arch子目录包括了所有和体系结构相关的 核心代码。它的每一个子目录都代表一种 支持的体系结构,例如arm子目录是关于 ARM平台下各种芯片兼容的代码。
触摸屏校正总结
移植tslib-1.4所遇到的问题分析与总结(elephant半原创)一:移植环境1:主机环境:Ret Hat Enterprise 52: 交叉工具链:arm-linux-gcc-4.3.23: 开发平台:友善之臂mini2440+统宝3.5寸屏4:所需的软件资源:tslib-1.4.tar.gz qt-x11-opensource-src-4.5.3.tar.gz qt-embedded-opensource-src-4.5.3.tar.gz (QT的移植是参考网上找到一篇较好的移植手册,但是此手册的作者不知道是无心之失还是咋的,给的资料有所保留。
不过思路比较清晰以及解析的比较详细,还是非常值得参考的)参照的文章链接地址为:/view/242c91f24693daef5ef73d82.html二:交叉编译tslib-1.4在移植好触摸屏的驱动后(在移植内核的时候完成),一般都要移植一个tslib来配合,在用户层对触摸屏的数据进行滤波和矫正,同时也可以给应用程序一个统一的接口,很多GUI都支持tslib的接口。
我移植到开发板的QT版本是QT4,所以用tslib-1.4进行触摸屏校正,因为QT4只是支持tslib-1.4(目前最新版),QT2支持的是tslib-1.3版本,所以在移植过程中先要看清楚自己移植的是什么版本。
简单描述tslib校正触摸屏原理:Tslib是触摸屏驱动和应用层之间的适配层,它从触摸屏驱动处获得原始的设备坐标数据,通过一系列的去噪、去抖、坐标变换等操作,来去除噪声并将原始的设备坐标转换为相应的屏幕坐标。
通过tslib/src/tslib.h文件可以看出,在tslib中为应用层提供了2个主要的接口ts_open(),ts_close();ts_read()和ts_read_raw(),其中ts_read()为正常情况下的接口,ts_read_raw()为校准情况下使用的接口。
嵌入式系统触摸屏驱动程序设计
ARM9嵌入式系统课程设计--嵌入式系统触摸屏驱动程序设计班级:学号:姓名:指导老师:课程设计时间:目录第一章引言 (1)1.1 课程设计目的 (1)1.2 课程设计任务与要求 (1)第二章课程设计平台构建与流程 (2)2.1 嵌入式系统开发平台构建 (2)2.2 触摸屏课程设计流程 (2)2.3 课程设计硬件结构与工作原理 (2)2.3.1硬件结构概述 (2)2.3.2触摸屏工作原理 (4)3.1 Vivi源代码安装 (5)3.2 Vivi源代码分析与移植 (5)3.3 Vivi编译与下载 (6)3.3.1 Vivi的编译 (6)3.3.2 Vivi的下载 (6)第四章 Linux内核移植与下载 (10)4.1 Linux内核源代码安装 (10)4.2 Linux内核源代码分析与移植 (10)4.3 Linux内核编译与下载 (11)4.3.1 Linux内核编译 (11)4.3.2 Linux内核下载 (11)第五章触摸屏功能模块程序设计与交叉编译 (13)5.1 触摸屏模块功能 (13)5.2 功能模块驱动程序设计 (13)第六章根文件系统建立与文件系统下载 (17)6.1 根文件系统分析 (17)6.2 文件系统映像文件生成 (17)6.3 文件系统下载 (18)6.4 功能模块运行与调试 (20)第七章课程设计总结与体会 (21)参考文献 (22)第一章引言1.1 课程设计目的在开发基于Linux的嵌入式系统前需要首先建立嵌入式系统的开发环境,并制定嵌入式系统上的Linux内核。
本课程设计的主要目的是:(1)进一步了解嵌入式开发工具链的构造过程;(2)掌握开发主机与嵌入式系统通信的方法;(3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高阅读和修改程序的能力;(4)通过完成一个嵌入式linux系统开发的完整过程,使我们了解开发嵌入式linux应用系统的全过程,为今后学习打下基础,积累实际操作的经验。
GOODIX_触摸屏汇顶驱动移植详细说明知识分享
obj-$(CONFIG_TOUCHSCREEN_GOODIX)+= gt9xx.o gt9xx_update.ogoodix_tool.o
3.添加板板文件:
home/fy/andriod4.0/iTop4412_Kernel_3.0# vim arch/arm/mach-exynos/mach-itop4412.c
root@fy-machine:/home/fy/andriod4.0/iTop4412_Kernel_3.0# vim drivers/input/touchscreen/Kconfig
config TOUCHSCREEN_GOODIX
tristate "GT9XX based touchscreens"
depends on I2C
help
This is goodix touch panel driver.
2.打开:以下路径:root@fy-machine:/home/fy/andriod4.0/iTop4412_Kernel_3.0# vim drivers/input/touchscreen/Makefile
goodix触摸屏汇顶驱动移植详细说明精品文档1基于迅为的开发板精英版itop4412原来的ic是ft5x06现在用gt911来移植
GOODIX_触摸屏汇顶驱动移植详细说明
1基于迅为的开发板,精英版iTop4412,原来的IC是FT5X06,现在用GT911来移植:先修改Kconfig:注意要对齐:
4.添加文件到touchscreen下:
5.iTop4412_Kernel_3.ቤተ መጻሕፍቲ ባይዱ下,执行make menuconfig:
基于ARM-Linux的触摸屏驱动及其应用研究
口及 图形界面 的应用 。
[ 关键词 ]A M一 i x iG I 设 备驱动 R ,n ;mn U; Lu i
[ 中图分类号]T31 P9
【 文献标识码]A
2 系统 设计 与 实现
下 面对 系统 的主要 三个方 面进 行介 绍 , 即触摸 屏驱动 模型 、 iiU 的移 植和 图形界 面应 用 。 mn I G
2 1 基于 A — i x . M R L u 的触摸屏驱动模型 n “ u 系统的一大特点是支持 内核模块的动态加载及卸载[ 从而通过一系列离散的模块来完成各种功 nx 引,
一
起, 完成整个输入输出设备的功能, 因此 , 在图中以硬件部分作为一个整体来描述。
涉及的触摸屏部分主要函数如下 :
・
31 ・
v i u h od t c o
[ 文章编号]10 —1 X 21)3 03 一 4 08 7 (010 — 00 o 8
嵌入式系统在 当今社会信息生活中的作用越来越大, 各种便携式嵌入式平 台进入到人们生活的各个方面 , P A 笔记本、 D、 智能手机等众多消费类电子产品都开始采用触摸屏作为输入设备。触摸屏设备具有优越 的人机 交互特性 , 操作方便灵活 , 输入速度快 , 因而在工控等领域也获得了广泛的应用。嵌入式 L u i x系统 因其成本 n
l 系统 总体 框 架
整个 系统硬件由一块基于 A M 核心 的嵌入式平台 ¥C40 C M R9 3 2 1、 D A模块、 M 00以太网卡和触摸屏组 D 90
成 , 件 结构 如 图 1 示 。¥C 40核 心板 包 括 A M 2T P 、4 B内存 、6 B L S 硬 所 321 R 90 C U 6M 1M F A H存 储 器 、 扩接 口包 括 外
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.stylus_updown分析
static irqreturn_t stylus_updown(int irq, void *dev_id, struct pt_regs *regs) {
unsigned long data0;
//用于保存ADCDAT0的值
unsigned long data1;
7.4.1 Input子系统概述 7.4.2 输入设备结构体 7.4.3 输入链路的创建过程 7.4.4 使用Input子系统 7.4.5 编写输入设备驱动需要完成的工作
7.4.1 Input子系统概述
Linux 系统提供了Input子系统,输入子系统 由输入子系统核心层(input core)、驱动层 和事件处理层(event handler)3部分组成。 输入事件(如鼠标移动、键盘按键按下、 joystick的移动等)通过driver ->inputcore -> eventhandler -> userspace 的顺序到达用户空 间传给应用程序。按键、触摸屏、键盘、鼠 标等输入都可以利用Input接口函数来实现设 备驱动。在Linux内核中,Input设备用 input_dev 结构体描述。
//用于保存ADCDAT1的值
int updown;
//用于保存触笔动作
data0 = readl(base_addr+S3C2410_ADCDAT0);
//读ADCDAT0的值
data1 = readl(base_addr+S3C2410_ADCDAT1);
//读ADCDAT1的值
/这*再里次有判廷断时触去笔抖是动否的真作的用按*/下,本来进入这个中断服务程序就说明触笔是已经按下了,
writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_ START, base_addr+S3C2410_ADCCON); //开始A/D转换
} else {
mod_timer(&touch_timer, jiffies+1);
2.电容式触摸屏
电容式触摸屏的构造主要是在玻璃屏幕上 镀一层透明的薄膜层,再在导体层外加上 了一块保护玻璃,双玻璃设计能够很好地 保护导体层及感应器。
3.红外线式触摸屏
这种触摸屏由装在触摸屏外框上的红外线 发射与接收感测元件构成,在屏幕表面上 形成红外线探测网,任何触摸物体都可以 改变触点上的红外线而实现触摸操作。红 外触摸屏不受电流、电压和静电干扰,适 宜某些恶劣的环境条件。
断函数stylus_updown里被调用,此时缓存区没 有数据,ts.count的值为0,所以只是简单地设置 A/D转换的模式,然后开启A/D转换。 当ADC中断函数stylus_action()把缓冲区填满时, 作为中断后半段函数稍后被调用,此时ts.count 等于shift,算出其平均值后,交给事件处理层 (Event Handler)处理,主要是填写缓冲然后 唤醒等待输入数据的进程。 stylus抬起,等到缓冲区填满后(可能会包含一 些无用的数据)被调用,这时判断出stylus up, 报告stylus up事件,重新等待stylus down。
7.1.1 触摸屏工作原理
触摸屏简单地说就是一种特殊的输入设备。 为了操作方便,人们用触摸屏取代鼠标或 者键盘。触摸屏由触摸检测部件和触摸屏 控制器组成;触摸检测部件安装在显示器 屏幕前面,用来检测用户触摸的位置,接 受后送触摸屏控制器;而触摸屏控制器的 主要作用是从触摸点检测装置上接收触摸 信息,并将它转换成为触点坐标,再送给 CPU处理,它同时能接收CPU发来的命令 并加以执行。
//读Y坐标的值 //X坐标的值累加 //Y坐标的值累加
ts.count++;
//计数器递增
if (ts.count < (1<<ts.shift)) {
//判断是Leabharlann 完成采样次数writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C24 10_ADCTSC); //设置为自动模式
1.s3c2410ts_probe分析
s3c2410ts_probe是一个探测函数,在这个 函数中完成了硬件资源获取、GPIO口的 初始化、中断申请和注册驱动程序等操作。
2.touch_timer_fire分析
touch_timer_fire()函数主要实现以下功能: stylus down的时候,touch_timer_fire()函数在中
//采样完成,调用touch_timer_fire报告坐标值
writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
}
return IRQ_HANDLED;
}
5.3c2410ts_remove分析
static int s3c2410ts_remove(struct device *dev)
//关闭时钟
//clk_unuse(adc_clock);
clk_put(adc_clock);
adc_clock = NULL;
}
input_unregister_device(&ts.dev);
//注销输入设备
iounmap(base_addr);
return 0;
}
7.4 Linux内核输入子系统介绍
{
disable_irq(IRQ_ADC);
//禁止A/D中断
disable_irq(IRQ_TC);
//禁止触摸屏中断
free_irq(IRQ_TC,&ts.dev);
//释放触摸屏中断号
free_irq(IRQ_ADC,&ts.dev);
//释放A/D中断号
if (adc_clock) {
clk_disable(adc_clock);
touch_timer_fire(0); /*判断出stylus down,调用touch_timer_fire函数,从而进入中断的底半部*/ return IRQ_HANDLED;
}
4.stylus_action分析
static irqreturn_t stylus_action(int irq, void *dev_id, struct pt_regs *regs)
7.3 2.6内核触摸屏驱动源码分析 (s3c2410_ts.c源码分析)
Linux 2.6.33的内核源码中已经包含了触 摸屏的相驱动了,对应的源代码在 drivers/input/touchscreen/s3c2410_ts.c中。
1.s3c2410ts_probe分析 2.touch_timer_fire分析 3.stylus_updown分析 4.stylus_action分析 5.3c2410ts_remove分析
7.4.3 输入链路的创建过程
输入链路的创建过程主要包括硬件设备注 册和input handler两部分。
{
unsigned long data0;
//用于保存X坐标的值
unsigned long data1;
//用于保存Y坐标的值
data0 = readl(base_addr+S3C2410_ADCDAT0);
//读X坐标的值
data1 = readl(base_addr+S3C2410_ADCDAT1); ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK; ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
4.表面声波触摸屏
表面声波是一种沿着介质表面传播的机械 波。这种触摸屏由触摸屏、声波发生器、 反射器和声波接收器组成,其中,声波发 生器能发送一种高频声波跨越屏幕的表面, 当手指触到屏幕时,触点上的声波就被阻 止,由此确定触点坐标的位置。
7.2 S3C2440 ADC接口使用
7.2.1 S3C2440触摸屏接口概述 7.2.2 S3C2440触摸屏接口操作
3.keycode、keycodemax、 keycodesize字段
这3个字段可以用于所有输入设备,被用 来报告将产生的数据作为扫描码。如果不 是所有的扫描码可以被自动识别所辨别, 它们可能需要通过用户空间应用程序设置。 这样keycode数组被用来映射扫描码到输 入系统的键码。keycodemax包含了数组 的大小。keycodesize表示数组中数据的大 小(单位为bytes)。
4.evbit、keybit、relbit、absbit 字段
这几个字段是用于设置输入设备的事件类 型,EV_KEY是最简单的事件类型,用作 按键的事件类型。这个事件通过下面函数 报告给输入系统:
input_report_key(struct input_dev *dev, int code, int value)
7.4.2 输入设备结构体
要了解输入设备子系统,就得先了解内核 中输入设备的定义,这里先给出内核中 input_dev的定义,然后再对其中重要的成 员进行描述。
1.private字段
在Input结构中,这个字段可以被用来指 向在输入设备驱动程序中的任何私有数据 结构,例如在驱动处理多个设备时。在 open()和close()函数中,需要此字段。
updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_
ADCDAT0_UPDOWN));
/* TODO we should never get an interrupt with updown set while * the timer is running, but maybe we ought to verify that the * timer isn't running anyways. */ if (updown)