当前位置:  技术问答>linux和unix

编译驱动到内核,测试出现的问题,多谢帮忙?

    来源: 互联网  发布时间:2016-06-21

    本文导语:  驱动程序编译到内核中的,然后进行测试,每次启动系统后,第一次执行测试函数读i2c设备总线,成功。 第2次读,失败,内核跑飞,信息如下: 请大家帮忙查查是为什么,在网上找了好多,都不太清楚,谢谢。 Una...

驱动程序编译到内核中的,然后进行测试,每次启动系统后,第一次执行测试函数读i2c设备总线,成功。
第2次读,失败,内核跑飞,信息如下:

请大家帮忙查查是为什么,在网上找了好多,都不太清楚,谢谢。

Unable to handle kernel NULL pointer dereference at virtual address 0000000c
pgd = c57d4000
[0000000c] *pgd=c57dc031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1]
Modules linked in: rt73 lirc_edb9307A lcd nt7534_gpio
CPU: 0
PC is at i2c_smbus_xfer+0x14/0x4cc
LR is at i2c_smbus_read_byte_data+0x4c/0x60
pc : []    lr : []    Not tainted
sp : c57d3db4  ip : c57d3e50  fp : c57d3e4c
r10: 00000000  r9 : bef10d90  r8 : c050d800
r7 : 00000036  r6 : c57d3ee3  r5 : 00000000  r4 : c57d3e5c
r3 : 00000001  r2 : 0000457f  r1 : 00000101  r0 : 00000000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: C000717F
Table: C57D4000  DAC: 00000015
Process 2-test (pid: 323, stack limit = 0xc57d2250)
Stack: (0xc57d3db4 to 0xc57d4000)
3da0:                                              c57d3dc0 c0025a18 c00268bc 
3dc0: c038d114 60000013 00000000 ffffe4ed 00000000 c57d3e88 c03661a8 c03bd547 
3de0: c050d800 c57d2000 0000001b c57d3e6c 60000093 00000000 c57d3e6c c57d3e08 
3e00: c0044544 c02ee3e8 c57d3e14 60000013 c0049980 c03ca1a4 c57d3e3c c57d3e28 
3e20: c00268f8 c57d3e5c 00000000 c57d3ee3 00000036 c050d800 bef10d90 40143f60 
3e40: c57d3e90 c57d3e50 c01ff424 c01fee0c 000000c7 00000002 c57d3e5c 40143f60 
3e60: c57d3e80 c57d3e70 c004461c c00441e0 c57d3e88 c57d3f3c c57d3e94 c0202c58 
3e80: 8004530c c57d3f3c c57d3e94 c0202c64 c01ff3e8 c57d3ea0 c002c938 c007a52c 
3ea0: 400ea000 c001a2f0 00000100 00000000 00000000 c06a2f64 000000cb 000000cb 
3ec0: 00000000 c06fb05f c06a2f50 c57d2000 00000000 c5667e9c 00000000 c57d3f40 
3ee0: 007d3eec 00000000 00000000 00000000 00000000 00000000 00000000 400ea000 
3f00: c5a11060 c57d3f54 00000000 00000000 00000000 c56707a0 bef10d90 8004530c 
3f20: 00000036 c0026044 c57d2000 40143f60 c57d3f58 c57d3f40 c00a07ac c020222c 
3f40: c56707a0 00000003 bef10d90 c57d3f84 c57d3f5c c00a082c c00a0730 bef10df4 
3f60: 0000887c c56707a0 fffffff7 8004530c 00000036 c0026044 c57d3fa4 c57d3f88 
3f80: c00a0b14 c00a07cc 00000000 4001e31c bef10df4 0000887c 00000000 c57d3fa8 
3fa0: c0025ea0 c00a0ae4 4001e31c bef10df4 00000003 8004530c bef10d90 bef10d90 
3fc0: 4001e31c bef10df4 0000887c 00000001 40147840 00008850 40143f60 bef10dac 
3fe0: 400ea160 bef10d90 00008678 400ea164 60000010 00000003 00000018 00000000 
Backtrace: 
[] (i2c_smbus_xfer+0x0/0x4cc) from [] (i2c_smbus_read_byte_data+0x4c/0x60)
[] (i2c_smbus_read_byte_data+0x0/0x60) from [] (si4731_ioctl+0xa48/0xbf0)
 r4 = 8004530C 
[] (si4731_ioctl+0x0/0xbf0) from [] (do_ioctl+0x8c/0x9c)
[] (do_ioctl+0x0/0x9c) from [] (vfs_ioctl+0x70/0x318)
 r6 = BEF10D90  r5 = 00000003  r4 = C56707A0 
[] (vfs_ioctl+0x0/0x318) from [] (sys_ioctl+0x40/0x64)
 r8 = C0026044  r7 = 00000036  r6 = 8004530C  r5 = FFFFFFF7
 r4 = C56707A0 
[] (sys_ioctl+0x0/0x64) from [] (ret_fast_syscall+0x0/0x2c)
 r6 = 0000887C  r5 = BEF10DF4  r4 = 4001E31C 
Code: e92ddff0 e24cb004 e24dd070 e1a0a000 (e590000c) 
 Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#2]
Modules linked in: rt73 lirc_edb9307A lcd nt7534_gpio
CPU: 0
PC is at i2c_put_adapter+0xc/0x18
LR is at si4731_release+0x1c/0x30
pc : []    lr : []    Not tainted
sp : c57d3b84  ip : c57d3b94  fp : c57d3b90
r10: 0000000b  r9 : c038e210  r8 : c04b41a0
r7 : c567a190  r6 : c5634078  r5 : c56707a0  r4 : c050d800
r3 : c0202028  r2 : 00000000  r1 : c56707a0  r0 : 00000000
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: C000717F
Table: C5A1C000  DAC: 00000015
Process 2-test (pid: 323, stack limit = 0xc57d2250)
Stack: (0xc57d3b84 to 0xc57d4000)
3b80:          c57d3ba8 c57d3b94 c0202044 c01ffa74 00000008 c56707a0 c57d3bd0 
3ba0: c57d3bac c0093fe8 c0202038 00000000 c56707a0 c04f7540 00000000 c04f7540 
3bc0: 0000000c c57d3be0 c57d3bd4 c00942a8 c0093f4c c57d3bfc c57d3be4 c0090cfc 
3be0: c0094284 00000001 00000000 c04f7548 c57d3c20 c57d3c00 c0045bdc c0090ca0 
3c00: c04f7540 c055c580 c57d4000 00000001 c57d2000 c57d3c48 c57d3c24 c0047060 
3c20: c0045b18 c57d4000 c055c580 c57d2000 c57d3c60 c57d3ba4 00000000 c57d3c60 
3c40: c57d3c4c c002a434 c0046f04 c57d3d6c bf000000 c57d3c80 c57d3c64 c002bf70 
3c60: c002a18c c055c580 c5a11060 c5667b00 c5a11094 c57d3cc0 c57d3c84 c002c0b0 
3c80: c002bf14 c57d3cc8 c57d3c94 c018c534 00000017 000000fe c038be04 00000017 
3ca0: c038be74 0000000c c57d3d6c 20000013 00000000 c57d3d68 c57d3cc4 c002c334 
3cc0: c002bf90 c003eac8 c003e60c c57d2000 c57d2000 c57d3d14 c57d3ce4 c003fbb0 
3ce0: c57d2000 60000013 c03c1a00 c03c1a00 00000001 c57d2000 00000000 00000005 
3d00: c03c349c c57d3d20 c57d3d14 c0093f34 c008eb2c c57d3d3c c57d3d24 c005860c 
3d20: c0093f28 00000000 c03c1a24 c03c1a00 c57d3d4c c57d3d40 c0058844 c005857c 
3d40: c57d3d68 c57d3d50 ffffffff c57d3da0 c57d3ee3 00000036 c050d800 c57d3e4c 
3d60: c57d3d6c c00259c0 c002c308 00000000 00000101 0000457f 00000001 c57d3e5c 
3d80: 00000000 c57d3ee3 00000036 c050d800 bef10d90 00000000 c57d3e4c c57d3e50 
3da0: c57d3db4 c01ff424 c01fee10 20000013 ffffffff c57d3dc0 c0025a18 c00268bc 
3dc0: c038d114 60000013 00000000 ffffe4ed 00000000 c57d3e88 c03661a8 c03bd547 
3de0: c050d800 c57d2000 0000001b c57d3e6c 60000093 00000000 c57d3e6c c57d3e08 
3e00: c0044544 c02ee3e8 c57d3e14 60000013 c0049980 c03ca1a4 c57d3e3c c57d3e28 
3e20: c00268f8 c57d3e5c 00000000 c57d3ee3 00000036 c050d800 bef10d90 40143f60 
3e40: c57d3e90 c57d3e50 c01ff424 c01fee0c 000000c7 00000002 c57d3e5c 40143f60 
3e60: c57d3e80 c57d3e70 c004461c c00441e0 c57d3e88 c57d3f3c c57d3e94 c0202c58 
3e80: 8004530c c57d3f3c c57d3e94 c0202c64 c01ff3e8 c57d3ea0 c002c938 c007a52c 
3ea0: 400ea000 c001a2f0 00000100 00000000 00000000 c06a2f64 000000cb 000000cb 
3ec0: 00000000 c06fb05f c06a2f50 c57d2000 00000000 c5667e9c 00000000 c57d3f40 
3ee0: 007d3eec 00000000 00000000 00000000 00000000 00000000 00000000 400ea000 
3f00: c5a11060 c57d3f54 00000000 00000000 00000000 c56707a0 bef10d90 8004530c 
3f20: 00000036 c0026044 c57d2000 40143f60 c57d3f58 c57d3f40 c00a07ac c020222c 
3f40: c56707a0 00000003 bef10d90 c57d3f84 c57d3f5c c00a082c c00a0730 bef10df4 
3f60: 0000887c c56707a0 fffffff7 8004530c 00000036 c0026044 c57d3fa4 c57d3f88 
3f80: c00a0b14 c00a07cc 00000000 4001e31c bef10df4 0000887c 00000000 c57d3fa8 
3fa0: c0025ea0 c00a0ae4 4001e31c bef10df4 00000003 8004530c bef10d90 bef10d90 
3fc0: 4001e31c bef10df4 0000887c 00000001 40147840 00008850 40143f60 bef10dac 
3fe0: 400ea160 bef10d90 00008678 400ea164 60000010 00000003 00000018 00000000 
Backtrace: 
[] (i2c_put_adapter+0x0/0x18) from [] (si4731_release+0x1c/0x30)
[] (si4731_release+0x0/0x30) from [] (__fput+0xac/0x1b4)
 r5 = C56707A0  r4 = 00000008 
[] (__fput+0x0/0x1b4) from [] (fput+0x34/0x38)
 r8 = 0000000C  r7 = C04F7540  r6 = 00000000  r5 = C04F7540
 r4 = C56707A0 
[] (fput+0x0/0x38) from [] (filp_close+0x6c/0x88)
[] (filp_close+0x0/0x88) from [] (put_files_struct+0xd4/0xe0)
 r6 = C04F7548  r5 = 00000000  r4 = 00000001 
[] (put_files_struct+0x0/0xe0) from [] (do_exit+0x16c/0x948)
 r8 = C57D2000  r7 = 00000001  r6 = C57D4000  r5 = C055C580
 r4 = C04F7540 
[] (do_exit+0x0/0x948) from [] (die+0x2b8/0x2fc)
[] (die+0x0/0x2fc) from [] (__do_kernel_fault+0x6c/0x7c)
[] (__do_kernel_fault+0x0/0x7c) from [] (do_page_fault+0x130/0x24c)
 r7 = C5A11094  r6 = C5667B00  r5 = C5A11060  r4 = C055C580
[] (do_page_fault+0x0/0x24c) from [] (do_DataAbort+0x3c/0xa0)
[] (do_DataAbort+0x0/0xa0) from [] (__dabt_svc+0x40/0x60)
 r8 = C050D800  r7 = 00000036  r6 = C57D3EE3  r5 = C57D3DA0
 r4 = FFFFFFFF 
[] (i2c_smbus_xfer+0x0/0x4cc) from [] (i2c_smbus_read_byte_data+0x4c/0x60)
[] (i2c_smbus_read_byte_data+0x0/0x60) from [] (si4731_ioctl+0xa48/0xbf0)
 r4 = 8004530C 
[] (si4731_ioctl+0x0/0xbf0) from [] (do_ioctl+0x8c/0x9c)
[] (do_ioctl+0x0/0x9c) from [] (vfs_ioctl+0x70/0x318)
 r6 = BEF10D90  r5 = 00000003  r4 = C56707A0 
[] (vfs_ioctl+0x0/0x318) from [] (sys_ioctl+0x40/0x64)
 r8 = C0026044  r7 = 00000036  r6 = 8004530C  r5 = FFFFFFF7
 r4 = C56707A0 
[] (sys_ioctl+0x0/0x64) from [] (ret_fast_syscall+0x0/0x2c)
 r6 = 0000887C  r5 = BEF10DF4  r4 = 4001E31C 
Code: e89da830 e1a0c00d e92dd800 e24cb004 (e5900000) 
 Fixing recursive fault but reboot is needed!

|
在i2c_smbus_xfer中出现空指针,加些打印看看什么地方出现的

|
内核空指针异常,查询这个i2c_smbus_xfer函数的参数,有指为NULL

|
Unable to handle kernel NULL pointer dereference at virtual address 0000000c 

我也遇到过此类错误。明显是指针操作错误,但是有一段驱动级的,错误一直找不出来。

|
顶一楼和二楼的,肯定是那个函数里面某个指针为NULL了,很有可能在这个函数之前就已经隐含该错误了。楼主需要多加一些打印信息,仔细检查检查。

    
 
 

您可能感兴趣的文章:

  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • GCC3.4可以编译2.4内核吗 如何查看某版本内核是用哪个版本gcc编译的
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • [求教]内核加载模块后,这部分内容编译在内核里的吗?
  • 编译新内核后怎么进入原来内核
  • 关于如何把编译进内核的编译成模块
  • 不重新编译内核能修改内核函数吗?
  • 为什么我自己编译的内核比系统自带的内核大了10倍左右?
  • Linux 编译内核之后 没办法选择内核版本
  • 内核编译出现:没有编译规则/driver/pci/devlist.h。
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  • 修改内核代码问题:如何编译修改的单个文件而不用重建整个内核?
  • 想问一下,编译LINUX内核时,是否可以只编译其中的一个模块?
  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • 编译新内核时提示内核太大无法把装入软盘,如何解决?
  • 问一个小白问题,在交叉编译时,系统内核和开发板的内核有没有相关性?
  • 我现在要重新编译内核,要怎样才能保留原来的内核
  • 【求助】基于2.6.29内核编译的驱动程序能否应用于2.6.32内核的系统?
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  • intel e1000网卡无法加载,内核是2.4.28,想重新编译内核,应该注意哪些步骤!
  • 请问重新编译LINUX内核是否能将没有用的外设的驱动程序删除并减少内核占有内存的资源?请好心人仕指教!
  • 哪位大大能提供一个g++编译器??多谢
  • 在Linux下面编译出现以下错误,请帮忙看看是什么原因,多谢了
  • 请问各位:如何编译Java的程序。多谢!
  • 求助:C++ Templates编译问题,多谢!
  • 关于消息队列编译通不过的问题,多谢。
  • 下面程序为何编译不通过?请高手帮帮忙,多谢!
  • 请问各位怎样把java文件编译成class文件,急用,多谢了!
  • 下面代码编译不能通过,提示 'class' or 'interface' expected;多谢
  • 编译一个很简单的程序出错,大家帮忙看看,多谢了。
  • Linux下无法make编译源文件[相应的库文件有],如何解决[如重新安装库文件或者其他,请写详细些,多谢。]
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 编译GCC时能不能只编译C/C++的编译器?
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??
  • linux下有没有能编译出16bit代码的C语言编译器?
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3