求助:关于中断中使用I2C 报错
时间:2010-09-06
来源:互联网
本帖最后由 ntqumeng 于 2010-09-06 14:56 编辑
在定时期内使用i2c读取数值的时候执行到互斥锁加锁mutex_trylock会崩溃是什么原因?
菜鸟求助~
内核版本号是Linux-2.6.32
报错信息如下
复制代码
在定时期内使用i2c读取数值的时候执行到互斥锁加锁mutex_trylock会崩溃是什么原因?
菜鸟求助~
内核版本号是Linux-2.6.32
报错信息如下
- WARNING: at kernel/mutex.c:436 mutex_trylock+0x68/0x138()
- Modules linked in: minix ipv6
- Backtrace:
- [<c002a7d0>] (dump_backtrace+0x0/0x114) from [<c02abdb0>] (dump_stack+0x18/0x1c)
- r7:00000000 r6:c02ad064 r5:c0329953 r4:000001b4
- [<c02abd98>] (dump_stack+0x0/0x1c) from [<c003c1a8>] (warn_slowpath_common+0x50)
- [<c003c158>] (warn_slowpath_common+0x0/0x68) from [<c003c1d8>] (warn_slowpath_n)
- r7:c304e830 r6:00000000 r5:00000000 r4:c304e848
- [<c003c1c0>] (warn_slowpath_null+0x0/0x1c) from [<c02ad064>] (mutex_trylock+0x6)
- [<c02acffc>] (mutex_trylock+0x0/0x138) from [<c01e2af4>] (i2c_transfer+0x6c/0xf)
- r7:c304e830 r6:00000000 r5:00000000 r4:c304e830
- [<c01e2a88>] (i2c_transfer+0x0/0xfc) from [<c01e2f64>] (i2c_smbus_xfer+0x3e0/0x)
- [<c01e2b84>] (i2c_smbus_xfer+0x0/0x524) from [<c01e33a4>] (i2c_smbus_read_byte_)
- [<c01e3368>] (i2c_smbus_read_byte_data+0x0/0x4c) from [<c01e62d0>] (pca9555_get)
- [<c01e6298>] (pca9555_getval+0x0/0x48) from [<c01730e4>] (irda_timer_handler+0x)
- r5:c039c660 r4:00000102
- [<c01730c4>] (irda_timer_handler+0x0/0x38) from [<c00467dc>] (run_timer_softirq)
- [<c0046620>] (run_timer_softirq+0x0/0x280) from [<c0041984>] (__do_softirq+0x98)
- [<c00418ec>] (__do_softirq+0x0/0x12c) from [<c0041a68>] (irq_exit+0x50/0xa8)
- [<c0041a18>] (irq_exit+0x0/0xa8) from [<c0026074>] (asm_do_IRQ+0x74/0x8c)
- [<c0026000>] (asm_do_IRQ+0x0/0x8c) from [<c0026cd4>] (__irq_usr+0x54/0xa0)
- Exception stack(0xc3579fb0 to 0xc3579ff8)
- 9fa0: 00000000 be910cb4 00000001 be910cb4
- 9fc0: 00015c94 00000000 00009e60 00000000 00000000 00000000 40025000 be910cc4
- 9fe0: 00000000 be910cb0 00009f84 00009f84 00000010 ffffffff
- r5:fec48000 r4:ffffffff
- ---[ end trace 14993aec56274977 ]---
- BUG: scheduling while atomic: irda/2074/0x00000103
- Modules linked in: minix ipv6
-
- Pid: 2074, comm: irda
- CPU: 0 Tainted: G W (2.6.32-rc2-davinci1 #215)
- PC is at 0x9f84
- LR is at 0x9f84
- pc : [<00009f84>] lr : [<00009f84>] psr: 00000010
- sp : be910cb0 ip : 00000000 fp : be910cc4
- r10: 40025000 r9 : 00000000 r8 : 00000000
- r7 : 00000000 r6 : 00009e60 r5 : 00000000 r4 : 00015c94
- r3 : be910cb4 r2 : 00000001 r1 : be910cb4 r0 : 00000000
- Flags: nzcv IRQs on FIQs on Mode USER_32 ISA ARM Segment user
- Control: 0005317f Table: 83d3c000 DAC: 00000015
- [<c0027e60>] (show_regs+0x0/0x50) from [<c0034c68>] (__schedule_bug+0x4c/0x60)
- r5:c039c660 r4:c3579fb0
- [<c0034c1c>] (__schedule_bug+0x0/0x60) from [<c02ac0ac>] (schedule+0x84/0x380)
- r5:c039c660 r4:00003c32
- [<c02ac028>] (schedule+0x0/0x380) from [<c02acba0>] (schedule_timeout+0x1e0/0x2)
- [<c02ac9c0>] (schedule_timeout+0x0/0x220) from [<c02ac83c>] (wait_for_common+0x)
- r7:00000064 r6:c304e808 r5:c3ee63c0 r4:c3579d48
- [<c02ac748>] (wait_for_common+0x0/0x1bc) from [<c02ac93c>] (wait_for_completion)
- [<c02ac928>] (wait_for_completion_interruptible_timeout+0x0/0x18) from [<c01e57)
- [<c01e5548>] (i2c_davinci_xfer+0x0/0x2fc) from [<c01e2b2c>] (i2c_transfer+0xa4/)
- [<c01e2a88>] (i2c_transfer+0x0/0xfc) from [<c01e2f64>] (i2c_smbus_xfer+0x3e0/0x)
- [<c01e2b84>] (i2c_smbus_xfer+0x0/0x524) from [<c01e33a4>] (i2c_smbus_read_byte_)
- [<c01e3368>] (i2c_smbus_read_byte_data+0x0/0x4c) from [<c01e62d0>] (pca9555_get)
- [<c01e6298>] (pca9555_getval+0x0/0x48) from [<c01730e4>] (irda_timer_handler+0x)
- r5:c039c660 r4:00000102
- [<c01730c4>] (irda_timer_handler+0x0/0x38) from [<c00467dc>] (run_timer_softirq)
- [<c0046620>] (run_timer_softirq+0x0/0x280) from [<c0041984>] (__do_softirq+0x98)
- [<c00418ec>] (__do_softirq+0x0/0x12c) from [<c0041a68>] (irq_exit+0x50/0xa8)
- [<c0041a18>] (irq_exit+0x0/0xa8) from [<c0026074>] (asm_do_IRQ+0x74/0x8c)
- [<c0026000>] (asm_do_IRQ+0x0/0x8c) from [<c0026cd4>] (__irq_usr+0x54/0xa0)
- Exception stack(0xc3579fb0 to 0xc3579ff8)
- 9fa0: 00000000 be910cb4 00000001 be910cb4
- 9fc0: 00015c94 00000000 00009e60 00000000 00000000 00000000 40025000 be910cc4
- 9fe0: 00000000 be910cb0 00009f84 00009f84 00000010 ffffffff
- r5:fec48000 r4:ffffffff
- BUG: scheduling while atomic: irda/2074/0x00000103
- Modules linked in: minix ipv6
-
- Pid: 2074, comm: irda
- CPU: 0 Tainted: G W (2.6.32-rc2-davinci1 #215)
- PC is at 0x9f84
- LR is at 0x9f84
- pc : [<00009f84>] lr : [<00009f84>] psr: 00000010
- sp : be910cb0 ip : 00000000 fp : be910cc4
- r10: 40025000 r9 : 00000000 r8 : 00000000
- r7 : 00000000 r6 : 00009e60 r5 : 00000000 r4 : 00015c94
- r3 : be910cb4 r2 : 00000001 r1 : be910cb4 r0 : 00000000
- Flags: nzcv IRQs on FIQs on Mode USER_32 ISA ARM Segment user
- Control: 0005317f Table: 83d3c000 DAC: 00000015
- [<c0027e60>] (show_regs+0x0/0x50) from [<c0034c68>] (__schedule_bug+0x4c/0x60)
- r5:c039c660 r4:c3579fb0
- [<c0034c1c>] (__schedule_bug+0x0/0x60) from [<c02ac0ac>] (schedule+0x84/0x380)
- r5:c039c660 r4:00003c47
- [<c02ac028>] (schedule+0x0/0x380) from [<c02acba0>] (schedule_timeout+0x1e0/0x2)
- [<c02ac9c0>] (schedule_timeout+0x0/0x220) from [<c02ac83c>] (wait_for_common+0x)
- r7:00000064 r6:c304e808 r5:c3ee63c0 r4:c3579d48
- [<c02ac748>] (wait_for_common+0x0/0x1bc) from [<c02ac93c>] (wait_for_completion)
- [<c02ac928>] (wait_for_completion_interruptible_timeout+0x0/0x18) from [<c01e57)
- [<c01e5548>] (i2c_davinci_xfer+0x0/0x2fc) from [<c01e2b2c>] (i2c_transfer+0xa4/)
- [<c01e2a88>] (i2c_transfer+0x0/0xfc) from [<c01e2f64>] (i2c_smbus_xfer+0x3e0/0x)
- [<c01e2b84>] (i2c_smbus_xfer+0x0/0x524) from [<c01e33a4>] (i2c_smbus_read_byte_)
- [<c01e3368>] (i2c_smbus_read_byte_data+0x0/0x4c) from [<c01e62d0>] (pca9555_get)
- [<c01e6298>] (pca9555_getval+0x0/0x48) from [<c01730e4>] (irda_timer_handler+0x)
- r5:c039c660 r4:00000102
- [<c01730c4>] (irda_timer_handler+0x0/0x38) from [<c00467dc>] (run_timer_softirq)
- [<c0046620>] (run_timer_softirq+0x0/0x280) from [<c0041984>] (__do_softirq+0x98)
- [<c00418ec>] (__do_softirq+0x0/0x12c) from [<c0041a68>] (irq_exit+0x50/0xa8)
- [<c0041a18>] (irq_exit+0x0/0xa8) from [<c0026074>] (asm_do_IRQ+0x74/0x8c)
- [<c0026000>] (asm_do_IRQ+0x0/0x8c) from [<c0026cd4>] (__irq_usr+0x54/0xa0)
- Exception stack(0xc3579fb0 to 0xc3579ff8)
- 9fa0: 00000000 be910cb4 00000001 be910cb4
- 9fc0: 00015c94 00000000 00009e60 00000000 00000000 00000000 40025000 be910cc4
- 9fe0: 00000000 be910cb0 00009f84 00009f84 00000010 ffffffff
- r5:fec48000 r4:ffffffff
作者: ntqumeng 发布时间: 2010-09-06
中断中不能使用mutex_lock,因为mutex_lock会主动schedule。
作者: ShadowStar 发布时间: 2010-09-06
回复 ShadowStar
那是不是不能在中断里用i2c?
那是不是不能在中断里用i2c?
作者: ntqumeng 发布时间: 2010-09-06
中断中不能使用一切会自行schedule的函数/处理。
我没有阅读过i2c这部分,不过mutex_lock是肯定不可以的。
我没有阅读过i2c这部分,不过mutex_lock是肯定不可以的。
作者: ShadowStar 发布时间: 2010-09-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28