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

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

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

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

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

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

【问题讨论】:

    标签: linux kernel firmware


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-18
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        相关资源
        最近更新 更多