内核模块
-
modules.order文件
内核编译完成之后会在内核根目录下生成
modules.order文件,记录了各个ko文件的路径。 -
modules.builtin文件
modules.builtin文件记录了原来可以编译成模块的配置,现在编译进了内核。专门给外部用户态工具(如modprobe、depmod)看的一份“已内置模块花名册”。它保证了即使你把驱动编进内核,用户态的热插拔和加载机制依然能“假装”找到了这个模块,从而顺畅执行后续流程。 -
ko文件生成和复制流程
-
内核配置文件将一个配置设置成模块
-
在驱动文件对应的目录生成
ko文件比如:
/kernel/drivers/media/i2c/gc2145.c /kernel/drivers/media/i2c/gc2145.ko如果配置文件的配置是y,那么生成的就是.o文件用于链接
-
sysdrv/Makefile中
ko文件复制/sysdrv/out ↓ /output/out/sysdrv_out/kernel_drv_ko ↓ /output/out/oem/usr/ko ↓ /oem/usr/ko/ ← 最终部署位置 -
insmod_ko.sh脚本
`drv_ko/insmod_ko.sh` ↓ `drv_ko/out/` ↓ `output/out/sysdrv_out/kernel_drv_ko/` ↓ `oem/usr/ko/` ↓ 板子 `/oem/usr/ko/insmod_ko.sh`执行时机:
开机 → S20linkmount (挂载 oem 到 /oem) → S21appinit → RkLunch.sh → cd /oem/usr/ko && sh insmod_ko.sh
-