主题 : mini2440内核驱动问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 56135
精华: 0
发帖: 15
金钱: 80 两
威望: 16 点
综合积分: 30 分
注册时间: 2011-09-29
最后登录: 2014-01-28
楼主  发表于: 2011-09-29 20:13

 mini2440内核驱动问题

mini2440内核驱动问题
我在mini2440上做了个最简单的内核驱动,教程里的mini2440_hello_module
代码就是教程里的代码,没有变化,
在我插入内核时,蛮正常的
输入命令:modprobe mini2440_hello_module
显示:Hello, Mini2440 module is installed !
在我卸载内核时,不正常了
输入命令:rmmod mini2440_hello_module
显示:Good-bye, Mini2440 module was removed!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c3bd8000
[00000000] *pgd=33bdc031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1]
last sysfs file: /sys/devices/virtual/vc/vcsa4/dev
Modules linked in: [last unloaded: mini2440_hello_module]
CPU: 0    Not tainted  (2.6.32.2 #7)
PC is at strcmp+0x8/0x34
LR is at sysfs_find_dirent+0x18/0x38
pc : [<c018db04>]    lr : [<c00db9bc>]    psr: a0000013
sp : c3be3ef8  ip : 00000000  fp : 00000000
r10: bee46e78  r9 : c3be2000  r8 : c0033024
r7 : c3be3f44  r6 : 00000880  r5 : 00000000  r4 : c3b908a0
r3 : 00001b68  r2 : 00000000  r1 : 00000000  r0 : 00000000
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: c000717f  Table: 33bd8000  DAC: 00000015
Process rmmod (pid: 798, stack limit = 0xc3be2270)
Stack: (0xc3be3ef8 to 0xc3be4000)
3ee0:                                                       c3b90870 00000000
3f00: 00000880 c00da4bc c3b90870 00000000 00000000 00000000 00000000 c39acd80
3f20: 00000880 c0064d28 bf000090 bf000090 00000880 c00650c0 00000000 c0065400
3f40: c3bb38f0 696e696d 30343432 6c65685f 6d5f6f6c 6c75646f 40020065 c0096bf8
3f60: 00000000 c3bb3318 00000000 c3bb9480 00000000 c3bb94b4 00001000 0001f000
3f80: bf000090 00000880 c3be3f8c 00000000 000c41e8 bee46f57 00000001 000b81c8
3fa0: 00000081 c0032ea0 bee46f57 00000001 bee46f57 00000880 000b81c0 000b81c8
3fc0: bee46f57 00000001 000b81c8 00000081 00000001 00000000 bee46e78 00000000
3fe0: 00000000 bee46b00 00018250 401c886c 60000010 bee46f57 ffffffff ffffffff
[<c018db04>] (strcmp+0x8/0x34) from [<c00db9bc>] (sysfs_find_dirent+0x18/0x38)
[<c00db9bc>] (sysfs_find_dirent+0x18/0x38) from [<c00da4bc>] (sysfs_hash_and_remove+0x28/0x5c)
[<c00da4bc>] (sysfs_hash_and_remove+0x28/0x5c) from [<c0064d28>] (free_notes_attrs+0x24/0x4c)
[<c0064d28>] (free_notes_attrs+0x24/0x4c) from [<c00650c0>] (free_module+0x34/0xdc)
[<c00650c0>] (free_module+0x34/0xdc) from [<c0065400>] (sys_delete_module+0x21c/0x25c)
[<c0065400>] (sys_delete_module+0x21c/0x25c) from [<c0032ea0>] (ret_fast_syscall+0x0/0x28)
Code: 1afffff2 e8bd8030 e1a0c000 e3a02000 (e7dc0002)
---[ end trace 779a184510dcf5e1 ]---
Segmentation fault

请问大家这是为什么呢?
级别: 新手上路
UID: 52734
精华: 0
发帖: 12
金钱: 65 两
威望: 13 点
综合积分: 24 分
注册时间: 2011-07-24
最后登录: 2017-09-13
1楼  发表于: 2011-09-30 09:59
该不会是你内核编译的时候没有添加允许卸载模块的功能吧。
级别: 新手上路
UID: 56135
精华: 0
发帖: 15
金钱: 80 两
威望: 16 点
综合积分: 30 分
注册时间: 2011-09-29
最后登录: 2014-01-28
2楼  发表于: 2011-09-30 11:42

 回 1楼(xiaoyou1314) 的帖子

那这个在make menuconfig菜单中哪里有设置呢?