天嵌 ARM开发社区

 找回密码
 注册
查看: 6751|回复: 16

触摸屏驱动问题

[复制链接]
carterlam 发表于 2010-2-26 17:12:18 | 显示全部楼层 |阅读模式
2.6.30.4的内核
按照Step16拷贝了tq2440_ts.c并修改,修改同目录下Kconfig,Makefile
没有添加TSDEV补丁,按手册配置内核。
编译内核镜像时出现以下错误:
  CALL    scripts/checksyscalls.sh
<stdin>:1097:2: warning: #warning syscall fadvise64 not implemented
<stdin>:1265:2: warning: #warning syscall migrate_pages not implemented
<stdin>:1321:2: warning: #warning syscall pselect6 not implemented
<stdin>:1325:2: warning: #warning syscall ppoll not implemented
<stdin>:1365:2: warning: #warning syscall epoll_pwait not implemented
  CHK     include/linux/compile.h
  LD      drivers/built-in.o
drivers/input/built-in.o:(.data+0x844): multiple definition of `ADC_LOCK'
drivers/char/built-in.o:(.data+0x428): first defined here
make[1]: *** [drivers/built-in.o] Error 1
make: *** [drivers] Error 2
请问为什么会出现以上错误,可以怎么修正错误?
谢谢!
亚瑟王 发表于 2010-2-27 18:03:34 | 显示全部楼层
建议你看一下天嵌科技的Linux移植手册的触摸移植部分的讲述,4.2版本的103页。
nono1860 发表于 2010-6-2 03:03:27 | 显示全部楼层
請問樓主解決此問題了嗎? 我也是遇到同樣問題!也在看了103頁 看不出甚麼訣竅來
亚瑟王 发表于 2010-6-2 19:26:47 | 显示全部楼层
1、从天嵌科技提供的内核中复制触摸驱动源码到你的内核中。
2、修改复制过来的触摸驱动源码的41行内容为
DECLARE_MUTEX(ADC_LOCK);
然后编译即可。
qazasdwsx 发表于 2010-11-7 03:36:10 | 显示全部楼层
正是因为改了这句话才出现了错误,用原来的 触摸不起作用了。。
天嵌_support1 发表于 2010-11-8 11:50:24 | 显示全部楼层
5# qazasdwsx


把  DECLARE_MUTEX(ADC_LOCK) 改成;

extern struct semaphore ADC_LOCK
Waldo 发表于 2012-5-15 11:10:21 | 显示全部楼层
我也是同样的问题,为什么没有后文了。。。不了了之的吗?
隆美尔1944 发表于 2012-7-27 16:17:54 | 显示全部楼层
本帖最后由 隆美尔1944 于 2012-7-27 16:19 编辑

我在把ADC的驱动编译进内核时,也出现了这个问题:
  1. drivers/input/built-in.o:(.data+0x844): multiple definition of `ADC_LOCK'
  2. drivers/char/built-in.o:(.data+0x3a4): first defined here
复制代码
当时就搜到了这个帖子。但是这个帖子针对的是移植触摸屏时的错误,但是他俩的错误居然一样?所以我就认为他俩有必然联系。我查了一下移植手册的P104,发现了错误原因。移植手册是这么说的:
在 Linux-2.6.30.4 中的触摸驱动和 Linux-2.6.25.8 的触摸驱动不太一样,从天嵌科技提供的 2.6.30.4 的
源码中的 “ drivers/input/touchsreen/ ” 拷贝 “ tq2440_ts.c ” 文件到您的内核的 “ drivers/input/touchsreen/ ” 目
录下,然后修改驱动源码的 41 行为如下内容:
//extern struct semaphore ADC_LOCK; // 这个原来的内容
DECLARE_MUTEX(ADC_LOCK); // 这是修改后的内容

但是不知你注意到下面的说明没有:
说明: 修改原因,因为天嵌科技提供的触摸驱动中使用了 ADC 驱动中的 ADC_LOCK ,而这里并没 有移植 ADC 驱动,所以这里做一下简单的改变。
很显然,当时修改这段的原因是因为没有移植 ADC 驱动,而我现在正在做的就是ADC 驱动的移植。所以我就把drivers/input/touchsreen/tq2440_ts.c中以前修改的部分去掉,变成最原始的状态
  1. extern struct semaphore ADC_LOCK; // 这个原来的内容
  2. //DECLARE_MUTEX(ADC_LOCK); // 这是修改后的内容
复制代码
编译通过。

希望我的这个回复对有的朋友有所帮助
twj2012linux 发表于 2012-11-29 22:17:34 | 显示全部楼层
请问你这个解决了吗,解决了告诉我们一声啊,都搞了好长时间了,不知道是哪里的问题:D
twj2012linux 发表于 2012-11-29 22:18:16 | 显示全部楼层
亚瑟王 发表于 2010-6-2 19:26
1、从天嵌科技提供的内核中复制触摸驱动源码到你的内核中。
2、修改复制过来的触摸驱动源码的41行内容为
...

这个到底是怎么解决的,给个说法啊,是按照上面写的,编译通过不了,给楼主一样的问题
亚瑟王 发表于 2012-11-30 16:27:43 | 显示全部楼层
twj2012linux 发表于 2012-11-29 22:18
这个到底是怎么解决的,给个说法啊,是按照上面写的,编译通过不了,给楼主一样的问题

亲,8楼的朋友已经说了原因和解决方法啊。
或者你告诉我你实际的做法,然后我给你重新解答。
twj2012linux 发表于 2012-11-30 19:22:50 | 显示全部楼层
亚瑟王 发表于 2012-11-30 16:27
亲,8楼的朋友已经说了原因和解决方法啊。
或者你告诉我你实际的做法,然后我给你重新解答。

我也是按照8楼的方法,又重新写的代码,编译能通过,但是下载到板子中后,触摸屏根本没有反映啊,这又怎么解决
twj2012linux 发表于 2012-11-30 21:32:45 | 显示全部楼层
qazasdwsx 发表于 2010-11-7 03:36
正是因为改了这句话才出现了错误,用原来的 触摸不起作用了。。

我的也是这样,用原来的触摸不起作用,请问楼主是怎么更改的
twj2012linux 发表于 2012-11-30 21:59:44 | 显示全部楼层
不用修改了,因为制作好的2.6.30的文件是已经移植好adc的驱动了,然后按照后面的配置配置好(这点相当重要,不能只配置device drivers,还要配置General setup ------System Type----将ADC common driver support 不选择) ,最后一定要重新擦写板子,重新下即可,搞了两天终于搞定了,知道错误了,
亚瑟王 发表于 2012-12-3 09:38:51 | 显示全部楼层
twj2012linux 发表于 2012-11-30 21:59
不用修改了,因为制作好的2.6.30的文件是已经移植好adc的驱动了,然后按照后面的配置配置好(这点相当重要, ...

哦,是的,这个地方遗漏了CPU配置的地方要去掉系统自带的ADC。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-2 01:01 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表