Linux上固件包的用途和用法

Linux上固件包的用途和用法,linux,kernel,firmware,Linux,Kernel,Firmware,我已经为许多微控制器编写了固件,如8051、AVR和ARM。所以我很清楚什么是固件 最近,当我更新Linux发行版时,我注意到有许多与固件相关的软件包正在更新,例如iwl3160固件和iwl1000固件。他们有扩展名为.fw的文件 如果固件是一段代码,烧入嵌入式控制器的非易失性内存,那么这些.fw文件在做什么 是在系统更新时,它们实际上被烧掉到各自设备的非易失性内存中,还是在每次设备打开时,它们被动态加载到设备的易失性程序内存中?或者它们只是内核用来访问设备的特定于供应商的专有代码 请给出一个具

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

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

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

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

请给出一个具体示例,如iwl3160固件,我们将不胜感激。

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

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

与此处发布的相反,设备的驱动程序可能确实会将固件加载到设备

这篇文章解释了固件文件在使用Ubuntu时的使用方式:

  • 驱动程序请求固件文件“ar9170.fw”
  • 内核向udev发送一个请求固件的事件
  • udev程序运行一个脚本,将固件文件中的数据推送到内核创建的特殊文件中
  • 内核从它创建的特殊文件中读取固件数据,并将数据交给驱动程序
  • 然后,驱动程序执行将固件加载到设备中所需的操作
  • 此外,根据设计,现代设备可以从控制它的主操作系统获取固件。这就是linux在
    /lib/firmware
    中提供大量固件文件的原因