Linux内核--Makefile和kconfig详细关系
Makefile和kconfig 语法与关系kconfig用法kconfig是可以menuconfig识别,专门从其中提取配置菜单项,用于添加到内核配置项目中
关键字如下:
123456789101112131415161718menuconfig:表示菜单。后面接在菜单中显示的选项名一般用大写说明,需要与Makefile文件中名称对应source:加载子kconfig,该目录下含有子目录,在子目录中也有kconfig文件,必须用source。tristate:变量值,表示可以设置3种状态,(对应Y、N、M三种选择方式)。bool:变量值,和tristate类似,但只可以选择两种状态(对应Y和N)。string:变量值,表示字符串。depends:该配置项必须依赖某个配置项,依赖的配置项必须为Y或者M状态,如果是N状态,则不会在menu菜单中显示。select:表示depends on的值有效时,select 修饰的配置项也会成立。default:接三种状态,表示默认处于修饰的状态,特殊情况会伴随条件。help:自己写的帮助描述信息,以“.”结束。
案例分析
1234567891011 ...
Linux驱动--GPIO驱动编写
Linux 驱动编写GPIO驱动编写
头文件
123456#include <linux/module.h>#include <linux/init.h>#include <linux/of.h>#include <linux/of_gpio.h>#include <linux/platform_device.h>#include <dt-bindings/gpio/gpio.h>
module.h :驱动必须加载头文件,动态加载到内核init.h : 模块的初始化的宏定义 以及一些其他函数的初始化函数,可以使用module_initof.h ,of_gpio.h:设备树相关头文件,含有对设备数操作函数platform_device.h:抽象平台设备,用于内核抽象匹配写的驱动
函数解析
加载和卸载驱动
module_init()module_exit()
这两个函数分别在加载和卸载驱动时被调用。流程如下insmod -> init_module -> module_init;rmmod ...