0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

buildroot对/dev的四种处理方式

嵌入式小生 来源:嵌入式小生 作者:嵌入式小生 2022-11-01 09:13 次阅读

Linux系统中,/dev目录中包含了特殊的文件(即设备文件),正是由于这些设备文件的存在,才允许用户空间的应用程序访问由Linux内核管理的硬件设备。如果没有这些设备文件,即使Linux内核正确识别了硬件设备,用户空间的应用程序也无法使用它们。

所以,位于/dev目录下的设备文件是用户空间程序与硬件设备进行交流的中间媒介。

buildroot对/dev的四种处理方式

在buildroot中,提供了四种方式来处理/dev目录,他们位于System configuration选项下的/dev management选项中:

e95cf184-597d-11ed-a3b6-dac502259ad0.png

(1)第一种方式是Static using device table

这是 Linux处理设备文件的传统方法。使用这种方法,设备文件会被持久存储在根文件系统中(即重新启动后它们仍然存在),并且在系统添加或者移除硬件设备时,不能自动创建和删除这些设备文件。因此,Buildroot 使用了设备表来创建一组标准的设备文件,默认设备表存储在Buildroot源代码的system/device_table_dev.txt文件中。文件中内容按照:


格式进行设备文件定义。

name : 要创建或修改的文件的路径。

type :是文件的类型。f: 常规文件、d: 目录、r: 递归目录、c: 字符设备文件、b: 块设备文件、p: 命名管道。

mode :通常的权限设置(仅允许使用数值)。

uid 和 gid 是要在此文件上设置的 UID 和 GID;可以是数值或者实际名称。

major 和 minor 这里用于设备文件,其他文件需设置为“-”。

start,inc 和 count 适用于要创建一批文件的情况,实则为一个循环,从start开始,以inc为单位递增计数器,直至达到count。

Buildroot在生成最终的根文件系统镜像时才会处理这个设备表文件,因此设备文件在output/target 目录中是不可见的。BR2_ROOTFS_STATIC_DEVICE_TABLE选项用于更改Buildroot默认使用的设备表,或者添加其他设备表,以便Buildroot在构建过程中可以创建其他设备文件。因此,如果使用此方法,并且系统中缺少设备文件,则可以创建一个包含其他设备文件描述的board///device_table_dev.txt 文件,然后将 BR2_ROOTFS_STATIC_DEVICE_TABLE设置为system/device_table_dev.txt board///device_table_dev.txt。

(2)第二种方式是Dynamic using devtmpfs only

devtmpfs是Linux内核中的一个虚拟文件系统,在内核 2.6.32 中引入(如果使用较旧的内核,则无法使用此选项)。在挂载到/dev 后,此虚拟文件系统将在系统添加或者移除硬件设备时自动显示或者让设备文件消失。

devtmpfs文件系统在重新启动后并不会持久,因为它是由内核动态填充的。

使用devtmpfs时需要启用以下内核配置选项:CONFIG_DEVTMPFS 和 CONFIG_DEVTMPFS_MOUNT。

(3)第三种方式是Dynamic using devtmpfs+mdev

该方法同样依赖于 devtmpfs 虚拟文件系统(因此同样需要在内核配置中启用 CONFIG_DEVTMPFS 和 CONFIG_DEVTMPFS_MOUNT),但添加了 mdev 用户空间程序。mdev是 BusyBox 里面的一个重要组成程序,每次添加或移除设备时,内核都会调用mdev。

我们可以使用/etc/mdev.conf配置文件配置mdev,例如给设备文件设置特定的权限或所有权、在设备出现或消失时调用脚本或应用程序等等。允许用户空间对设备添加和删除事件做出反应。例如:当设备出现在系统上时,mdev 可用于自动加载内核模块。如果设备需要固件,则 mdev 也很重要,因为它会负责将固件内容推送到内核。

mdev是udev的轻量级实现(功能较少)

(4)第四种方式是Dynamic using devtmpfs+eudev

此方法同样依赖于devtmpfs虚拟文件系统,但添加了eudev用户空间守护程序。eudev 是后台运行的守护程序,当系统添加或者移除设备时,内核将会调用eudev。

与 mdev 相比,它是重量级的解决方案,但是具有更高的灵活性。eudev是udev 的独立版本,udev 是大多数桌面 Linux 发行版中使用的原始用户空间守护程序,现已归入Systemd中。

总结

在本文中,描述了buildroot对/dev的四种处理方式,在实际使用中,可以按照以下规则进行选择:

如果在设备添加或移除时不通知用户空间,则选择Dynamic using devtmpfs only方式。(Busybox、systemV和OpenRC三种初始化系统都支持)

如果在设备添加或移除时需要通知用户空间或者需要固件,则选择Dynamic using devtmpfs+mdev方式。(Busybox、systemV和OpenRC三种初始化系统都支持)

如果选择systemd作为初始化系统,则/dev 管理将由 systemd 提供的udev程序执行。(仅支持systemd初始化系统)

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    3380

    浏览量

    66407
  • 应用程序
    +关注

    关注

    38

    文章

    3292

    浏览量

    57872
  • Buildroot
    +关注

    关注

    1

    文章

    48

    浏览量

    1413

原文标题:buildroot使用笔记-02 | /dev的四种管理机制

文章出处:【微信号:嵌入式小生,微信公众号:嵌入式小生】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    大数据的四种思维方式

    大数据所带来的四种思维方式的转变
    发表于 08-12 11:37

    浅析SQL的四种连接方式

    SQL的四种连接-左外连接、右外连接、内连接、全连接
    发表于 03-20 11:18

    无线充电的四种方式及比较

    无线充电的起因无线充电的“历史”无线充电的四种方式及比较无线充电系统的元件和开发工具推荐
    发表于 01-27 07:06

    独立键盘的四种使用方式程序分享

    蓝桥杯单片机组简易问题与代码(5)今日问题:独立键盘的四种使用方式程序仅供参考,鼓励大家独立完成#include #define uint unsigned int#define uchar
    发表于 01-12 06:54

    无线充电技术的四种方式及其原理和应用介绍

    本文介绍了无线充电技术的应用范围及其电磁感应方式四种充电方式的详细介绍。
    发表于 10-12 16:16 27次下载
    无线充电技术的<b class='flag-5'>四种</b><b class='flag-5'>方式</b>及其原理和应用介绍

    无线充电技术(四种主要方式)原理与应用实例图文详解.

    无线充电技术(四种主要方式)原理与应用实例图文详解.(电源技术版面费)-无线充电技术(四种主要方式)原理与应用实例图文详解.          
    发表于 09-22 18:27 146次下载
    无线充电技术(<b class='flag-5'>四种</b>主要<b class='flag-5'>方式</b>)原理与应用实例图文详解.

    基础知识:变频器的四种控制方式

    围绕变频器的四种控制方式即V/f恒定控制、转差频率控制、矢量控制、直接转矩控制展开介绍。
    发表于 03-11 11:20 1.3w次阅读
    基础知识:变频器的<b class='flag-5'>四种</b>控制<b class='flag-5'>方式</b>

    线缆敷设的四种方式与注意事项

    目前线缆敷设一般有四种方式:直埋电缆敷设、排管电缆敷设、电缆沟或隧道内电缆敷设、桥架电缆敷设。针对这四种敷设方式的施工要求总结如下。
    的头像 发表于 07-18 12:03 1w次阅读

    PCB电镀中异常处理方式

    个人收集的一些异常处理方式
    发表于 08-11 15:01 0次下载

    buildroot对/dev四种处理方式

    在Linux系统中,/dev目录中包含了特殊的文件(即设备文件),正是由于这些设备文件的存在,才允许用户空间的应用程序访问由Linux内核管理的硬件设备。
    的头像 发表于 11-01 09:09 1319次阅读

    四种方式实现led点亮

    四种方式实现led点亮
    发表于 01-04 14:31 4次下载

    浅析测力传感器的两处理方式

    浅析测力传感器的两处理方式
    的头像 发表于 12-20 17:31 1023次阅读
    浅析测力传感器的两<b class='flag-5'>种</b><b class='flag-5'>处理方式</b>

    设备管理通道控制四种方式

    设备管理的主要任务之一是控制设备和内存或处理机之间的数据传送,外围设备和内存之间的输入/输出控制方式四种,下面分别介绍。
    发表于 12-08 14:05 1267次阅读
    设备管理通道控制<b class='flag-5'>四种</b><b class='flag-5'>方式</b>

    模数转换器结束信号的四种处理方式

    模数转换器结束信号的四种处理方式  模数转换器(ADC)是将模拟信号转换为数字信号的设备。在ADC操作过程中,结束信号非常重要,它指示了模数转换器已经完成转换并准备好输出数据。下面将详细介绍四种
    的头像 发表于 02-03 16:41 886次阅读

    元器件的包装方式及常见的四种方式

    四种元件包装方式在实际生产和使用中广泛应用,不同的包装方式适用于不同类型和规格的元件,并且可以根据具体要求进行定制化的包装设计。不同的包装方式也可以影响元件的存储、运输和使用,选择适合
    的头像 发表于 06-27 12:58 1801次阅读