内核编译

确保当前在sdk目录下

指定平台编译

芯片平台会提供SDK,SDK中会自带kernel源码

rk平台:

部分编译内核指令,在sdk主目录下执行

1
2
./build.sh kernel

1、kernel 增加驱动代码

  • 在drivers/对应目录下创建对应目录,以触摸屏为例/drivers/input/touchscreen/xxx
  • 修改当前目录Makefile,使用obj 增加驱动代码目录
    1
    2
    obj-$(CONFIG_TOUCHSCREEN_xxx) += touchscreen/xxx

  • 修改上面Makefile 所处目录下kconfig文件,使其配置能被kernel 读取
1
2
3
4
5
6
7
8
9
10
// 如果增加驱动目录没有子kconfig 具体语法参考下面地址
config TOUCHSCREEN_XXXX
bool "XXXX"
depends on I2C
default n
help
Say Y here if you have XXXX touch panel.
If unsure, say N.
// 如果还有子config只需增加,子config中再根据需求详细配置
source "drivers/input/touchscreen/xxx/Kconfig"

kconfig语法参考网址

2、修改平台配置文件
平台级编译,可能会单独提供kernel的配置文件,在执行build.sh时会先读取它们的配置文件,然后写入kernel的配置文件中,再执行编译

1
2
3
4
5
graph LR
a(读取平台配置)-->b[写入kernel的config]
b-->c[使用当前kernel配置编译]
c-->d(kernel目录生成boot.img)

未指定平台

1、下载kernel源码

kernel源码地址
国内地址

2、配置config 选项

1
2
make menuconfig

进入后会进到图形配置kernel信息,修改后会保存在kernel目录下.config

查看当前配置项

1
vim .config

3、编译

1
make 

具体的编译过程可能因不同版本、不同平台的Linux而有所不同,另外配置需要查看Makefile。
若增加驱动代码,参考指定平台编译
指定平台编译