android中usb设备驱动不能自动创建设备节点

在调试Android USB驱动时遇到问题,设备节点无法自动创建,导致硬件访问受阻。手动创建设备节点后能正常工作。问题源在于init进程中的设备过滤机制,具体涉及system/core/init/devices.c文件的相关函数。解决方法是添加代码来创建指定名称的设备节点。
摘要由CSDN通过智能技术生成

调试一个usb驱动,发现在android下无法自动创建设备节点,手动创建设备节点可以正常访问硬件。后来发现是在init进程里面对一些usb设备进行了过滤。

system/core/init/devices.c 中的下面函数中。

static void handle_generic_device_event(struct uevent *uevent)
{
    char *base;
    const char *name;
    char devpath[96] = {0};
    char **links = NULL;

    name = parse_device_name(uevent, 64);
    if (!name)
        return;

    if (!strncmp(uevent->subsystem, "usb", 3)) {
         if (!strcmp(uevent->subsystem, "usb")) {
             /* This imitates the file system that would be created
              * if we were using devfs instead.
              * Minors are broken up into groups of 128, starting at "001"
              */
             int bus_id = uevent->minor / 128 + 1;
             int device_id = uevent->minor % 128 + 1;
             /* build directories */
             mkdir(&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值