美文网首页
Android 驱动编译后不自动创建节点解决

Android 驱动编译后不自动创建节点解决

作者: 我和你说过 | 来源:发表于2018-11-05 14:58 被阅读0次

    1、Android 将第三方驱动编译到内核

    我这里使用的是一个第三方的usb摄像头硬件 需要将官方给的驱动文件(一般是.c和.h文件)放入到Android源码中内核的源码文件kernel/driver/usb/misc文件夹/下面(这个是官网文档上建议的 驱动编译还可以直接在driver目录下创建我们自定义的文档)。
    然后按照官方的文档配置MakeFile和Kconfig这两个文件


    image.png

    其中第4步的操作 意思是如果你之前就编译过内核镜像 会在kernel文件下面有一个.config文件 这个时候你可以打开这个.config文件 然后添加CONFIG_WHOIS_USB_CAMERA=y这句话。保存之后打开终端进入到kernel根目录下面,然后make menuconfig 这个时候回弹出驱动配置的弹框,在弹框里面Device Drivers -> USB support -> 如果有 whois usb camera support 操作看看结果 ,一般没什么大问题。
    最后编译内核,这里可以只编译内核镜像就可以。

    2、烧录到开发板上面查看驱动是否编译到内核

    将编译好报的kernel.img烧录到开发板。然后查看驱动安装成功状态
    adb shell 然后 dmesg 查看打印信息中是否有:
    whois USB camera now attached to whoiscam198 说明设备已成功连接。

    3 查看是否有对应的驱动节点

    adb shell
    ls /dev/whoiscam0 (这里的whoiscam0使我们的驱动节点名)
    我第一次发现是没有这个文件节点的
    然后按照官方的推荐 手动创建节点
    mknod whoiscam0 c 180 198 (PS 需要到dev目录下去执行)
    如果提及权限问题 可以su之后再创建
    这个时候节点手动创建成功,然后还需要修改节点文件的权限
    chmod 777 /dev/whoiscam0
    OK 现在驱动节点创建成功了 我的usb摄像头设备也可以正常被app调用了,但是我这个时候将开发板重启之后发现设备又不能使用了,然后我又adb查看节点文件发现不见了,懵逼了!!!
    操作几次之后发现手动创建节点不行,所以就开始查看很多关于Android自动创建节点的资料。

    4 驱动编译到内核成功之后自动创建节点

    参考文章
    https://blog.csdn.net/u013686019/article/details/50165059?locationNum=3&fps=1
    http://blog.sina.com.cn/s/blog_4c73bcc80101262o.html

    1、修改Android源码中system/core/init/device.c文件
    找到handle_generic_device_event的方法
    添加打印


    image.png

    相关文章

      网友评论

          本文标题:Android 驱动编译后不自动创建节点解决

          本文链接:https://www.haomeiwen.com/subject/idbxxqtx.html