Linux将驱动编译进内核

        在学习过程中,一般是把驱动编译成模块加载。但一个完整的项目通常需要内核自动去加载,本篇文章介绍一下如何将驱动编译进内核。

        我们在编译内核源码时通常要先配置一下内核,用make menuconfig,可以看到像是一个菜单,我们可以配置有关内核的可选项,这是因为make menuconfig会读取名为Kconfig的文件来列出所有的配置选项。可以发现内核源码的几乎每个子目录中都有一个名为Kconfig的文件,这个文件负责配置驱动在配置菜单中的显示以及配置行为,且Kconfig遵循特定的语法。

        同时,我们可以发现每个子目录中同样也有个Makefile文件,Makefile文件也会递归调用子目录中的Makefile,执行各目录的编译并链接。

        将驱动编译进内核的步骤:

        1、将驱动源文件放在内核对应目录中,一般的驱动文件放在drivers目录下,字符设备放在drivers/char中,块设备就放在drivers/blok中。如果需要添加多个驱动,则可以自己创建一个目录。

        2、遵循Kconfig的语法,如果创建了目录,则在目录下编写Kconfig与Makefile,并且在此目录的上级目录的Kconfig与Makefile中调用自己编写的这两个文件。如果只有一个驱动文件,就直接在当前目录中修改Kconfig与Makefile。

        3、执行make menuconfig配置自己添加的选项,make。

示例:

        需要添加的源代码为字符设备驱动,名为test.c,新建一个目录test。

        1、在内核源码的drivers/char中新建test目录。

        2、在drivers/char/test目录下编写Kconfig文件:

config TEST
    bool "cdev test"
    default n
    help
        this is a test

        config条目就是具体的配置项,.config 文件中的“CONFIG_xxx” (xxx 就是
具体的配置项名字)就是 Kconfig 文件中 config 关键字后面的配置项名字加上“CONFIG_”前
缀。
        bool代表CONFIG_TEST这个变量有两种值: y 和 n,当为 y 的时候表示使能这个配置项,当为 n 的时候就禁止这个配置项。
        default n表示这个选项默认是禁止的。

        help表示帮助信息,告诉我们配置项的含义,当我们按下“h”或“?”弹出来的
帮助界面就是 help 的内容。
        3、在drivers/char目录下的Kconfig文件中添加  source "drivers/char/test/Kconfig"

        source表示调用此路径的Kconfig文件。

        4、在drivers/char/test目录下编写Makefile文件:

obj-$(CONFIG_TEST) += test.o

         表示如果CONFIG_TEST变量为y,则将此目录下的test.c编译成test.o

        5、在drivers/char目录下的Makefile文件中添加

obj-$(CONFIG_TEST)         += test/

         表示如果CONFIG_TEST变量为y,test/Makefile就会被调用。

        6、在make menuconfig中选中,进入目录选项Device Driver --> Character devices

找到 cdev test 选项按y选中,然后编译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值