hotplug firmware

news/2024/7/6 0:09:24 标签: 硬件驱动, linux, file, header, 工作, socket
  Linux 2.6.x hotplug 和firmware 功能

因为工作中需要,我做了一些了解,因此写了一点心得。所以这篇文章并不是一个完整的教材。

1.: 一些概念
hotplug 它是系统在安装即插即用模块常用的工具 例如:PCI,USB,PCMCIA.
大概流程如下:
(1) Linux 系统启动后,一切都在工作中;
(2) 用户插入USB-DISK(U盘);
(3) 系统加载了U盘驱动;
(4) 体统调用/sbin/hotplug 脚本,实现自动mount动作;
关于hotplug的网站如下:
http://linux-hotplug.sourceforge.net/

firmware 名字含义是固件,Linux 引用这个功能可能从2.6.x开始;
它的作用是让硬件驱动通过kernel加载设备固件驱动;
在实际应用中,我们系统中PCI,USB设备或许需要自己的驱动固件,
设备只有通过这个固件才能驱动自己;由于固件也在升级中,或者因为生产时
减少烧录固件这道工序,所以人们选择在加载驱动的时候通过程序将固件
传给设备.
所以Linux 提供了 firmware load 函数给驱动程序使用;

2.: 使用方法
这里主要介绍硬件驱动使用 Linux kernel 提供Firmware load 功能的方法;
(1) kernel source code :
drivers/base/firmware_class.c // linux 2.6.11
(2) header file:
<linux/firmware.h>
(3) document
Document/firmware/
(4) 使用例子
Documentation/firmware_class/firmware_sample_driver.c

3.: 原理和操作步骤
当我们按照例子使用下面函数操作时:
request_firmware(&fw_entry, "sample_driver_fw", &ghost_device);
从firmware_class.c 可以看出request_firmware作了如下动作:

(1) . 创建 ghost_device 所在节点文件;
(2) . 调用hotplug; (Documentation/firmware_class/hotplug-script,应放在/sbin/hotplug)
完成load动作;

理解hotplug例子;
HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/
//本机存放firmware.bin 目录,也就是目标固件文件所放置的位置;

echo 1 > /sys/$DEVPATH/loading
cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data
//通过用户程序将固件cp 给 kernel 创建 的ghot_device 文件;
// 这样kernel就获取了固件数据;

echo 0 > /sys/$DEVPATH/loading


When a driver calls request_firmware(), a uevent is sent by the kernel to udev over a netlink(7) socket, requesting that a specific file is uploaded. udevd runs /lib/udev/firmware.agent, a simple shell script which will look for the $FIRMWARE file in a few directories and then copy it to the designated place in the driver $DEVPATH in sysfs.

http://www.niftyadmin.cn/n/841278.html

相关文章

做面板数据分位数回归模型_小白学统计|面板数据分析与Stata应用笔记(八)

#文章首发于公众号“如风起”。原文链接&#xff1a;小白学统计|面板数据分析与Stata应用笔记&#xff08;八&#xff09;​mp.weixin.qq.com本期内容&#xff1a;面板门限模型面板数据分析与Stata应用笔记整理自慕课上浙江大学方红生教授的面板数据分析与Stata应用课程&#x…

《中国人工智能学会通讯》——6.26 走向深度

6.26 走向深度 在实际应用层面上&#xff0c;十年前出现的一些特定创新让深度学习成为可能&#xff0c;那时&#xff0c;人们对人工智能和神经网络的兴趣已经降到了数十年来的最低点。一个由政府和私人捐助者资助的加拿大组织加拿大高等研究院&#xff08;CIFAR&#xff09;通过…

让Nightmarejs 也能像Phantomjs 一样支持过滤某个请求

2019独角兽企业重金招聘Python工程师标准>>> Something similar to the PhantomJS event "onResourceRequested". https://github.com/rosshinkley/nightmare-load-filter 可以自由发挥。 const Nightmare require(nightmare); require(nightmare-load-f…

服务器4个网口如何配置_4个强大的Linux服务器监控工具

本文是我想呈现给各位的4个强大的监控工具。htop – 交互式进程查看器你可能知道在机器上查看实时进程的标准工具top。如果不知道&#xff0c;请运行$ top看看&#xff0c;运行$ man top阅读帮助手册。htop是top的扩展版本&#xff0c;有更丰富的概貌(例如全命令、可视化、图形…

硅谷人工智能专家加盟销售易 为AI+CRM打开想象空间

3月23日&#xff0c;销售易对外宣布&#xff0c;来自硅谷的人工智能专家赵宇辰正式加入销售易&#xff0c;出任技术副总裁&首席数据科学家&#xff0c;负责销售易CRM在大数据及人工智能方向的产品和研发工作。 这是销售易于1月12日完成D轮融资之后的又一动作。该轮由腾讯领…

Java实现字符串反转

替换原则&#xff1a;index k 的值和 n-k 的值进行交换。&#xff08;始终记住程序员的n、k都是字符串的实际位置。&#xff09;乘除的最基本实现还是来源于移位操作。1 public String reverse(String src) { 2 char[] value src.toCharArray(); 3 int co…

python udp 大文件_如何使用UDP python s从服务器向客户端发送大图像(2MB)多个文件...

您发布的代码似乎假定在从发送方到接收方的过程中不会有任何数据包被丢弃&#xff0c;这种假设在现实生活中并不成立(即使发送方和接收方都位于同一台机器上&#xff01;)&#xff0c;这是您的传输除了在非常小的文件上(您可以依靠运气来确保第一次尝试时所有的数据包都能通过)…

C++运算符的重载

C运算符的重载总结 c的一大特性就是重载(overload)&#xff0c;通过重载可以把功能相似的几个函数合为一个&#xff0c;使得程序更加简洁、高效。在c中不止函数可以重载&#xff0c;运算符也可以重载。由于一般数据类型间的运算符没有重载的必要&#xff0c;所以运算符重载主要…