最简单的驱动程序

简介

在 Linux 内核中,Makefile 和 Kconfig 是两个重要的文件,它们分别承担着不同的作用。

Makefile

Makefile 是一个文本文件,用于定义编译和构建内核的规则。它使用 make 工具来管理和自动化构建过程。Makefile 定义了编译器、链接器、编译选项、目标文件、源文件等信息,以及构建不同配置的内核所需的规则。通过执行 make 命令,可以根据 Makefile 中的规则,自动执行编译、链接和安装等操作,生成可执行的内核映像文件。

Makefile 还允许用户自定义构建选项和调整内核配置。通过修改 Makefile,可以指定编译器选项、优化级别、链接选项等,以满足特定的需求。Makefile 还提供了一些常用的目标,如编译内核模块、安装内核等,简化了构建和安装的流程。

Kconfig

Kconfig 是内核源代码树中的一个配置系统,用于管理和配置内核的编译选项。它提供了一种交互式的配置界面,允许用户选择和配置内核选项,以定制构建出的内核映像。Kconfig 文件位于内核源代码树的顶层目录下,并通过菜单和菜单项的方式组织配置选项。

Kconfig 文件中的每个配置选项都有一个唯一的标识符和名称,并由其所对应的 C 语言宏定义来表示。通过使用配置界面工具,如 make menuconfigmake xconfig,用户可以浏览和修改 Kconfig 文件中的选项,并根据需求进行配置选择。

Kconfig 不仅用于配置编译选项,还用于启用或禁用不同的内核功能、设备驱动、文件系统等。它提供了一个灵活的配置系统,可以根据特定的硬件平台或用户需求进行定制化配置,从而生成适合特定环境的内核映像。

总结起来,Makefile 和 Kconfig 在 Linux 内核中分别负责构建规则和配置选项的管理。Makefile 管理编译和构建过程,而 Kconfig 管理内核的配置选项和功能。它们共同协作,使得 Linux 内核具有高度的可定制性和灵活性。

环境

操作环境: Ubuntu20.04

内核源码: linux-6.6版本,官网下载

下载之后,把linux-6.6.tar.xz解压到Ubuntu中任意目录即可,例如:解压到~/linux-test/目录下:

编译进内核

驱动程序目录

linux 中的驱动,一般都放在 linux-6.6/drivers/ 目录下,因此在这个目录中创建一个hello文件夹。

$ mkdir linux-6.6/drivers/hello

对于一个驱动来说,最重要的就是3个文件:

源代码

Kconfig

Makefile

只要按照固定的格式来编写这3个文件,linux内核的编译脚本就可以确保把我们的驱动程序编译进去。

源文件

首先是源码,在hello文件夹中创建源文件 hello.c:

$ cd linux-6.6/drivers/hello

$ touch hello.c

源文件hello.c的内容是:

#include 
#include 

// 当驱动被加载的时

你可能感兴趣的:(驱动开发,驱动开发)