简单添加自己的驱动程序到Linux内核树中

--- title: 简单添加自己的驱动程序到Linux内核树中 date: 2020-06-22 07:50:00 categories: tags: - Linux - kernel - driver ---

背景

移植4g模块的时候,看到文档中有添加驱动到内核的步骤,于是趁着这个机会,展开有关的学习。

了解更多可以访问:《Kconfig语法简介

Target    :hi3531d

Linux    :Linux-3.18

有关概念:

内核源码编译过程:

  • 从顶层目录开始,遍历每个源码目录(或配置指定的源码目录)中的Makefile;

  • 每个目录的Makefile 会根据Kconfig来定制要编译对象 回到顶层目录的Makeifle执行编译。那么,也就有:

.config ---> (源码顶层目录下)保存选择结果
Kconfig ---> (每个源码目录下)提供选项
Makefile---> (每个源码目录下)根据.config中的内容来告知编译系统如何编译

步骤:

在自己喜欢的位置创建一个目录(前提是这个目录下面存在Kconfig以及Makefile)

为了方便演示,我们这里在 drivers 目录下面创建 demo 文件夹

进入到新建的目录下。img

在新建的目录下创建Kconfig文件

config DEMO
    bool "Test driver"
    help
        This is a demo for test

在新建的目录下创建Makefile文件

当CONFIG_选项名=y时,表示对应目录下的xxx.c将被编译进内核;当CONFIG_选项名=m 时对应目录下的xxx.c将被编译成模块

Obj-$(CONFIG_DEMO) += demo.o

目前的情况:

img

修改与新建目录同级Kconfig

添加一行,为的是:将新建目录下的Kconfig文件添加到配置搜寻目录中

source "drivers/demo/Kconfig"

修改与新建目录同级Makefile

添加一行,为的是使用配置项来管理是否需要编译demo目录下的代码

obj-$(CONFIG_DEMO) += demo/

目前的情况:

img

img

最终的效果:

img

posted @ 2019-12-23 11:59  schips  阅读(1337)  评论(1编辑  收藏  举报