主题 : 温度传感器设备驱动问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 78082
精华: 0
发帖: 35
金钱: 180 两
威望: 36 点
综合积分: 70 分
注册时间: 2012-09-15
最后登录: 2014-04-11
楼主  发表于: 2013-05-17 01:16

 温度传感器设备驱动问题

编译正确,加载正常。用应用程序测试就报错了。
You may stop it w[  101.485450] Unable to handle kernel NULL pointer dereference at virtual address 0000003c
[  101.493484] pgd = db7d4000
[  101.496163] [0000003c] *pgd=3b7b7831, *pte=00000000, *ppte=00000000
[  101.502384] Internal error: Oops: 17 [#1] PREEMPT
[  101.507060] Modules linked in: ds18b20 libertas_sdio libertas zd1211rw rt2800usb rt2800lib rt73usb rt2x00usb rt2x00lib ath9k_htc mac80211 ath9k_common ath9k_hw ath cfg80211 compat rtl8192cu tvp5150_tiny210 ov9650 goodix_touch ft5x06_ts snd_soc_mini210_wm8960 snd_soc_wm8960
[  101.531154] CPU: 0    Not tainted  (3.0.8-FriendlyARM #1)
[  101.536533] PC is at __gpio_set_value+0x14/0x60
[  101.541036] LR is at ds18b20_ioctl+0x24/0x90 [ds18b20]
[  101.546145] pc : [<c03792f4>]    lr : [<bf1e5044>]    psr: 60000013
[  101.546149] sp : db763ef8  ip : 00005452  fp : bea86cac
[  101.557581] r10: dbb14000  r9 : db762000  r8 : c017f7e8
[  101.562781] r7 : 00000003  r6 : 00000000  r5 : 000000fd  r4 : 00000000
[  101.569280] r3 : c0956680  r2 : c092445c  r1 : 00000001  r0 : 000000fd
[  101.575781] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  101.582886] Control: 10c5387d  Table: 3b7d4019  DAC: 00000015
[  101.588604]
[  101.588606] PC: 0xc0379274:
[  101.592849] 9274  e30071cf ea000002 e2844001 e1540007 0a00000d e7953184 e1a01006 e2530000
[  101.600995] 9294  0afffff8 e12fff38 e3500000 0afffff5 e59f3030 e59f0028 e7934184 e1a0100a
[  101.609140] 92b4  eb0c2e9d e1a00004 e8bd85f8 e3a04000 e59f000c e1a0100a eb0c2e97 e1a00004
[  101.617286] 92d4  e8bd85f8 c08f6bb0 c0956680 e92d4030 e59f304c e24dd00c e7934180 e1a05000
[  101.625432] 92f4  e5d4303c e1a02001 e3130001 1a000006 e5941030 e5943024 e1a00004 e0611005
[  101.633577] 9314  e12fff33 e28dd00c e8bd8030 e59f0014 e300162c e58d2004 ebf892d3 e59d2004
[  101.641723] 9334  eafffff2 c0956680 c082ae7c e92d4038 e59f3048 e1a05000 e7934180 e5d4303c
[  101.649869] 9354  e3130001 1a000009 e5943018 e3530000 0a000004 e5941030 e1a00004 e0611005
[  101.658016]
[  101.658018] SP: 0xdb763e78:
[  101.662261] 3e78  00000000 c03a60c4 60000013 c0684d3c 00000000 c03a7624 c03a7568 60000013
[  101.670407] 3e98  ffffffff db763ee4 00000000 00000003 c017f7e8 c017f12c 000000fd 00000001
[  101.678552] 3eb8  c092445c c0956680 00000000 000000fd 00000000 00000003 c017f7e8 db762000
[  101.686698] 3ed8  dbb14000 bea86cac 00005452 db763ef8 bf1e5044 c03792f4 60000013 ffffffff
[  101.694844] 3ef8  dbc9e540 00000000 00000000 dbc9e540 00000000 bf1e5044 bf1e5020 c0222720
[  101.702989] 3f18  db763f30 00000002 00000001 dbc9e908 00000000 00000001 5194a0f7 00000000
[  101.711135] 3f38  00000000 dbc9e908 00000028 00000000 db827870 00000002 db762000 00000000
[  101.719281] 3f58  00008890 c02139fc 00000000 00000000 dbc9e540 00000000 00006b00 00000003
[  101.727428]
[  101.727430] R2: 0xc09243dc:
[  101.731673] 43dc  00000000 00000000 00000000 000003c5 00000003 00000111 c08d6684 00000001
[  101.739819] 43fc  00000001 00000000 00000000 000003c5 00000003 00000111 c08d6684 00000001
[  101.747964] 441c  00000002 00000000 00000000 000003c5 00000003 00000111 c08d6684 00000001
[  101.756110] 443c  00000003 00000000 00000000 000003c5 00000003 00000111 c08d6684 00000001
[  101.764256] 445c  c08f6c7c c08f6c7c c08f6c7c c08f6c7c c08f6c7c c08f6c7c c08f6c7c c08f6c7c
[  101.772401] 447c  00000000 c08f6cf0 c08f6cf0 c08f6cf0 c08f6cf0 00000000 c08f6d64 c08f6d64
[  101.780547] 449c  c08f6d64 c08f6d64 c08f6d64 c08f6d64 c08f6d64 c08f6d64 00000000 c08f6dd8
[  101.788693] 44bc  c08f6dd8 c08f6dd8 c08f6dd8 c08f6dd8 00000000 c08f6e4c c08f6e4c c08f6e4c
[  101.796839]
[  101.796841] R3: 0xc0956600:
[  101.801085] 6600  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  101.809230] 6620  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  101.817376] 6640  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  101.825522] 6660  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  101.833668] 6680  c08f6c7c 00000000 c08f6c7c 00000000 c08f6c7c 00000000 c08f6c7c 00000000
[  101.841814] 66a0  c08f6c7c 00000000 c08f6c7c 00000000 c08f6c7c 00000000 c08f6c7c 00000000
[  101.849959] 66c0  00000000 00000000 c08f6cf0 00000000 c08f6cf0 00000000 c08f6cf0 00000000
[  101.858105] 66e0  c08f6cf0 00000000 00000000 00000000 c08f6d64 00000000 c08f6d64 00000003
[  101.866252]
[  101.866254] R8: 0xc017f768:
[  101.870497] f768  e24fee13 3798f107 e28d1008 e3a08000 e357080f e2270000 2a000f5b ea00e2f4
[  101.878642] f788  e1a02007 e28d1008 e3a00000 eb00082e e28fe014 e1a07000 e28d1008 e3570f5e
[  101.886788] f7a8  3891000f 3798f107 eaffffef e5ad0008 e1a02007 e1a0100d e3a00001 eb000822
[  101.894934] f7c8  eaffffb4 e320f000 e320f000 e320f000 e320f000 e320f000 c08d5e0c c017fe8c
[  101.903080] f7e8  c01ac7d4 c01a1808 c017fdf0 c0213b74 c0213be4 c0212f7c c0211af8 c01b835c
[  101.911225] f808  c0212fa4 c0220e18 c0220bd4 c017fe00 c0212900 c01b835c c0220a88 c0212bd0
[  101.919371] f828  c01ca9f0 c01b835c c01b835c c02134f4 c01a99b0 c022f7c8 c01b835c c01caa60
[  101.927517] f848  c01cadb0 c01b835c c01a8418 c01b835c c01b835c c01ad8fc c01b835c c01b835c
[  101.935663]
[  101.935665] R9: 0xdb761f80:
[  101.939909] 1f80  00000000 00000000 000bc891 00000000 000bb98c 00000001 be941bf7 00000003
[  101.948054] 1fa0  c017f7e8 c017f640 000bb98c 00000001 00000000 be941bf7 00000001 00000010
[  101.956200] 1fc0  000bb98c 00000001 be941bf7 00000003 000b9764 00000000 4008f000 00000000
[  101.964346] 1fe0  00000000 be941bc8 00012ea4 4025992c 60000010 00000000 ffffffff ffffffff
[  101.972492] 2000  00000000 00000002 00000000 dbcfb0c0 c08e0adc 00000000 00000015 00000000
[  101.980637] 2020  00000000 00000000 00000000 00000000 00000000 00000000 00000000 db763fb0
[  101.988783] 2040  c017f6d0 00000000 00000000 00000000 00000000 00000000 01000000 00000000
[  101.996929] 2060  400e84c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  102.005075]
[  102.005078] R10: 0xdbb13f80:
[  102.009407] 3f80  ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
[  102.017553] 3fa0  ffffffff ffffffff ffffffff ffffffff bfffffff ffffffff ffffffff ffffffff
[  102.025699] 3fc0  ffffffff ffffffbf ffffffff ffffffff ffffffff ffffffff ffffbfff ffffffff
[  102.033845] 3fe0  6f2fffff 512f7470 69706f74 69622f61 75712f6e 6c6b6369 636e7561 00726568
[  102.041990] 4000  000021b0 00000000 00000000 c094bec0 dbc8a000 00000001 dead4ead ffffffff
[  102.050136] 4020  ffffffff 00000000 00000007 00000001 00000001 dead4ead ffffffff ffffffff
[  102.058282] 4040  dbb14040 dbb14040 00000000 00000000 dbb1402c 00000000 00000000 00000000
[  102.066428] 4060  dbb14060 dbb14060 dbb14068 dbb14068 dba19df0 dbc8a090 dbb13988 dbb13988
[  102.074576] Process temp (pid: 1226, stack limit = 0xdb7622f0)
[  102.080382] Stack: (0xdb763ef8 to 0xdb764000)
[  102.084715] 3ee0:                                                       dbc9e540 00000000
[  102.092863] 3f00: 00000000 dbc9e540 00000000 bf1e5044 bf1e5020 c0222720 db763f30 00000002
[  102.101009] 3f20: 00000001 dbc9e908 00000000 00000001 5194a0f7 00000000 00000000 dbc9e908
[  102.109155] 3f40: 00000028 00000000 db827870 00000002 db762000 00000000 00008890 c02139fc
[  102.117300] 3f60: 00000000 00000000 dbc9e540 00000000 00006b00 00000003 c017f7e8 db762000
[  102.125446] 3f80: 00000000 c0222c90 00001000 00000000 00000028 00000000 00000000 00000000
[  102.133592] 3fa0: 00000036 c017f640 00000000 00000000 00000003 00006b00 00000000 00000003
[  102.141737] 3fc0: 00000000 00000000 00000000 00000036 00000000 00000000 4002b000 bea86cac
[  102.149883] 3fe0: 00000000 bea86ca0 0000858c 402254ec 60000010 00000003 ffffffff ffffffff
[  102.158040] [<c03792f4>] (__gpio_set_value+0x14/0x60) from [<bf1e5044>] (ds18b20_ioctl+0x24/0x90 [ds18b20])
[  102.167753] [<bf1e5044>] (ds18b20_ioctl+0x24/0x90 [ds18b20]) from [<c0222720>] (do_vfs_ioctl+0x80/0x5b8)
[  102.177184] [<c0222720>] (do_vfs_ioctl+0x80/0x5b8) from [<c0222c90>] (sys_ioctl+0x38/0x60)
[  102.185417] [<c0222c90>] (sys_ioctl+0x38/0x60) from [<c017f640>] (ret_fast_syscall+0x0/0x30)
[  102.193819] Code: e59f304c e24dd00c e7934180 e1a05000 (e5d4303c)
[  102.200961] ---[ end trace 7bf43d8c136699fa ]---
ith pushing Ctrl + C.
Segmentation fault


有说是内存映射问题,可是我有映射啊
static ssize_t ds18b20_write(struct file *filp, const char __user *buff, size_t count, loff_t *offp)
{  
        volatile int i, size=count;  
        char ddat=0;    
        if (size > 2)  
            size = 1;      
        if (copy_from_user(&ddat, buff, size))  
        {    
            printk("write data error\n");    
            return -1;  
        }    
        s3c_gpio_cfgpin(DSDATA, DATAOUTP);  
        for (i=0; i<8; i++)  
        {    
            gpio_set_value(DSDATA, 0);    
            udelay(5); //5us  
            if (ddat & 0x01)    
            {      
                gpio_set_value(DSDATA, 1);    
            }    
            udelay(80);  // >70us    
            gpio_set_value(DSDATA, 1);        
            udelay(3);  // >1us    
            ddat >>= 1;//准备下一位传送
        }  
        s3c_gpio_cfgpin(DSDATA, DATAINP);  
        return size;
}

static ssize_t ds18b20_read(struct file *filp, char __user *buff, size_t count, loff_t *offp)
{  
    volatile int i, size=count;  
    char ddat;    
    if (size > 2)    
        size = 1;    
    for (i=0; i<8; i++)  
    {    
        ddat >>= 1;    
        s3c_gpio_cfgpin(DSDATA, DATAOUTP);    
        gpio_set_value(DSDATA, 0);    
        udelay(4);  //4us  
        gpio_set_value(DSDATA, 1);    
        s3c_gpio_cfgpin(DSDATA, DATAINP);    
        if ( s3c_gpio_getcfg(DSDATA) )    
        {      
            ddat |= 0x80;    
        }    
        udelay(80);  // >70us  
        s3c_gpio_cfgpin(DSDATA, DATAOUTP);    
        gpio_set_value(DSDATA, 1);    
        udelay(3);  // >1us
    }  
    s3c_gpio_cfgpin(DSDATA, DATAINP);    
    if(copy_to_user(buff, &ddat, size))  
    {    
        return -1;  
    }    
    return size;
}
级别: 骑士
UID: 11942
精华: 1
发帖: 144
金钱: 775 两
威望: 155 点
综合积分: 308 分
注册时间: 2009-12-25
最后登录: 2022-01-16
1楼  发表于: 2013-05-17 08:02
问题出在ds18b20_ioctl里,调用__gpio_set_value时,有空指针访问。