假设我们写好了驱动程序:xxx.c,并且可以正常运行(驱动的init match probe等等都OK)
先看一下将驱动编译进内核的情况,主要关注以下几个文件:
驱动文件夹下的Makefile里有一句:
obj-$(CONFIG_XXX) += xxx.o
驱动文件夹下的Kconfig(如我的是Kconfig.x86)有:
config XXX
bool "ABCD"
depens on YYYY
help
...
arch/x86/configs/kkkk_defconfig里有一句:
CONFIG_XXX=y
(这里等号两边不要留空格)
接下来将驱动编译成module:
Makefile不变
将Kconfig中的改为:
config XXX
tristate "ABCD"
depends on YYYY
help
...
defconfig中的改为:
CONFIG_XXX=m
编译成功后,在目录android/out/target/product/YOUR_IMAGE_NAME/obj/kernel/目录下可以找到编译完成的module。
系统启动后,用adb查看/system/lib/modules/目录,也可以找到对应的module。
现在我们的系统中已经包含了该driver,只不过是以moudle的形式存在,接下来要做的工作就是利用脚本将该module在系统启动的时候insmod。关于系统启动时脚本的调用还有待研究……
时间: 2024-11-08 17:52:17