赞
踩
为便于说明,此处以字符设备驱动my_led.c
为例,需要复制到~/linux-3.4.2/drivers/char
(此处假设内核源码目录linux-3.4.2位于用户家目录)。
cp my_led.c ~/linux-3.4.2/drivers/char
# 位于~/linux-3.4.2/drivers/char
vim Makefile
在文件顶端或尾端添加如下语句,添加自己编写的目标文件my_led.o:
obj-$(CONFIG_MY_LED) += my_led.o //需要通过用户自定义配置时
或者采用
obj-y += my_led.o //不需要通过用户配置,必须编译进内核
打开Kconfig
# 位于~/linux-3.4.2/drivers/char
vim Kconfig
在文件顶端或尾端添加如下语句,以后在执行menuconfig
时可以在相应菜单中找到"My led driver support"选项,其作用就是确定(配置)CONFIG_MY_LED的值(y、m、n):
config MY_LED
tristate "My led driver support"
default n
help
If you want to add LED function
say Y or M here, otherwise say N
当然你也可以选择bool类型(y或n),更加详细的语法可以参考内核文档,内核文档位置位于内核根目录下的/Documentation/kbuild/kconfig_language.txt
:
export ARCH=arm //设置目标板架构为ARM,否则生成的目标文件将不被目标板识别
export CROSS_COMPILE=arm-linux- //设置交叉编译工具链前缀
export PATH=$PATH:/usr/local/arm/4.3.2/bin //添加交叉编译工具链所在bin目录
make menuconfig
,进入图形化配置界面:一般进入图形化配置界面前,首先会执行某开发板特定的或者近似的默认配置文件,这些配置文件存放于内核的arch/arm/configs/
文件夹下。
s3c2410_deconfig
最为相似,则可以执行make s3c2410_deconfig
。其作用就是将s3c2410_deconfig
文件重新复制一份,并命名为.config
后移动到内核顶层目录下。此后,进行内核编译时,就以此文件内容决定将哪些模块编译进内核,哪些模块编译为模块,哪些不需要编译。进入图形化配置界面,查验是否存在MY_LED的配置菜单项:
执行make menuconfig
进入配置界面
执行/MY_LED
,查看我们添加的菜单项位置
可以看到,我们添加的菜单项已经成功添加,此后可以像内核其它模块一样选择编译类型
.config
文件中。mg-YkNQ4PAl-1662479891610)]
- 保存退出后,我们刚才的选择结果保存于顶层目录下的`.config`文件中。
![image-20220906223143427](https://img-blog.csdnimg.cn/img_convert/fd8d16280231b0be0084408caa564b4c.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。