Linux下将驱动编译进内核 |
您所在的位置:网站首页 › 模块编译进内核 › Linux下将驱动编译进内核 |
在开发的过程中,一般都是将驱动编译成模块,然后将其发送到开发板加载驱动进行功能验证,驱动的功能验证没有问题后就可以将其编译进内核了。本文将介绍如何把上一篇文章Linux下设备树、pinctrl和gpio子系统、LED灯驱动实验中的LED驱动编译到内核。 首先在Linux内核的/drivers/目录下创建一个文件夹,用来存放自定义的驱动文件,我这里新建的文件夹是/mydrivers,其绝对路径是/…/…/drivers/,然后将要编译进内核的c代码(这里以uart_led.c为例)拷贝到/mydrivers文件夹下。 在/mydrivers文件夹下创建一个名为Kconfig的文件,在Kconfig文件中键入如下内容。 config UART_LED tristate "uart_led" help This module will be compiled into kernel and light the uart led.UART_LED和Makefile中引用的要保持一致,Makefile中会在前面加上CONFIG_。 tristate可以把驱动编译成3种状态,即编译进内核、不编译进内核、编译成模块。如果是bool关键字,则不能编译成模块。 help是帮助信息,下面的一句话就是帮助信息的内容。 同样地,在/mydrivers文件夹下创建一个名为Makefile的文件,在Makefile文件中键入如下内容。 obj-$(CONFIG_UART_LED)+=uart_led.oUART_LED要和Kconfig中的保持一致,uart_led.o这里的名字和.c文件的命名要一致。 接下来进入到上一级目录,也就是/drivers/目录下,打开Kconfig文件,在里面添加下面的代码。 source "drivers/mydrivers/Kconfig"上面的代码表示把自己创建的Kconfig文件链接到内核中已经有的,指明了Kconfig的路径,这样内核就可以一层一层的编译到我们自己创建的。 打开/drivers/目录下的Makefile文件,在里面添加下面的代码。 obj-y += mydrivers/这里添加的是自定义文件夹的名字,不要少了最后的“/”,表示把这个文件夹编译进内核。 当然也可以将.c文件拷贝到/drivers/下的某个文件夹中,比如字符文件夹/char目录下,然后就不用再新建Kconfig和Makefile文件,直接在/char下的Kconfig和Makefile文件中追加内容就可以了。 /CONFIG_UART_LED 如下图,新添加的这个设备=y就说明成功将这个驱动添加到内核中了。 make zImage -j16 -j参数是为了加快编译的速度,zImage编译完成后如下图所示。 本文参考文章: 通俗易懂:把驱动编译进内核 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |