写 android 驱动 的基本功就是把自己driver如何在kernel 中编译,下面将以led驱动为例
1.定义使用的deconfig
代码路径:
kernel/arch/arm64/configs/xxxxx_defconfig
CONFIG_XX_YY=y
y 编译到内核
m 编译成ko文件
2.驱动上级目录中的配置
代码路径:
drivers/soc/Makefile
obj-$(CONFIG_XX_YY) += led/
代码路径:
drivers/soc/Kconfig
source "drivers/soc/led/Kconfig"
3. 驱动本层目录中的配置
代码路径:
drivers/soc/led/Kconfig
config XX_YY
tristate:"led driver"
default y
---help---
If you want to use leddriver, say Y or M here.
If unsure, say N.
代码路径:
drivers/soc/led/Makefile
obj-$(CONFIG_XX_YY) +=led.o
下面是 Kconfig 中 depends 和 select 的含义
在Kconfig文件中:
config A
depends on B
select C
它的含义是:CONFIG_A配置与否,取决于CONFIG_B是否配置。一旦CONFIG_A配置了,CONFIG_C也自动配置了。