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应用程序与系统命令的关系 文件位置 主要用途