linux i2c-gpio 模拟i2c时序出现oops错误

来源:互联网 发布:win10仿mac主题 编辑:程序博客网 时间:2024/05/16 13:05

 用i2c-gpio模型调试模拟gpio,所用器件是cm3212。

probe里面打印调试结果成功:

while(1)

{

       ssleep(1);

       ret = i2c_smbus_write_byte(cm3212->i2c_client,CM3212_POWER_ON);
       printk(KERN_INFO "ret = %d $$$$$$$$$$$$$$\n\n",ret);
       ret = i2c_smbus_read_byte_data(cm3212->i2c_client,0x90>>1);
       printk(KERN_INFO "read light_h = %d $$$$$$$$$$$$$$\n\n",ret);
       ret = i2c_smbus_read_byte_data(cm3212->i2c_client,0x91>>1);
       printk(KERN_INFO "write light_l = %d $$$$$$$$$$$$$$\n\n",ret);

}

读写正常

 

将读写函数放到fileops的read函数里面,郁闷的事情发生了。oops信息出来,实在费解!

Unable to handle kernel paging request at virtual address 5fc48a80
pgd = de0f8000
[5fc48a80] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT
last sysfs file: /sys/devices/platform/s3c2410-i2c.2/i2c-2/2-0034/wm831x-power/power_supply/wm831x-battery/capacity
Modules linked in: dhd s3c_bc s3c_lcd pvrsrvkm
CPU: 0    Not tainted  (2.6.32.9 #223)
PC is at __gpio_get_value+0x24/0x4c
LR is at i2c_gpio_getscl+0x1c/0x20
pc : [<c0250180>]    lr : [<c025fae0>]    psr: 60000013
sp : de63bd50  ip : c0250170  fp : de63bd5c
r10: 00000003  r9 : 00000000  r8 : ea311480
r7 : 00000000  r6 : 00000090  r5 : ffff027d  r4 : ea311480
r3 : c0754100  r2 : f7f14620  r1 : 9f4f4980  r0 : f7f14620
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c5387d  Table: 3e0f8019  DAC: 00000015

PC: 0xc0250100:
0100  e92dd800 e24cb004 e92d4000 ebf8fc06 e590302c e30021ce e0813003 e1530002
0120  8a00000a e3a0200c e59fc028 e0030392 e083200c e793300c e1530000 1a000003
0140  e5923004 e3130001 15920008 189da800 e3a00000 e89da800 c0754100 e1a0c00d
0160  e92dd800 e24cb004 e92d4000 ebf8fbee e3a0100c e0010091 e59f3024 e1a02000
0180  e7910003 e5903018 e3530000 01a00003 089da800 e590102c e0611002 e12fff33
01a0  e89da800 c0754100 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8fbdb e3a0300c
01c0  e0030093 e1a02001 e59f101c e1a0c000 e7933001 e593102c e1a00003 e061100c
01e0  e1a0e00f e593f020 e89da800 c0754100 e1a0c00d e92dd800 e24cb004 e92d4000

LR: 0xc025fa60:
fa60  e89da800 e5900004 ebffc3d2 e89da800 e1a0c00d e92dd800 e24cb004 e92d4000
fa80  ebf8bda9 e3510000 0a000002 e5900000 ebffc40d e89da800 e5900000 ebffc3c5
faa0  e89da800 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd9c e5900000 ebffc1a6
fac0  e89da800 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd94 e5900004 ebffc19e
fae0  e89da800 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd8c e5900004 ebffc1a9
fb00  e89da800 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd84 e5900000 ebffc1a1
fb20  e89da800 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd7c e59f0000 e89da800
fb40  0eff000d e1a0c00d e92dd800 e24cb004 e92d4000 ebf8bd74 eb023bb8 e5d02028

SP: 0xde63bcd0:
bcd0  00000001 00000000 c0af7764 c0af7760 c00ba208 c01195ac ffffffff de63bd3c
bcf0  00000090 00000000 de63bd5c de63bd08 c008eb2c c008e2d8 f7f14620 9f4f4980
bd10  f7f14620 c0754100 ea311480 ffff027d 00000090 00000000 ea311480 00000000
bd30  00000003 de63bd5c c0250170 de63bd50 c025fae0 c0250180 60000013 ffffffff
bd50  de63bd6c de63bd60 c025fae0 c0250168 de63bd84 de63bd70 c0260af8 c025fad0
bd70  ea311480 00000006 de63bda4 de63bd88 c0260bf4 c0260a8c ea311480 00000000
bd90  ea8f9400 00000090 de63bdcc de63bda8 c02610a8 c0260bac 00000000 ea8f9400
bdb0  de63beb0 00000003 00000000 00000090 de63be14 de63bdd0 c026127c c0261080

IP: 0xc02500f0:
00f0  e89da8f0 e3a00000 e89da8f0 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8fc06
0110  e590302c e30021ce e0813003 e1530002 8a00000a e3a0200c e59fc028 e0030392
0130  e083200c e793300c e1530000 1a000003 e5923004 e3130001 15920008 189da800
0150  e3a00000 e89da800 c0754100 e1a0c00d e92dd800 e24cb004 e92d4000 ebf8fbee
0170  e3a0100c e0010091 e59f3024 e1a02000 e7910003 e5903018 e3530000 01a00003
0190  089da800 e590102c e0611002 e12fff33 e89da800 c0754100 e1a0c00d e92dd800
01b0  e24cb004 e92d4000 ebf8fbdb e3a0300c e0030093 e1a02001 e59f101c e1a0c000
01d0  e7933001 e593102c e1a00003 e061100c e1a0e00f e593f020 e89da800 c0754100

FP: 0xde63bcdc:
bcdc  c0af7760 c00ba208 c01195ac ffffffff de63bd3c 00000090 00000000 de63bd5c
bcfc  de63bd08 c008eb2c c008e2d8 f7f14620 9f4f4980 f7f14620 c0754100 ea311480
bd1c  ffff027d 00000090 00000000 ea311480 00000000 00000003 de63bd5c c0250170
bd3c  de63bd50 c025fae0 c0250180 60000013 ffffffff de63bd6c de63bd60 c025fae0
bd5c  c0250168 de63bd84 de63bd70 c0260af8 c025fad0 ea311480 00000006 de63bda4
bd7c  de63bd88 c0260bf4 c0260a8c ea311480 00000000 ea8f9400 00000090 de63bdcc
bd9c  de63bda8 c02610a8 c0260bac 00000000 ea8f9400 de63beb0 00000003 00000000
bdbc  00000090 de63be14 de63bdd0 c026127c c0261080 00000001 22222222 ea311480

R0: 0xf7f145a0:
45a0  ******** ******** ******** ******** ******** ******** ******** ********
45c0  ******** ******** ******** ******** ******** ******** ******** ********
45e0  ******** ******** ******** ******** ******** ******** ******** ********
4600  ******** ******** ******** ******** ******** ******** ******** ********
4620  ******** ******** ******** ******** ******** ******** ******** ********
4640  ******** ******** ******** ******** ******** ******** ******** ********
4660  ******** ******** ******** ******** ******** ******** ******** ********
4680  ******** ******** ******** ******** ******** ******** ******** ********

R2: 0xf7f145a0:
45a0  ******** ******** ******** ******** ******** ******** ******** ********
45c0  ******** ******** ******** ******** ******** ******** ******** ********
45e0  ******** ******** ******** ******** ******** ******** ******** ********
4600  ******** ******** ******** ******** ******** ******** ******** ********
4620  ******** ******** ******** ******** ******** ******** ******** ********
4640  ******** ******** ******** ******** ******** ******** ******** ********
4660  ******** ******** ******** ******** ******** ******** ******** ********
4680  ******** ******** ******** ******** ******** ******** ******** ********

R3: 0xc0754080:
4080  00050014 0005000c 0005001c 00050002 00050012 0005000a 0005001a 00050006
40a0  00050016 0005000e 0005001e 00050001 00050011 00050009 00050019 00050005
40c0  00050015 0005000d 0005001d 00050003 00050013 0005000b 0005001b 00050007
40e0  00050017 00000000 00000000 00000000 00000000 00000000 00000000 00000000
4100  c06b18f4 00000000 00000000 c06b18f4 00000000 00000000 c06b18f4 00000000
4120  00000000 c06b18f4 00000000 00000000 c06b18f4 00000000 00000000 c06b18f4
4140  00000000 00000000 c06b18f4 00000000 00000000 c06b18f4 00000001 c05cd5cc
4160  00000000 00000000 00000000 c06b194c 00000000 00000000 c06b194c 00000000

R4: 0xea311400:
1400  2d633269 6f697067 0000332e 00000000 00000000 00000000 00000000 00000000
1420  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1440  76697264 00007265 00000000 00000000 00000000 00000000 00000000 00000000
1460  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1480  c002c634 c025fa70 c025fa3c c025faa4 c025fac4 00000005 00000019 00000000
14a0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
14c0  2d633269 00000033 00000000 00000000 00000000 00000000 00000000 00000000
14e0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

R5: 0xffff01fd:
01fc  00000000 e24ee004 e88d4001 e14fe000 e58de008 e10f0000 e2200001 e16ff000
021c  e20ee00f e1a0000d e79fe10e e1b0f00e c008ed80 c008eaa0 c008eaa0 c008eb40
023c  c008eaa0 c008eaa0 c008eaa0 c008eaa0 c008eaa0 c008eaa0 c008eaa0 c008eaa0
025c  c008eaa0 c008eaa0 c008eaa0 c008eaa0 e320f000 e320f000 e320f000 e320f000
027c  e320f000 e24ee008 e88d4001 e14fe000 e58de008 e10f0000 e2200004 e16ff000
029c  e20ee00f e1a0000d e79fe10e e1b0f00e c008ed20 c008ea90 c008ea90 c008eae0
02bc  c008ea90 c008ea90 c008ea90 c008ea90 c008ea90 c008ea90 c008ea90 c008ea90
02dc  c008ea90 c008ea90 c008ea90 c008ea90 e320f000 e320f000 e320f000 e320f000
02fc  e320f000 e24ee004 e88d4001 e14fe000 e58de008 e10f0000 e2200004 e16ff000

R8: 0xea311400:
1400  2d633269 6f697067 0000332e 00000000 00000000 00000000 00000000 00000000
1420  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1440  76697264 00007265 00000000 00000000 00000000 00000000 00000000 00000000
1460  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1480  c002c634 c025fa70 c025fa3c c025faa4 c025fac4 00000005 00000019 00000000
14a0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
14c0  2d633269 00000033 00000000 00000000 00000000 00000000 00000000 00000000
14e0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Process lightsensor (pid: 2638, stack limit = 0xde63a2e8)
Stack: (0xde63bd50 to 0xde63c000)
bd40:                                     de63bd6c de63bd60 c025fae0 c0250168
bd60: de63bd84 de63bd70 c0260af8 c025fad0 ea311480 00000006 de63bda4 de63bd88
bd80: c0260bf4 c0260a8c ea311480 00000000 ea8f9400 00000090 de63bdcc de63bda8
bda0: c02610a8 c0260bac 00000000 ea8f9400 de63beb0 00000003 00000000 00000090
bdc0: de63be14 de63bdd0 c026127c c0261080 00000001 22222222 ea311480 00000000
bde0: ea8f9448 ea311480 de63bea8 ea8f9400 00000000 00000001 de63bea8 00000001
be00: 00000000 ffff027d de63be3c de63be18 c025cdcc c02610fc 00000000 ea8f9400
be20: c075d074 00000000 00000001 00000000 de63beec de63be40 c025d210 c025cd2c
be40: de63be84 de63be50 c014a7bc c0121d4c de63bea8 ead4ad90 00000000 de35cd80
be60: db6af600 00000000 de63bec8 ffffff9c de63a000 00000001 de63bea4 de63be88
be80: c014a9ac c014a580 00000000 db6af600 00000001 00000024 de63bf5c de63bea8
bea0: c015914c c014a960 00000048 60000001 de63be60 00010048 c00b0000 de63be84
bec0: de63bee4 da15a000 beb59b6c c075d074 00002000 c02febe0 de63a000 00000000
bee0: de63bf0c de63bef0 c025d6ec c025ce30 00000000 00000001 00000000 00000000
bf00: de63bf3c de63bf10 c02fecd0 c025d6b4 de33c980 da127000 da124000 00000080
bf20: de35cd80 beb59b6c de63bf70 00000080 de63bf6c de63bf40 c014cf4c c02febec
bf40: 00000080 beb59b6c c014d66c de35cd80 beb59b6c 00000000 00000000 00000080
bf60: de63bfa4 de63bf70 c014d0cc c014ce9c 00000000 00000000 00000005 00000000
bf80: de63a000 00008214 00000000 00000000 00000003 c008f2ac 00000000 de63bfa8
bfa0: c008f080 c014d08c 00008214 00000000 00000003 beb59b6c 00000080 beb59b6c
bfc0: 00008214 00000000 00000000 00000003 00000000 00000000 00000000 beb59bf4
bfe0: 00000000 beb59b68 00008264 0001ac1c 60000010 00000003 00000000 00000000
[<c0250180>] (__gpio_get_value+0x24/0x4c) from [<c025fae0>] (i2c_gpio_getscl+0x1c/0x20)
[<c025fae0>] (i2c_gpio_getscl+0x1c/0x20) from [<c0260af8>] (sclhi+0x78/0xa0)
[<c0260af8>] (sclhi+0x78/0xa0) from [<c0260bf4>] (i2c_outb+0x54/0x100)
[<c0260bf4>] (i2c_outb+0x54/0x100) from [<c02610a8>] (try_address+0x34/0x7c)
[<c02610a8>] (try_address+0x34/0x7c) from [<c026127c>] (bit_xfer+0x18c/0x424)
[<c026127c>] (bit_xfer+0x18c/0x424) from [<c025cdcc>] (i2c_transfer+0xac/0x104)
[<c025cdcc>] (i2c_transfer+0xac/0x104) from [<c025d210>] (i2c_smbus_xfer+0x3ec/0x534)
[<c025d210>] (i2c_smbus_xfer+0x3ec/0x534) from [<c025d6ec>] (i2c_smbus_write_byte+0x44/0x4c)
[<c025d6ec>] (i2c_smbus_write_byte+0x44/0x4c) from [<c02fecd0>] (cm3212_read+0xf0/0x1c0)
[<c02fecd0>] (cm3212_read+0xf0/0x1c0) from [<c014cf4c>] (vfs_read+0xbc/0x168)
[<c014cf4c>] (vfs_read+0xbc/0x168) from [<c014d0cc>] (sys_read+0x4c/0x78)
[<c014d0cc>] (sys_read+0x4c/0x78) from [<c008f080>] (ret_fast_syscall+0x0/0x2c)
Code: e3a0100c e0010091 e59f3024 e1a02000 (e7910003)
---[ end trace 4bc23a8c275827c6 ]---

__gpio_get_value这个函数用了非法地址???这可是内核提供的函数,难道kernel提供的i2c-gpio模型有bug???实在郁闷,找不到解决的方法呢。。。

 

原创粉丝点击