登录
注册
一键加入QQ群
友善之臂官方网站
首 页
联系我们
淘宝店铺
维基教程
固件下载
资料汇总
搜索帖子!
NanoPC 系列:
NanoPC-T2
NanoPC-T3 Plus
NanoPC-T4
NanoPC-T6
NanoPC-T6 Plus
NanoPi 系列:
NanoPi-NEO
NEO Core
NEO Air
M1 Plus
Duo2
NEO3
NEO4
M4B
M5
M6
M6V2
核心板:
Smart4418
Core4418
Smart6818
Core6818
SOM-RK3399V2
CM3588
CM3588 Plus
迷你R系列:
NanoPi-R1
R1S
R2S
R2S Plus
Zero2
R3S
R76S
R4S
R5S
R5C
R6C
R6S
热门版块:
友善之臂最新动态
开发板实战手册及教程
友善之臂官方客服中心
ROM发布区
NanoPi 玩家交流区
我的论坛我的贴
默认风格
用户中心首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
积分管理
积分转换
特殊组购买
收藏夹
我的主题
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
个人首页
我的收藏
好友近况
Linux技术交流区
mini2440 linux2.6.32.2中i2c_master_send函数有bug?!
友友粉丝快线
开发板销售中心
嵌入式最新资讯
友善之臂最新动态
友善之臂官方客服中心
开发板实战手册及教程
应用方案和定制开发
NanoPi 交流与讨论
NanoPi 玩家交流区
ROM发布区
硬软DIY及开发
嵌入式交流与讨论
Android技术交流区
Linux技术交流区
U-boot技术交流区
WinCE技术交流区
Ubuntu技术交流区
裸机程序和微型OS
OpenWRT讨论区
开发板硬件讨论区
相关资料下载及使用技巧
站点服务
二手交易区
我的论坛我的贴
站务管理与公告
上一主题
下一主题
新 帖
主题 : mini2440 linux2.6.32.2中i2c_master_send函数有bug?!
复制链接
|
浏览器收藏
|
打印
delnabla
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11611
精华:
0
发帖:
50
金钱:
250 两
威望:
50 点
综合积分:
100 分
注册时间:
2009-12-14
最后登录:
2018-02-08
楼主
发表于: 2010-07-07 15:31
只看楼主
|
小
中
大
mini2440 linux2.6.32.2中i2c_master_send函数有bug?!
我在我的i2c驱动中使用i2c_master_send函数发送数据就会使得内核(2.6.32.2 for mini2440)崩溃,注释掉i2c_master_send后,就正常的,内核崩溃信息如下,各位大侠有能不能看出什么问题?
复制代码
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#1]
last sysfs file: /sys/devices/platform/s3c2440-i2c/i2c-0/0-005c/input/input0/event0/dev
Modules linked in: i2c_ts
CPU: 0 Not tainted (2.6.32.2-FriendlyARM #9)
PC is at s3c24xx_i2c_irq+0x32c/0x3dc
LR is at handle_IRQ_event+0x60/0x130
pc : [<c0251fdc>] lr : [<c0071500>] psr: 80000093
sp : c04c3eb8 ip : 00000000 fp : c04c3edc
r10: 3001fb24 r9 : 41129200 r8 : 00000004
r7 : ffffffea r6 : 00000000 r5 : c382df24 r4 : c3841c00
r3 : 00000001 r2 : 00000000 r1 : c382df30 r0 : c480c000
Flags: Nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: c000717f Table: 339dc000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc04c2270)
Stack: (0xc04c3eb8 to 0xc04c4000)
3ea0: c3830d40 00000000
3ec0: 00000000 0000002b 3001fb58 41129200 c04c3efc c04c3ee0 c0071500 c0251cc0
3ee0: c04cbeec c3830d40 0000002b c0526fec c04c3f1c c04c3f00 c0073000 c00714b0
3f00: 0000002b c04d832c 00000000 c04c6448 c04c3f3c c04c3f20 c0030044 c0072f68
3f20: ffffffff f4000000 08000000 c04c6448 c04c3f94 c04c3f40 c0030b04 c0030010
3f40: f4100000 00000032 f4100000 60000013 c04c2000 c05038a4 c04c6450 c04c6448
3f60: 3001fb58 41129200 3001fb24 c04c3f94 c04c3f98 c04c3f88 c003264c c0032064
3f80: 60000013 ffffffff c04c3fb4 c04c3f98 c003264c c0031fe4 c052706c c0503640
3fa0: c0021000 c04c6448 c04c3fc4 c04c3fb8 c0392ebc c00325e4 c04c3ff4 c04c3fc8
3fc0: c00089a8 c0392e70 c00084f4 00000000 00000000 c0021ca0 00000000 c0007175
3fe0: c0503950 c0021c9c 00000000 c04c3ff8 30008034 c00087ac 00000000 00000000
Backtrace:
[<c0251cb0>] (s3c24xx_i2c_irq+0x0/0x3dc) from [<c0071500>] (handle_IRQ_event+0x60/0x130)
r9:41129200 r8:3001fb58 r7:0000002b r6:00000000 r5:00000000
r4:c3830d40
[<c00714a0>] (handle_IRQ_event+0x0/0x130) from [<c0073000>] (handle_edge_irq+0xa8/0x16c)
r7:c0526fec r6:0000002b r5:c3830d40 r4:c04cbeec
[<c0072f58>] (handle_edge_irq+0x0/0x16c) from [<c0030044>] (asm_do_IRQ+0x44/0x8c)
r7:c04c6448 r6:00000000 r5:c04d832c r4:0000002b
[<c0030000>] (asm_do_IRQ+0x0/0x8c) from [<c0030b04>] (__irq_svc+0x24/0xa0)
Exception stack(0xc04c3f40 to 0xc04c3f88)
3f40: f4100000 00000032 f4100000 60000013 c04c2000 c05038a4 c04c6450 c04c6448
3f60: 3001fb58 41129200 3001fb24 c04c3f94 c04c3f98 c04c3f88 c003264c c0032064
3f80: 60000013 ffffffff
r7:c04c6448 r6:08000000 r5:f4000000 r4:ffffffff
[<c0031fd4>] (default_idle+0x0/0x9c) from [<c003264c>] (cpu_idle+0x78/0xb0)
[<c00325d4>] (cpu_idle+0x0/0xb0) from [<c0392ebc>] (rest_init+0x5c/0x70)
r7:c04c6448 r6:c0021000 r5:c0503640 r4:c052706c
[<c0392e60>] (rest_init+0x0/0x70) from [<c00089a8>] (start_kernel+0x20c/0x27c)
[<c000879c>] (start_kernel+0x0/0x27c) from [<30008034>] (0x30008034)
Code: e5843010 eaffffd3 e5952008 e594002c (e7d2100c)
---[ end trace 4ede664953bd4d0e ]---
Kernel panic - not syncing: Fatal exception in interrupt
Backtrace:
[<c0035270>] (dump_backtrace+0x0/0x10c) from [<c0395674>] (dump_stack+0x18/0x1c)
r7:c0251fdc r6:c0503eb0 r5:c04c3ccf r4:c0251fdc
[<c039565c>] (dump_stack+0x0/0x1c) from [<c03956c4>] (panic+0x4c/0x134)
[<c0395678>] (panic+0x0/0x134) from [<c0035580>] (die+0x204/0x240)
r3:00010000 r2:c04c9638 r1:0000584d r0:c0454150
[<c003537c>] (die+0x0/0x240) from [<c0037934>] (__do_kernel_fault+0x6c/0x7c)
[<c00378c8>] (__do_kernel_fault+0x0/0x7c) from [<c0037a8c>] (do_page_fault+0x148/0x200)
r7:c04c57c0 r6:00000000 r5:00000000 r4:c04c6618
[<c0037944>] (do_page_fault+0x0/0x200) from [<c003028c>] (do_DataAbort+0x40/0xa4)
[<c003024c>] (do_DataAbort+0x0/0xa4) from [<c0030ac0>] (__dabt_svc+0x40/0x60)
Exception stack(0xc04c3e70 to 0xc04c3eb8)
3e60: c480c000 c382df30 00000000 00000001
3e80: c3841c00 c382df24 00000000 ffffffea 00000004 41129200 3001fb24 c04c3edc
3ea0: 00000000 c04c3eb8 c0071500 c0251fdc 80000093 ffffffff
[<c0251cb0>] (s3c24xx_i2c_irq+0x0/0x3dc) from [<c0071500>] (handle_IRQ_event+0x60/0x130)
r9:41129200 r8:3001fb58 r7:0000002b r6:00000000 r5:00000000
r4:c3830d40
[<c00714a0>] (handle_IRQ_event+0x0/0x130) from [<c0073000>] (handle_edge_irq+0xa8/0x16c)
r7:c0526fec r6:0000002b r5:c3830d40 r4:c04cbeec
[<c0072f58>] (handle_edge_irq+0x0/0x16c) from [<c0030044>] (asm_do_IRQ+0x44/0x8c)
r7:c04c6448 r6:00000000 r5:c04d832c r4:0000002b
[<c0030000>] (asm_do_IRQ+0x0/0x8c) from [<c0030b04>] (__irq_svc+0x24/0xa0)
Exception stack(0xc04c3f40 to 0xc04c3f88)
3f40: f4100000 00000032 f4100000 60000013 c04c2000 c05038a4 c04c6450 c04c6448
3f60: 3001fb58 41129200 3001fb24 c04c3f94 c04c3f98 c04c3f88 c003264c c0032064
3f80: 60000013 ffffffff
r7:c04c6448 r6:08000000 r5:f4000000 r4:ffffffff
[<c0031fd4>] (default_idle+0x0/0x9c) from [<c003264c>] (cpu_idle+0x78/0xb0)
[<c00325d4>] (cpu_idle+0x0/0xb0) from [<c0392ebc>] (rest_init+0x5c/0x70)
r7:c04c6448 r6:c0021000 r5:c0503640 r4:c052706c
[<c0392e60>] (rest_init+0x0/0x70) from [<c00089a8>] (
顶端
回复
引用
分享
贾诩
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
23457
精华:
0
发帖:
24
金钱:
130 两
威望:
26 点
综合积分:
48 分
注册时间:
2010-06-20
最后登录:
2017-09-13
1楼
发表于: 2010-07-07 16:32
只看该作者
|
小
中
大
有一个指针是空的,所以报错。
把你调用i2c_master_send函数的那一段代码贴出来,让我看看。
顶端
回复
引用
分享
delnabla
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11611
精华:
0
发帖:
50
金钱:
250 两
威望:
50 点
综合积分:
100 分
注册时间:
2009-12-14
最后登录:
2018-02-08
2楼
发表于: 2010-07-07 16:43
只看该作者
|
小
中
大
复制代码
struct i2c_ts_data{
struct i2c_client *client;
struct input_dev *input;
struct delayed_work work;
int irq;
};
复制代码
struct work_struct *work;
struct i2c_ts_data *tsdata = container_of(work,
struct i2c_ts_data,
work.work);
……
if (i2c_master_send(tsdata->client, 0, 1) != 1) {
dev_err(&tsdata->client->dev, "Unable to write i2c index!\n");
goto out;
}
……
out:
enable_irq(tsdata->irq);
这个代码是在一个中断里调用的。
[ 此帖被delnabla在2010-07-07 16:52重新编辑 ]
顶端
回复
引用
分享
delnabla
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11611
精华:
0
发帖:
50
金钱:
250 两
威望:
50 点
综合积分:
100 分
注册时间:
2009-12-14
最后登录:
2018-02-08
3楼
发表于: 2010-07-07 17:09
只看该作者
|
小
中
大
是不是下面的container_of没有成功?
复制代码
struct i2c_ts_data *tsdata = container_of(work,
struct i2c_ts_data,
work.work);
顶端
回复
引用
分享
kasim
*無鈳取玳
级别: 论坛版主
作者资料
发送短消息
加为好友
QQ联系
UID:
27
精华:
12
发帖:
5398
金钱:
40120 两
威望:
17929 点
综合积分:
11036 分
注册时间:
2008-01-16
最后登录:
2014-11-22
4楼
发表于: 2010-07-07 17:23
只看该作者
|
小
中
大
这个很明显,s3c24xx_i2c_irq()里访问了空指针,有什么i2c的东西(应该是MINI2440相关的)没有配置?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
顶端
回复
引用
分享
delnabla
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11611
精华:
0
发帖:
50
金钱:
250 两
威望:
50 点
综合积分:
100 分
注册时间:
2009-12-14
最后登录:
2018-02-08
5楼
发表于: 2010-07-08 14:44
只看该作者
|
小
中
大
使用了mini2440开发板上cemera上的I2c接口和IRQ_EINIT20 ,直接使用的
顶端
回复
引用
分享
delnabla
级别: 侠客
作者资料
发送短消息
加为好友
UID:
11611
精华:
0
发帖:
50
金钱:
250 两
威望:
50 点
综合积分:
100 分
注册时间:
2009-12-14
最后登录:
2018-02-08
6楼
发表于: 2010-07-14 10:09
只看该作者
|
小
中
大
已经可以了,是tsdata的问题,有一个地方赋值的时候错误,没有声明为pointer!
顶端
回复
引用
分享
上一主题
下一主题
Linux技术交流区
http://121.40.142.80
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问