【全志H616开发】Linux的热拔插UDEV机制

文章目录

udev简介

Udev 是 Linux 系统中设备管理的一部分,它负责管理动态设备节点并处理设备的热插拔。Udev 提供了一种在用户空间管理设备节点的机制,可以在设备插入或移除时自动执行相应的操作。

  • Udev 是 Linux 内核 2.6 及以后版本的设备管理框架。
  • 它负责在 /dev 目录中创建和删除设备文件。
  • Udev 通过监听内核发送的 udev 事件来响应设备的插入和拔出。

工作原理

  • 内核中有一个设备管理系统(例如 hotplug),它会在设备插入或拔出时生成 uevent。
  • Udev 守护进程(udevd)会监听这些 uevent 事件。
  • 当 udevd 收到 uevent 后,会根据配置文件中的规则进行处理,包括命名设备文件、设置权限、创建符号链接等。

    应用层调用:库函数->系统调用->内核->硬件;

Udev 配置文件和规则

  • Udev 的配置文件通常位于 /etc/udev/udev.conf,它定义了 Udev 的全局配置选项。
  • 规则文件通常存放在 /etc/udev/rules.d/ 和 /lib/udev/rules.d/ 目录中。
  • 规则文件的命名格式为 NN-name.rules,其中 NN 表示优先级,name 为规则名称。 为何要创建规则文件:

    当插入usb设备时,内核识别到usb设备,但应用层检测不到设备,所以创建规则文件是为了让udev机制能认识他是usb类型设备,或者其他类型设备,当内核识别到了usb设备,发出uevent事件,Udev会根据配置文件中的规则进行处理

    下面创建对应的设备文件。

当没有创建文件时,连接手机会出现如下错误

List of devices attached

FMLDU20103009685 no permissions (user in plugdev group; are your udev rules wrong?); see http://developer.android.com/tools/device.html

解决:创建规则文件,见示例

规则语法

  • 规则格式:MATCH_KEYS=="value", ACTION_KEYS="value"
  • 常用匹配条件:KERNEL, SUBSYSTEM, ATTR, ENV, NAME, SYMLINK, OWNER, GROUP,
    MODE。
  • 常用操作:RUN, IMPORT, GOTO, LABEL, OPTIONS。

示例

cd 到如下目录

复制代码
cd /etc/udev/rules.d

添加配置,文件名随便写

复制代码
sudo vim huaWei-android.rules

输入:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"

这样就是建立了usb热拔插规则的文件

重新拔插,确保手机USB调试打开

总结:

当设备插入,内核知道后,发出uevent,udev设备工具一直在监听,监听到uevent后,根据规则文件的规则(可以是自己创建的),判断它是什么类型的设备,并在/dev下面为它创建对应的设备文件,这样应用层就通过文件句柄访问到设备了;

相关推荐
大哥您好5 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
jack186895 小时前
百度 AI 搜索实战:从精准获客到智能决策的应用全景
windows
国科安芯5 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan62345 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
道满科技6 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
WD137298015576 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
Android系统攻城狮6 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
GHN19878887 小时前
开源小工具按一下空格,什么都看见了
windows
我科绝伦(Huanhuan Zhou)7 小时前
Linux 通用压力测试脚本合集:磁盘 + 网络
linux·网络·压力测试
创界工坊工作室8 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus