Linux 上固件包的用途和用途

Posted

技术标签:

【中文标题】Linux 上固件包的用途和用途【英文标题】:Purpose and usage of firmware packages on Linux 【发布时间】:2015-06-13 06:42:08 【问题描述】:

我为许多微控制器编写了固件,例如 8051、AVR 和 ARM。所以我很清楚什么是固件。

最近当我更新我的 Linux 发行版时,我注意到有许多固件相关的软件包正在更新,例如iwl3160-固件和 iwl1000-固件。他们有带有 .fw 扩展名的文件。

如果固件是一段代码,它被烧录到嵌入式控制器的非易失性存储器中,那么这些 .fw 文件在做什么?

是在系统更新时它们实际上被烧入了相应设备的非易失性内存中,还是在每次设备开机时动态加载到设备的易失性程序内存中?或者它们只是内核用来访问设备的供应商特定的专有代码?

将不胜感激提供具体示例的答案,例如 iwl3160-firmware。

【问题讨论】:

【参考方案1】:

“固件”已经变得更广泛,并从写入芯片 NVM 的代码演变为更多指编程中间件的术语。

我自己没有检查过这些文件,但我无法想象它们实际上是被烧录的。我想它们只是驱动程序,将从应用程序级别获取高级输入并将其转换为低级别的操作硬件。这就是现在的固件。

【讨论】:

【参考方案2】:

与此处发布的the other answer 相反,this article 声明设备的驱动程序确实可以将固件加载到设备中。

那篇文章解释了在使用 Ubuntu 时固件文件是这样使用的:

    驱动程序请求固件文件“ar9170.fw” 内核向 udev 发送事件请求固件 udev 程序运行一个脚本,将固件文件中的数据推送到内核创建的特殊文件中 内核从它创建的特殊文件中读取固件数据并将数据交给驱动程序 然后驱动程序执行将固件加载到设备中所需的操作

此外,根据this answer,现代设备旨在从将控制它的主操作系统中获取固件。这就是为什么linux在/lib/firmware中提供了一堆固件文件的原因。

【讨论】:

以上是关于Linux 上固件包的用途和用途的主要内容,如果未能解决你的问题,请参考以下文章

Linux应用程序基础 1应用程序与系统命令的关系 文件位置 主要用途

udp协议的用途

Yum仓库常见目录用途及软硬连接

support v7兼容包的用途(三 、v7兼容包和系统自带的比较和注意点)

Linux目录结构及用途和文件管理

描述Linux发行版的系统目录名称命名规则以及用途