将firmware编译进kernel空间
文章目录
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 <gregkh@linuxfoundation.org>
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 <markus@trippelsdorf.de>
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
固件