DIY:向内核添加自己的程序
A.在Linux内核中增加自己的程序步骤(注意这里只是程序文件):
1.将编写的源代码复制到Linux内核源代码的相应目录中。
2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项
3.在目录的Makefile文件中增加对新源代码的编译条目。
B.在Linux内核drivers/目录中增加目录和子目录步骤:
1.所加目录为daiq,文件如下:
[daiq@localhost daiq]$ tree
.
|-- Kconfig
|-- Makefile
|-- led
| |-- Kconfig
| |-- Makefile
| `-- led.c
`-- test.c
#注意此时各个目录中的Makefile和Kconfig文件是空的
2.在新增的相应目录添加Kconfig和Makefile文件,上面的目录中已经添加。
3.修改新增目录的父目录的Kconfig和Makefile文件,以便新增的Kconfig和
Makefile能被引用。向父目录中的Makefile添加:
obj-y += daiq/
表示在编译过程中包含子目录daiq目录。然后修改Kconfig文件,添加:
source “drivers/daiq/Kconfig”
表示在配置时引用子目录daiq中的配置文件Kconfig。
4.实际上,
要让drivers/daiq/Kconfig有效,要在arch/arm/Kconfig文件中添加:
source “drivers/daiq/Kconfig”
父目录drivers/Kconfig的修改可以不要。
5.经过上面一步,内核就可以找到所加的目录daiq了,然后就是编辑各个目录中的Makefile和Kconfig文件,在你添加的目录daiq中的Makefile加入:
obj-$(CONFIG_TEST) += test.o #因为在daiq目录中要编译test.c文件
#所以会根据CONFIG_TEST来决定编译选项
obj-y += led/#编译daiq目录中的子目录led
然后Kconfig文件是:
menu "DaiQ device support" #在make menuconfig时要显示的菜单入口
config DAIQ_TEST
bool "Test"
help
DaiQ device support
bool "Test"
help
DaiQ device support
source "drivers/daiq/led/Kconfig"
endmenu
注意:menu和endmenu的前后要加回车,不然make menuconfig的时候会出错。
再看led目录下的Makefile和Kconfig:
Makefile为文件:
obj-$(CONFIG_LED)+=led.o
Kconfig文件:
config LED
tristate “led support”
5.现在可以make menuconfig来配置添加自己目录daiq的驱动了!