有关于mdev

  linux嵌入式开发中,常常会遇到创建设备文件的问题。我在网上搜了大半天,结合自己的理解和实践,搞个总结:

  有关于mdev,它是一个简单版的udev。作用就是在linux系统下自动创建设备文件。下面引用下,它的基本介绍:

 

//--------------------------------------------------------------------------------------------------------------------------------------

Basic Use
基本使用方法
-----------
Mdev has two primary uses: initial population and dynamic updates. Both
mdev 有两个主要的应用:初始化对象和动态更新。
require sysfs support in the kernel and have it mounted at /sys. For dynamic
两个应用都需要内核 sysfs 的支持,且必须挂载到 /sys 。为了实现动态更新,
updates, you also need to have hotplugging enabled in your kernel.
你还必须在内核配置时增加热插拔支持(hotplugging)。
Here's a typical code snippet from the init script:
以下是系统初始化脚本中一个典型的使用mdev 的代码片段:
    [1] mount -t sysfs sysfs /sys
    [2] echo /bin/mdev > /proc/sys/kernel/hotplug
    [3] mdev -s

Of course, a more "full" setup would entail executing this before the previous
当然,一个对mdev 更完整的安装还必须在以上代码片段前执行下面的命令:
code snippet:
    [4] mount -t tmpfs mdev /dev
    [5] mkdir /dev/pts
    [6] mount -t devpts devpts /dev/pts

The simple explanation here is that [1] you need to have /sys mounted before
简单说明一下上面的代码:[1]你必须在执行mdev 前挂载 /sys 。
executing mdev. Then you [2] instruct the kernel to execute /bin/mdev whenever
随后你 [2] 命令内核在增删设备时执行 /bin/mdev ,
a device is added or removed so that the device node can be created or
使设备节点文件会被创建和删除。
destroyed. Then you [3] seed /dev with all the device nodes that were created
最后你 [3] 设置mdev,让它在系统启动时创建所有的设备节点。
while the system was booting.
For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem
而对mdev 更完整的安装,你必须[4]确保 /dev 是 tmpfs 文件系统
(assuming you're running out of flash). Then you want to [5] create the
(假设文件系统在 flash 外运行)。 而且你必须 [5] 创建

//-------------------------------------------------------------------------------------------------------------------------------------

看完上面的介绍,我想起了制作根文件系统的时候需要的一些脚本。

因为mdev正常工作,需要以下几个文件系统被正确挂载:devpts,tmpfs,/sys

所以在/etc/fstab会有以下内容     

 /dev/pts    devpts  gid=5,mode=620    0       0
sysfs           /sys        sysfs   defaults          0       0
至于tmpfs怎么被挂载到/dev下和devpts的gid为什么5,至今还没有探索明白。

搞完文件系统后,还得将mdev与设备“action”关联起来。

所以在/etc/rcS中或者相当于初始化的脚本中,一般会有下有一句:echo /bin/mdev > /proc/sys/kernel/hotplug

如果没有,那是在/proc/sys/kernel/hotplug里面直接被写入了/bin/mdev这一句

在linux初始化的过程中,mdev要把已经在系统里的设备文件创建出来 ,那么在rcS同样会有

mdev -s

它最终也调用mknod命令。

这样mdev在设备有动作时,就可以自动工作了。

不过,mdev工作要有原材料,即/sys/class下subsystem目录下的dev文件。
 这个文件怎么来呢,还是和设备的驱动有关系,在设备的驱动中要创建一个class,

再到这个类中添加要创建的设备

eg:

在__init模块中

myclass = class_create(THIS_MODULE, "globalvar");

device_create(myclass, NULL, MKDEV(MAJOR_NUM, 0), NULL, "globalvar");

在__exit模块中

class_destroy(myclass);

device_destroy(myclass,MKDEV(MAJOR_NUM,0));

至于怎么设备何时会有action,mdev如何会得到有关于新加设备信息,这些和linux的驱动模型

有很大关系,如kobject,kset这些结构体。以后再做详细研究了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值