来自 操作系统 2020-05-07 00:57 的文章
当前位置: 网上澳门金莎娱乐 > 操作系统 > 正文

Linux设备模型(热插拔、mdev 网上澳门金莎娱乐:与 firmware)【转】

这些资料是授权给您必须严格结合 LocalTalk 的适配器一起使用的

热插拔
有 2 个不同角度来看待热插拔:
   从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。
   从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和 mdev)的交互。 当需要通知用户内核发生了某种热插拔事件时,内核才调用这个用户空间程序。
现在的计算机系统,要求 Linux 内核能够在硬件从系统中增删时,可靠稳定地运行。这就对设备驱动作者增加了压力,因为在他们必须处理一个毫无征兆地突然出现或消失的设备。

(责任编辑:admin)

一旦创建了 sysfs 入口项, 内核将为设备产生一个热插拔事件,并传递包括变量 FIRMWARE 的环境变量给处理热插拔的用户空间程序。FIRMWARE 被设置为提供给 request_firmware 的固件文件名。

从未发布源码的私有软件中继承,版权所有 Broadcom

(2)在启动时加上使用mdev的命令:

这个固件不允许被修改,而且只能与 Keyspan 硬件一起使用

相关标签:嵌入式培训嵌入式开发嵌入式学习

FSFLA 认为:

在一开始建立根文件系统时,我根据 WeiBing 的博客上《UDEV on embeded Linux-2.6.19.2》(地址:http://weibing.blogbus.com/logs/4485453.html) 这篇文章的提示,开始使用mdev,但是当时只是启动时mdev -s 一下,并没有深究。现在在学习了Linux设备模型之后,对于Linux中/dev目录的动态管理有了更深的认识,并认真的看了一下busybox中的 mdev.txt文档并翻译了一下,做成了PDF(下载地址:http://blogimg.chinaunix.net/blog/upfile2/080111091002.pdf),在看下面的内容时请先看看这篇文档。

许多人认为Linux是免费软件或开源的,但事实并非如此。Linux 2.6.36 内核由 Torvalds 先生发布,由于预先的协议条款使得该内核包含一些不提供源码的东西,这些协议如:

(4)至于/etc/mdev.conf文件,可有可无,不影响使用,只是添加了些功能。

FSFLA(Free Software Foundation Latin America) 拉美自由软件基金会日前发布了一个 Linux 内核版本 2.6.36,该版本不包含任何固件或者固件所需的驱动程序,同时该组织以开放的核心为题的商业模式讨论。

firmware

等等。


Via LWN

转自:http://www.cnblogs.com/hnrainll/archive/2011/06/10/2077469.html


 

loading :这个属性应当被加载固件的用户空间进程设置为 1。当加载完毕, 它将被设为 0。被设为 -1 时,将中止固件加载。
data :一个用来接收固件数据的二进制属性。在设置 loading 为1后, 用户空间进程将固件写入这个属性。
device :一个链接到 /sys/devices 下相关入口项的符号链接。

udev :用于linux2.6.13或更高版本的内核上,为用户空间提供使用固定设备名的动态/dev目录的解决方案。它通过在 sysfs 的 /class/ 和/block/ 目录树中查找一个称为 dev 的文件,以确定所创建的设备节点文件的主次设备号。所以要使用udev,驱动必须为设备在sysfs中创建类接口及其dev属性文件,方法和sculld模块中创建dev属性相同。 udev的资料网上十分丰富,我就不在这废话了,给出以下链接有兴趣的自己研究:

 

本博客文章,大多系网络中收集,转载请注明出处

 

 

 

注意:要使用firmware,必须要在配置内核时选上:

ARM9开发板实验

 

要使用mdev,适当知道一下原理是必不可少的(能完整地研究mdev源码是最好的)。说实话起初我并没有想看mdev的源码,是在使用时发现了问题后才去研究了一下mdev的源码。现在简单介绍一下mdev的原理:

先声明一个要点:要实现设备节点文件的自动、动态的增删,必须在你自己的驱动源码中实现 类 接口,并在类设备的目录中添加包含设备号的名为“dev”的属性文件。

 

固件接口工作原理

Device Drivers  --->

实验源码:http://blogimg.chinaunix.net/blog/upfile2/080114113255.gz

mdev使用

否则会出现: Unknown symbol release_firmware 和: Unknown symbol request_firmware 的错误。

我在自己创建的根文件系统(nfs)中的/linuxrc文件中添加了如下指令:

 热插拔事件:由于启动时运行了命 令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于 /sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为 这个设备在/dev 下创建设备节点文件。

 

注意:是/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug,并非``/bin/echo /bin/mdev > /proc/sys/kernel/hotplug。busybox的文档有错!!

 

因为hotplug现在也在被慢慢地淘汰,udev不再依赖hotplug了,所以这里不再介绍;


执行mdev -s :以‘-s’为参数调用位于 /sbin目录写的mdev(其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它),mdev扫描 /sys/class 和 /sys/block 中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev 下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。

     为了实验我在/etc创建了mdev.conf文件并输入了:

 request_firmware 接口允许使用驱动发布设备固件。当正确地集成进热插拔机制后, 固件加载子系统允许设备不受干扰地工作。显然这是处理问题的最好方法,但固件受版权保护,小心违反版权法。

 

本文由网上澳门金莎娱乐发布于操作系统,转载请注明出处:Linux设备模型(热插拔、mdev 网上澳门金莎娱乐:与 firmware)【转】

关键词: