将firmware编译进kernel空间

将firmware编译进kernel空间

文章目录

  • 将firmware编译进kernel空间
    • Overview
    • 法1:kernel 4.9 及之前版本的方法
      • 1.1 修改`firmware/Makefile`,如下面的例子
      • 1.2 添加FW
    • 法2:kernel 4.14版本方法
      • 2.1 在defconfig中增加如下修改
      • 2.2 添加FW

Overview

kernel原本就是支持将firmware编译进内核的。

早些年,用的比较多的是方法一。这也就导致了kernel里面多了很多firmware文件,这些文件对于kernel源码来说。不适合放在release版本里面。用户自己需要时添加比较合适。所以有了下面两个修改。

2017年9月份,kernel开发者整理firmware下的相关代码(如下两个patch)

From 5620a0d1aacd554ebebcff373e31107bb1ef7769 Mon Sep 17 00:00:00 2001
From: Greg Kroah-Hartman 
Date: Thu, 14 Sep 2017 14:23:01 -0700
Subject: [PATCH] firmware: delete in-kernel firmware

From df85b2d767aad90fd2746f993fcd66dd322768f8 Mon Sep 17 00:00:00 2001
From: Markus Trippelsdorf 
Date: Sat, 16 Sep 2017 11:01:16 +0200
Subject: [PATCH] firmware: Restore support for built-in firmware

法2其实是一直都支持的方法。

法1是看起来,用的人比较多的方法。

新版本的kernel中,法1不支持了。

法1:kernel 4.9 及之前版本的方法

1.1 修改firmware/Makefile,如下面的例子

fw-shipped-y += a/b.bin
fw-shipped-$(CONFIG_A) += c/d.fw
fw-shipped-$(CONFIG_B) += d.ihex

1.2 添加FW

然后在firmware目录下添加.fw .bin .ihex等firmware文件

法2:kernel 4.14版本方法

2.1 在defconfig中增加如下修改

CONFIG_EXTRA_FIRMWARE_DIR="firmware"
CONFIG_EXTRA_FIRMWARE="a.bin b.bin c.bin"

EXTRA_FIRMWARE_DIR该选项指定firmware所在的目录

CONFIG_EXTRA_FIRMWARE该选项是一个字符串,接受固件文件的名称(空格分隔)

与源文件中MODULE_FIRMWARE()request_firmware()中出现的名称相同。
这些文件应该存在于EXTRA_FIRMWARE_DIR选项指定的目录下

2.2 添加FW

在kernel根目录下的firmware目录中添加.bin固件

你可能感兴趣的:(Linux驱动)