我最近在给2.6.13内核做设备驱动,现在写到"触摸屏",我参考的方法如下:

(大家先浏览一下啊,呵呵)

在linux2.6.14中没有提供s3c2410的驱动,所以我们要新建驱动文件,我们在

linux2.6.14/drivers/input/touchscreen目录下建立新的文件hfrk_s3c2410_ts.c文件,驱动文件我们

可以参考类似的触摸屏驱动,具体的内容参看网站或者光盘提供的源代码。

首先:我们需要修改linux2.6.14/drivers/input/touchscreen目录下的makefile文件,在文件的最后添加:

obj-$(CONFIG_TOUCHSCREEN_S3C2410) += hfrk_s3c2410_ts.o

第二:我们需要修改linux2.6.14/drivers/input/touchscreen/Kconfig中添加:

config TOUCHSCREEN_S

tristate "Samsung S3C2410 touchscreen input driver"

depends on ARCH_SMDK2410 && INPUT && INPUT_TOUCHSCREEN

select SERIO

help

Say Y here if you have the s3c2410 touchscreen.

If unsure, say N.

To compile this driver as a module, choose M here: the

module will be called s3c2410_ts.

config TOUCHSCREEN_S3C2410_DEBUG

boolean "Samsung S3C2410 touchscreen debug messages"

depends on TOUCHSCREEN_S3C2410

help

Select this if you want debug messages

修改完成以后,在我们配置内核的时候,就会增加关系s3c2410的触摸屏配置,我们选择上这些配置就可以把驱动增加进去了

Device drivers -à

Input device support à

Touchscreens à

Samsung S3C2410 touchscreen input driver

[]Samsung s3c2410 touchscreen debug message

第三:在/linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c,中增加如下内容:

static struct s3c2410_ts_mach_info sbc2410_ts_cfg __initdata = {

.delay = 10000,

.presc = 49,

.oversampling_shift = 2,

};

在smdk2410_devices结构中,添加:

&s3c_device_ts,

在smdk2410_map_io函数中添加:

set_s3c2410ts_info(&sbc2410_ts_cfg);

第四:在/linux-2.6.14/arch/arm/mach-s3c2410/devs.h文件中添加:

extern struct platform_device s3c_device_ts;

第五:在arch/arm/mach-s3c2410/devs.c文件中添加如下几行:

/* Touchscreen */

static struct s3c2410_ts_mach_info s3c2410ts_info;

void __init set_s3c2410ts_info(struct s3c2410_ts_mach_info *hard_s3c2410ts_info)

{

memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct s3c2410_ts_mach_info));

}

EXPORT_SYMBOL(set_s3c2410ts_info);

struct platform_device s3c_device_ts = {

.name = "s3c2410-ts",

.id = -1,

.dev = {

.platform_data = &s3c2410ts_info,

}

};

EXPORT_SYMBOL(s3c_device_ts);

经过这些修改,我们的触摸屏驱动已经完成,我们编译就可以了。我们的这个触摸屏驱动在内核注册为/dev/input/mouse0。

大家不要只看了方法请帮我看看问题,发表一下意见

ok!!!到目前为止我的启动信息里已经能看到:

s3c2410 TouchScreen successfully loaded,而且设备文件/dev/input/mouse0也可以生成.

我的触摸屏在内核打印信息,已经能看到数据正确,触摸屏驱动应该是好的,可是我还不清楚2.6内核和测试程序的接口在什么地方,原来的什么

fileoprition结构体荡然无存,触摸屏的驱动挂到了BUS上......那我的数据要在什么地方才能传递给上层测试程序呢???在什么地方才能

有相应的read,write,函数呢,什么地方写入buff呢.....???我现在的测试程序无法从设备文件中读取正确的数值,应该是下层的驱动向上

层的测试程序传递的时候出现了问题,可是我无法找到接口位置啊

linux 内核 触摸屏,向内核里面添加触摸屏驱动(方法适合其他设备)相关推荐

  1. DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法

    它默认会扫描指定文件夹下的所有驱动,但是有时候即使你放到它的驱动文件夹里也不一定能扫出来. 原因有很多种,比如不是常规驱动,或者版本问题等等.这种情况下一般我们都手动添加驱动. 步骤一: 点击 too ...

  2. 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_昆仑通态MCGS触摸屏如何连接Modsim32进行组态仿真...

    在做项目的过程中,我们往往需要将组态的画面运行查看效果,同时还希望模拟运行画面有数据显示.这时候需要一些实际仪表.设备或者PLC等.但是,在需要它们的时候,身边不一定正好有,这时,我们需要一款模拟它们 ...

  3. exfat linux 驱动_(实例)Linux 内核添加exfat驱动

    背景: 由于exfat是常用的文件系统格式,而Linux由于版权的问题,没有在官方中添加有关的驱动. 但是 微软也同意开源了,所以比较新的 Linux 会支持这一块. 为了支持exfat的驱动,我们需 ...

  4. Linux 2.6.31内核优化指南

    Linux 2.6.31内核优化指南 作者:Ken Wu Email: ken.wug@gmail.com 转载本文档请注明原文链接 http://kenwublog.com/docs/linux-k ...

  5. Linux 2.6 menuconfig内核编译配置选项详解

    Code maturity level options 代码成熟度选项 Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未 ...

  6. linux 应用层编程之内核链表list的使用

    linux内核提供了一个经典通用的双向循环链表list的实现,任何模块都可以借助该接口实现自己的内部循环链表.因为是通用的,可以直接移植到用户态中使用,下面介绍相关的接口与一个简单操作例子,包括链表的 ...

  7. linux 内核 死锁 检查,一种linux内核自旋锁死锁检测报告系统和方法与流程

    本发明涉及内核死锁检测领域,具体的说是一种linux内核自旋锁死锁检测报告系统和方法. 背景技术: linux内核死锁是长期困扰内核开发人员的问题之一,但自内核引入lockdep调试模块之后,内核死锁 ...

  8. USB转WIFI无线网卡驱动程序(内核自带RT5370驱动程序添加)的移植记录之二

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天记录我在I.MX6Q平台添加内核自带RT5370无线网卡驱动程序 ...

  9. Linux驱动模块编译进内核中

    BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 linux 内核中增加程序需要完成以下三项工作: 1. 将编写的源代码复制到 Linux 内核源代码的相应目录: 2. 在 ...

  10. linux内存分配器类型,内核早期内存分配器:memblock

    原标题:内核早期内存分配器:memblock 本文转载自Linux爱好者 本文来自 程雪涛的自荐投稿 Linux内核使用伙伴系统管理内存,那么在伙伴系统工作前,如何管理内存?答案是memblock. ...

最新文章

  1. python条件语句-Python if else条件语句详解
  2. 【高斯消元】[HDU 3359][POJ3999][UVALive4741]Kind of a Blur
  3. 返回语句C语言return关键字
  4. 如何清除浮动(float)所带来的影响
  5. webstorm创建代码模板
  6. php布尔类型转为字符串,php将布尔值类型转为了字符串类型,比如传入isAnalog:true,处理后isAnalog:true...
  7. MyBatis 的执行流程,学废了!
  8. 为什么俄罗斯不怕芯片卡脖子?
  9. php主题怎么增加导航页,为twentytwelve子主题添加pagenavi分页导航 | 科研动力
  10. java占位符打印_什么是 Java 构造器?
  11. Python+pyplot绘制带文本标注的柱状图
  12. oracle索引大小暴增_oracle海量数据中提升创建索引的速度
  13. win7日历加入农历_还是农历更亲切,春节制作一个带农历的日历,欢欢喜喜过新年...
  14. HTML:颜色列表(自用)
  15. php之预处理(msqli和PDO)
  16. lync前段服务器证书安装,Lync Server 2013企业版部署测试六:前端服务器安装Lync Server系统...
  17. 体检管理软件#一站式体检管理系统#体检管理软件#体检软件#体检系统#体检管理系统源码
  18. Win10磁盘管理器:轻松和安全地调整Win10的分区大小
  19. SDN交换机在云计算网络中的应用场景
  20. 运行maven生成的jar包显示class “XXX“ not found

热门文章

  1. JAVAWeb物流快递管理系统
  2. (C++后台面经)网络编程1
  3. 以太网驱动的流程浅析(四)-以太网驱动probe流程【原创】
  4. python爬虫:Scrapy框架爬取纳斯达克(NASDAQ)股票数据
  5. java调用webService方法
  6. Hibernate入门第一讲——Hibernate框架的快速入门
  7. 上海市第三届上海市青少年算法竞赛(小学组)线上同步赛 数洞洞
  8. 阿里巴巴普惠_阿里巴巴的普惠字体来了,再也不用担心版权问题了。
  9. [反汇编练习] 160个CrackMe之016
  10. matlab求一元函数极值点和拐点,matlab求函数的极值点和拐点函数y=x^2*sin(x^2-爱问知识人...