主题 : 一起来做mini2440的Android的根文件系统 复制链接 | 浏览器收藏 | 打印
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
贡献值: 40 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
20楼  发表于: 2009-09-14 18:33
恩,非常谢谢kasim大侠的帮助,我试试看
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
21楼  发表于: 2009-09-18 15:19
我的按上面说的做了,现在的情况是:
D/KeyguardViewMediator(  836): wakeWhenReadyLocked(4)
D/KeyguardViewMediator(  836): handleWakeWhenReady(4)
D/KeyguardViewMediator(  836): pokeWakelock(5000)
D/KeyguardViewMediator(  836): wakeWhenReadyLocked(4)
D/KeyguardViewMediator(  836): handleWakeWhenReady(4)
D/KeyguardViewMediator(  836): pokeWakelock(5000)
D/KeyguardViewMediator(  836): wakeWhenReadyLocked(2)
D/KeyguardViewMediator(  836): handleWakeWhenReady(2)
D/KeyguardViewMediator(  836): pokeWakelock(5000)
D/KeyguardViewMediator(  836): wakeWhenReadyLocked(23)
D/KeyguardViewMediator(  836): handleWakeWhenReady(23)
D/KeyguardViewMediator(  836): pokeWakelock(5000)
D/KeyguardViewMediator(  836): wakeWhenReadyLocked(23)
D/KeyguardViewMediator(  836): handleWakeWhenReady(23)
D/KeyguardViewMediator(  836): pokeWakelock(5000)
W/PackageManager(  836): Couldn't clear application caches
W/PackageManager(  836): Couldn't clear application caches
W/PackageManager(  836): Couldn't clear application caches
W/PackageManager(  836): Couldn't clear application caches
I/DeviceStorageMonitorService(  836): Running low on memory. Sending notification

麻烦各们大侠给我看看是怎么回事呢?
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
22楼  发表于: 2009-09-18 15:49
通过配置内核:
Power management options选项  
[*] Power Management support
[*]   Power Management Debug Support
[*]     Verbose Power Management debugging
[*] Suspend to RAM and standby
[*]   Test suspend/resume and wakealarm during bootup
[*] Wake lock
[*]   Wake lock stats
[*]   Userspace wake locks
[*]   Early suspend
User-space screen access (Console switch on early-suspend)  --->
<*> Advanced Power Management Emulation

现在终于,可以解锁了,新的情况:
触摸完全不准;

还请高手们,指点一下方向,谢谢。
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
23楼  发表于: 2009-09-18 15:54
顺便说一下,我使用的kernel是版主发布的"android-kernel-20090825.tgz"。

还有一个问题,进入屏保(屏黑掉)后,就没有反应了。
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
贡献值: 40 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
24楼  发表于: 2009-09-18 16:20
你在家了power class驱动吗。触摸屏校准在本帖的前面有说明
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
25楼  发表于: 2009-09-18 16:28

 回 24楼(jeefjiang) 的帖子

我没有加power class驱动。

谢谢。
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
26楼  发表于: 2009-09-18 16:34

 回 25楼(loeb) 的帖子

另外,问一下,那个触摸的链接失效了,我这里打不开,能不能说一下,你是怎么解决这个问题的?
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
27楼  发表于: 2009-09-18 18:10
触摸校准的问题,由于链接失效,我乱找,找到一个,也是链接失效,我是打开快照。才看到的。现将原文贴出:

http://lyrical.21ic.org/user1/2537/archives/2009/61231.html

1.简述
android 的坐标转换处理:
This implementation is a linear transformation using 7 parameters
(a, b, c, d, e, f and s) to transform the device coordinates (Xd, Yd)
into screen coordinates (Xs, Ys) using the following equations:

s*Xs = a*Xd + b*Yd + c
s*Ys = d*Xd + e*Yd + f

Xs,Ys:LCD坐标
Xd,Yd:触摸屏坐标

在编译好了的ANDROID根文件系统的system/etc/pointercal这个文件内,存放着7个数,
这7个数就是对应上面公式的a,b,c,d,e,f,s
比如我原来的:(如果表格没对齐,请拷到记事本里面看)
+----+-----+--------+------+--+--------+----+
| a  |  b  |  c     | d    |e |   f    | s  |
+----+-----+--------+------+--+--------+----+
|-411|37818|-3636780|-51325|39|47065584|6553|
+----+-----+--------+------+--+--------+----+

2.处理说明:
“system/etc/pointercal”这个文件是被java程序读取使用的,文件目录:
f rameworks/base/services/java/com/android/server/InputDevice.java
---注:我用的是koolu的源码(http://git.koolu.org/),官方的源码请自行搜索。
该文件的第32行定义了:static final String CALIBRATION_FILE = "/system/etc/pointercal";
这个CALIBRATION_FILE变量在第237行被使用于打开该文件:
FileInputStream is = new FileInputStream(CALIBRATION_FILE);
后面的代码就是从这个文件里读取那7个数据,用于上层函数的坐标转换。
所以只要根据该公式通过手工计算出那7个值,就可以准确的进行触摸操作了。

3.计算
计算前需要取得4个触摸屏的坐标,我们取LCD 4个对角的坐标,因为只有这4个坐标知道确切的LCD坐标。
要取坐标必须打开内核中触摸屏的调试代码,启动后在console上使用dmesg命令来跟踪取得。
我是在一个角上用笔点一下,再用dmesg调出记录,然后记录下来。如下是我的320x240屏记录的结果:
坐标轴里小括号()里面的是调试信息给的触摸屏坐标,中括号[]里的是对应的LCD坐标。

x坐标
/|\
|(X:870, Y:140)   (X:870, Y:890)
|  [320,0]          [320,240]
|
|
|
+-------------------------------> y坐标
(X:120, Y:140)    (X:120, Y:890)
     [0,0]             [0,240]

*LCD 分辨率:320 x 240 ,也是LCD坐标的最大值
             x     y

设定s=65536
将那4个坐标代入那个公式,可以得出8个方程组

        0 = a*120 + b*140 + c
        0 = d*120 + e*140 + f
        0 = a*120 + b*890 + c
65536*240 = d*120 + e*890 + f
65536*320 = a*870 + b*140 + c
        0 = d*870 + e*140 + f
65536*320 = a*870 + b*890 + c
65536*240 = d*870 + e*890 + f
解方程组后就可得:
a = 0
b = 20971
c = -2935940
d = 27962
e = 0
f = -3355440
s = 65535
然后用工具打开andriod的“system/etc/pointercal”文件,把这几个数输进去,用空格分开,
注意不要改文件结尾的两个字节0x00 0x0A,我是用Ghex工具打开的,在右边窗口中进行输入,在编辑里可以切换插入和覆盖模式。
此时启动试试。

////////////////////////////
我的屏到这个步骤后触摸操作的左右变成了上下,上下变成了左右操作,
处理方法:把a,b,c值和d,e,f值分别对调。
再启动试试。。
还是不行,左右是正确的,上下是反的。
处理方法:
把Y坐标再反向的公式:
Ys‘ = 320 - Ys = 320 - (a*Xd + b*Yd + c)/s
重新计算a,b,c的值,就OK了。

现在我点击计算器的按钮等操作都很准了,指哪打哪。

前面发的那个视频里的坐标是在内核里调的坐标,不是很准。

这是手工调的方法,如果要用程序校准的话可以用tslib,有时间再玩下。

注:我用的开发板是mini2440,LCD屏是320x240

根据以上内容,我就想法是,从shine出的那个fs里面找一个pointercal,替换掉现在的。

目前触摸基本可用。
级别: 新手上路
UID: 7527
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2009-07-18
最后登录: 2009-10-27
28楼  发表于: 2009-09-18 18:27
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
贡献值: 40 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
29楼  发表于: 2009-09-18 21:08
我现在也用版主的内核,出现如下错误:
request_suspend_state: wakeup (3->0) at 98302242000 (2000-03-31 03:40:53.560954000 UTC)
进不了UI了,你的内核除了配置Power management options选项  
[*] Power Management support
[*]   Power Management Debug Support
[*]     Verbose Power Management debugging
[*] Suspend to RAM and standby
[*]   Test suspend/resume and wakealarm during bootup
[*] Wake lock
[*]   Wake lock stats
[*]   Userspace wake locks
[*]   Early suspend
User-space screen access (Console switch on early-suspend)  --->
<*> Advanced Power Management Emulation
还做其他更改吗?
或者是对android的代码做了更改