由于本人刚学驱动新手,不会太多反向操作。看了很多博主也没有解决。

经过我一个下午尝试,把代码缩减缩减在缩减之后,我发现了

先看下面的代码,有问题的代码(扫一眼就行了,估计没人看的出来

#include <linux/init.h>
#include <linux/module.h>
#include <linux/gpio.h>
#include <linux/miscdevice.h>
#include <linux/fs.h>
#include <linux/errno.h>int misc_open(struct inode *inode, struct file *file)
{printk(KERN_INFO "打开\n");return 1;
}int misc_release(struct inode *inode, struct file *file)
{printk(KERN_INFO "关闭\n");return 1;
}static struct file_operations misc_operations = {.owner = THIS_MODULE,.open = misc_open,.release = misc_release};// 混杂设备结构体
static struct miscdevice misc_misc ={.minor = MISC_DYNAMIC_MINOR,.name = "my_misc",.fops = &misc_operations};static int __init mymisc_init(void)
{int rt;printk(KERN_INFO "混杂设备初始化\n");// 注册混杂设备// 混杂设备注册后都会在/sys/class/misc/下面看到,主设备号为10,此设备号可以// 自己分配。也可系统自动分配。misc_register原型其实就高度封装了字符设备注册rt = misc_register(&misc_misc);if (rt < 0){printk(KERN_ERR "注册混杂设备失败\n");goto err_misc_register;}return 0;err_misc_register:return rt;
}static void __exit mymisc_exit(void)
{// 注销混杂设备misc_deregister(&misc_misc);printk(KERN_INFO "注销混杂设备成功\n");
}module_init(mymisc_init);module_exit(mymisc_exit);MODULE_LICENSE("GPL");

应用层

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char const *argv[])
{int fd_led = open("/dev/my_misc", O_RDWR);if (fd_led < 0){printf("/dev/my_misc 打开失败\n");return -1;}printf("/dev/my_misc 打开成功!!!!!!!!!!!!!!!!!!!\n");close(fd_led);return 0;
}

这段代码就是混杂设备注册代码,没有啥的但是当我下载到开发板之后运行就会报错

[root@GEC6818 /Drive/Misc]#./misc_open
[  763.422000] 打开    //这个是驱动层调试用的,由驱动层打印
[  763.422000] Unable to handle kernel NULL pointer dereference at virtual address 0000000d
[  763.427000] pgd = c9690000
[  763.429000] [0000000d] *pgd=49ab4831, *pte=00000000, *ppte=00000000
[  763.435000] Internal error: Oops: 17 [#9] PREEMPT SMP ARM
[  763.441000] Modules linked in: misc_drv(O) rtl8723bu_wifi(O) x6818_humidity(O) stepmotor(O) relay(O) led(O) gec6818_beep(O) gas_drv(O) dc_motor(O) buttons_drv(O) [last unloaded: misc_drv]
[  763.457000] CPU: 1    Tainted: G      D    O  (3.4.39-gec #21)
[  763.463000] PC is at do_sys_open+0xf8/0x174
[  763.467000] LR is at path_openat+0xf4/0x3dc
[  763.472000] pc : [<c0123428>]    lr : [<c0131f00>]    psr: 000b0013
[  763.472000] sp : c96dff70  ip : ffffffff  fp : bea05b1c
[  763.483000] r10: 00000000  r9 : c96de000  r8 : ffffff9c
[  763.488000] r7 : 00000001  r6 : 00000003  r5 : c9a6d000  r4 : 00000001
[  763.495000] r3 : 00000000  r2 : c96dfe50  r1 : 200b0013  r0 : 00000001
[  763.501000] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  763.508000] Control: 10c5383d  Table: 4969006a  DAC: 00000015
[  763.514000]
[  763.514000] PC: 0xc01233a8:
[  763.518000] 33a8  e58d3010 e58d2014 0a000004 e31c0080 e3823c02 13822c06 e58d3014 158d2014
[  763.526000] 33c8  e31c0901 e1a00001 13a07002 03a07000 e31c0902 03877001 eb002889 e3700a01
[  763.535000] 33e8  e1a05000 81a06000 8a000024 e1a01004 e3a00000 eb00692f e2506000 ba00001d
[  763.543000] 3408  e1a00008 e1a03007 e1a01005 e28d2008 eb003b9c e3700a01 e1a04000 8a00001a
[  763.551000] 3428  e590100c e2807008 e1a00007 e5918020 e1d890b0 e2099a0f e3590901 03a09181
[  763.559000] 3448  13a09020 e1a02009 eb00e5dc e3a0c000 e1a01009 e1a00008 e1a02007 e58dc000
[  763.567000] 3468  e3a03001 e58dc004 eb00e4ea e1a00006 e1a01004 ebfffc6d e1a00005 eb002863
[  763.575000] 3488  e1a00006 e28dd01c e8bd83f0 e1a00006 e1a06004 ebfffc1b eafffff6 e1a0c001
[  763.583000]
[  763.583000] LR: 0xc0131e80:
[  763.588000] 1e80  e2503000 1a000028 e1a0000d e1a01004 e3c09d7f e1a00006 e3c9903f e599200c
[  763.596000] 1ea0  e5823308 ebfff682 e2503000 1a00001e e28d8020 e1a00004 e1a01008 e1a02005
[  763.604000] 1ec0  e1a03006 ebfffbdc e2507000 0a000018 e5943014 e3530000 0a000002 e5943020
[  763.612000] 1ee0  e3130a02 0a000008 e59d001c e3500000 0a000000 ebffce7c e1a00004 ebffffb8
[  763.620000] 1f00  e1a00007 e28dd034 e8bd8ff0 e5940018 eb0019e4 e5940014 eb00353d eafffff1
[  763.628000] 1f20  e3e00016 e28dd034 e8bd8ff0 e1a07003 eaffffe6 e5943020 e28d2028 e8980003
[  763.637000] 1f40  e58d2014 e3130001 e8820003 0a00003c e3c32c07 e3130040 e59d702c e3823010
[  763.645000] 1f60  e5843020 1a00009e e59d0028 e5943000 e1500003 0a000098 e599300c e5933308
[  763.653000]
[  763.653000] SP: 0xc96dfef0:
[  763.657000] fef0  00000041 c0a68d38 c98ab550 e2e02e10 ce270431 00000007 c9a6d005 00000000
[  763.665000] ff10  c0123428 000b0013 ffffffff c96dff5c ffffff9c c000e7d8 00000001 200b0013
[  763.673000] ff30  c96dfe50 00000000 00000001 c9a6d000 00000003 00000001 ffffff9c c96de000
[  763.682000] ff50  00000000 bea05b1c ffffffff c96dff70 c0131f00 c0123428 000b0013 ffffffff
[  763.690000] ff70  08100871 c06fbad8 00000002 e3130000 00000026 00000100 b6fbe000 00000000
[  763.698000] ff90  00000000 00010324 00000005 c000edc4 c96de000 c000ec40 00000000 00000000
[  763.706000] ffb0  00010558 00000002 bea05c7c 0001044c 00000000 00000000 00010324 00000005
[  763.714000] ffd0  00000000 00000000 b6fef000 bea05b1c 00000000 bea05b04 00010474 b6f3c870
[  763.722000]
[  763.722000] R2: 0xc96dfdd0:
[  763.727000] fdd0  00000017 c9963800 c96dff28 c9963800 0000000d c06f28d0 c99f3c00 c001924c
[  763.735000] fdf0  00000001 00000001 c96dfe0c c0072d10 00000000 00000000 c9963848 00000000
[  763.743000] fe10  00010000 00000000 c96dfef8 c95ae540 00000001 e2e02e5c c0a60520 c98ab540
[  763.751000] fe30  00000001 00000001 c96dfe4c c0072d10 c96dfef8 c993d478 bea05b1c c013e2b4
[  763.759000] fe50  c0a4c34c c0131160 e2c23000 e316c030 c96dfef8 00000017 c0018f78 c0a68b38
[  763.767000] fe70  0000000d c96dff28 c96de000 00000000 bea05b1c c0008424 c96de000 00000000
[  763.776000] fe90  bea05b1c c0131ec8 c96dfeb4 00000000 e2e447a0 00000000 b6fef000 c9963804
[  763.784000] feb0  b6fee000 00000000 c98ab550 e2e02e10 e3137738 c0af18d0 b6fef000 c96dff78
[  763.792000]
[  763.792000] R5: 0xc9a6cf80:
[  763.796000] cf80  e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0
[  763.804000] cfa0  e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0
[  763.813000] cfc0  e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0
[  763.821000] cfe0  e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0 e7fddef0
[  763.829000] d000  7665642f 5f796d2f 6373696d 6f003600 0000362e 00362e6f 00362e6f 00362e6f
[  763.837000] d020  62696c00 6f732e63 6f00362e 0000362e 00362e6f 00362e6f 00362e6f 00000000
[  763.845000] d040  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  763.853000] d060  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  763.861000]
[  763.861000] R9: 0xc96ddf80:
[  763.866000] df80  00000000 c00491f0 00000000 00000001 00000000 b6ebf798 000000f8 c0049274
[  763.874000] dfa0  00000000 c000ec40 00000001 00000000 00000000 b6ec20ac 00000000 00000000
[  763.882000] dfc0  00000001 00000000 b6ebf798 000000f8 b6ec20ac 00000000 b6fad000 00000000
[  763.890000] dfe0  00000000 bee4dcc4 b6daebd8 b6e1e734 600b0010 00000000 00000000 00000000
[  763.898000] e000  00000000 00000002 00000000 c99f3c00 c0a72c6c 00000001 00000015 c9a06f40
[  763.907000] e020  00000000 c99f3c00 e30ba300 c1504980 c0a60520 c96de028 c96dfed4 c96dfe28
[  763.915000] e040  c06faa10 00000000 00000000 00000000 00000000 00000000 01000000 00000000
[  763.923000] e060  b6fec4c0 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  763.931000] Process misc_open (pid: 365, stack limit = 0xc96de2f0)
[  763.937000] Stack: (0xc96dff70 to 0xc96e0000)
[  763.942000] ff60:                                     08100871 c06fbad8 00000002 e3130000
[  763.950000] ff80: 00000026 00000100 b6fbe000 00000000 00000000 00010324 00000005 c000edc4
[  763.958000] ffa0: c96de000 c000ec40 00000000 00000000 00010558 00000002 bea05c7c 0001044c
[  763.966000] ffc0: 00000000 00000000 00010324 00000005 00000000 00000000 b6fef000 bea05b1c
[  763.974000] ffe0: 00000000 bea05b04 00010474 b6f3c870 600b0010 00010558 635f5821 635f5c21
[  763.982000] [<c0123428>] (do_sys_open+0xf8/0x174) from [<c000ec40>] (ret_fast_syscall+0x0/0x30)
[  763.991000] Code: eb003b9c e3700a01 e1a04000 8a00001a (e590100c)
[  763.997000] ---[ end trace 4883a96b125639a6 ]---
Segmentation fault

最终发现是驱动层 open 函数返回值为 1 的问题

修改后

int misc_open(struct inode *inode, struct file *file)
{printk(KERN_INFO "打开\n");return 0;
}

[root@GEC6818 /Drive/Misc]# ./misc_open 
[  900.025000] 打开
[  900.025000] 关闭
/dev/my_misc 打开成功!!!!!!!!!!!!!!!!!!!

真的无语,有谁知道原因啊。我也不懂。。。

Unable to handle kernel NULL pointer dereference at virtual address 0000000d[ 435.859000] pgd = c9相关推荐

  1. Unable to handle kernel NULL pointer dereference at virtual address 分析

    Unable to handle kernel NULL pointer dereference at virtual address 分析 现象 [ 136.847780] br-lan: rece ...

  2. Unable to handle kernel NULL pointer dereference at virtual address

    1:从sd卡出错log里可以看出来pc指针以及出错位置 PC is at dw_mci_pre_dma_transfer.isra.19+0x7c/0x158 pc : [<8032e130&g ...

  3. Unable to handle kernel NULL pointer dereference at virtual address 00000000问题的解决

    Unable to handle kernel NULL pointer dereference at virtual address 00000000问题的解决 参考文章: (1)Unable to ...

  4. Nvidia AGX Xavier 升级到 JetPack 4.6版本 反复打开camera导致内核出错 Unable to handle kernel NULL pointer

    这里写自定义目录标题 现象 日志显示 分析过程 解决思路 代码修改 现象 在原来 JetPack4.4 运行稳定的camera驱动,由于算法功能需要,升级到最新的JetPack4.6. 刚开始自测,功 ...

  5. Unable to handle kernel paging request at virtual address 的解决办法

    原文地址为: Unable to handle kernel paging request at virtual address 的解决办法 今天想正式开始编写各底层硬件的驱动程序,首先是双口RAM的 ...

  6. 新手玩转Linux Kernel漏洞之Null Pointer Dereference

    新手玩转Linux Kernel漏洞之Null Pointer Dereference 前言 这是我内核漏洞的入门篇, 不是很复杂, 希望能给徘徊在门外的小伙伴一点启发. 漏洞描述 A NULL po ...

  7. 【RK3399 Android系统】,启动时出现”Unable to handle kernel paging request at virtual address 490000004c“的解决思路

    从Firefly官网下载的安卓系统源码,编译后,修改了部分驱动,启动的时候偶尔会出现"Unable to handle kernel paging request at virtual ad ...

  8. ncnn报null pointer dereference异常

    错误描述 基于c++使用ncnn封装了深度学习模型,并将c++项目打包成为了一个so库给Android调用,在打包成为so库之前,在Windows系统以及Ubuntu系统利用电脑的camera测试过都 ...

  9. Android UVCCamera问题——Cause: null pointer dereference

    记录遇到的问题. 采用的开源库链接:https://github.com/saki4510t/UVCCamera 使用该库预览的时候,如果拔掉uvc设备,会造成异常闪退. signal 11 (SIG ...

最新文章

  1. 数学图形(1.45)毛雷尔玫瑰(Maurer rose)
  2. 怎么进行mysql注入测试_MySQL for Java的SQL注入测试
  3. sklearn自学指南(part46)--新颖性和离群值检测方法概述
  4. android 自定义帧动画,Android 自定义方式实现帧动画效果
  5. 苹果笔记本电脑好用吗_苹果新品发布会消息汇总(8月25日)
  6. Broadcast简单使用
  7. 2022未来零售发展报告
  8. 浙大 PAT a1027
  9. java设计模式适配器模式_Java解释器设计模式
  10. Atlassian JIRA 插件开发之三 创建
  11. [WARNING]考前必读?!
  12. linux centos目录结构(一)
  13. NODE.JS菜鸟网总结
  14. JAVA程序打包为EXE
  15. 民生银行java 面试_2019民生银行招聘面试试题及答案解析
  16. HDU 4791 Alice's Print Service
  17. Spring| AOP之 引入(Introductions)
  18. 计算机控制系统是闭环还是开环,电喷摩托车系统的开环控制与闭环控制
  19. ctf:kali2:端口扫描:nmap和portscan
  20. 【Nape教程】Nape刚体碰撞检测

热门文章

  1. 大数据时代商业模式——企业如何创新?
  2. Unity EasyTouch(一)
  3. 大数据部门各个职位的职业生涯规划和发展路径
  4. 2021年夏令营全记录·南开CS
  5. 2021-2025年中国4K超高清蓝光播放器行业市场供需与战略研究报告
  6. UltraEdit-32的授权码
  7. js 根据深浅色背景,动态设置黑色白色文字颜色。判断颜色是否为深色,rgb转16进制,16进制转rgb
  8. 闪存驱动器_在任何Windows计算机上从您的闪存驱动器运行便携式Chrome
  9. 英雄联盟哪个服务器出无限火力,lol2020年无限火力模式什么时候开始 英雄联盟2020无限火力开启时间一览...
  10. 值得单曲循环的考研备考必备歌单,让你考前打满鸡血!