linux驱动学习笔记(四)内核配置与编译

内核配置过程说明

export ARCH=arm64

make ARCH=arm64 hw_defconfig 就会根据arch/arm64/configs/hw_defconfig文件为hw开发板选择对应的内核配置,执行完后会在kernel/linux/下生成一个基础的.config文件。生成过程就是以Kconfig构建,

make menuconfig 打开图形配置界面,选择好要加载的模块后,保存配置会把改动保存到.config文件(记录哪些被编译进内核,哪些被编译进模块)中,我们可以cp .config arch/arm64/configs/hw_v1_defconfig 作为hw下一次配置的基准(在拷贝之前我们先diff一下.config 和 def_config 的区别,看下区别是不是符合我们在menuconfig里的改动)

make menuconfig的工作原理:运行make menuconfig时,首先根据ARCH变量,到对应的目录下分析Kconfig文件,如arch/arm64/Kconfig, Kconfig会通过source 引入新的Kconfig, 就这么一级一级下去,组织起来整个配置过程, 所以如果新增加了模块,一定要make menuconfig去选中它,这样才会生成包含对应模块的.config文件

顶层Makefile会使用这个.config文件来构建内核

 

如何将自己写的驱动代码添加到内核编译

linux/drivers目录下新增一个目录,比如叫做sample_driver/,  里面添加我们写的sample.c 文件.

然后为这个驱动添加一个配置文件Kconfig, 内容大致如下:

复制代码
#
# Your Sample Driver's description
#
menu "Hello Driver"
comment "do nothing"

config YOUR_SAMPLE
     tristate "xx debug support"
     help
        Turn on xx functions
endmenu
复制代码

再为这个驱动添加一个Makefile文件,内容如下:

1
obj-$(CONFIG_YOUR_SAMPLE) += sample.o

 其中YOUR-SAMPLE要和Kconfig中的对应上。然后再到drivers/Makefile文件中,添加一行

obj-$(CONFIG_YOUR_SAMPLE) += gpu_debugger/

在drivers/Kconfig中添加

source "drivers/zyx_module/Kconfig"

 

编译内核与模块

make ARCH=arm64 CROSS_COMPILE=~/your_toolchain Image -j4  # 注意这里Image 首字母大写

make ARCH=arm64 CROSS_COMPILE=~/your_toolchain modules -j4

 

posted on   疾速瓜牛  阅读(247)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示