Kernel配置
BSP 独立仓库方案下,内核配置应通过 Longan 构建系统管理。不要直接在 kernel/linux-5.15 中执行传统的 make menuconfig,否则可能修改到构建系统不使用的 .config。
打开配置界面
cd <ANDROID_TOP>/longan
./build.sh menuconfig
查找配置项
在 menuconfig 中按 /,输入关键字或 CONFIG_ 宏。例如查找 UART:
SERIAL_SUNXI
SUNXI_UART
8250
搜索结果会显示:
- 配置项路径。
- 当前值。
- 依赖条件。
- 被哪个选项选择。
若配置项不可选,先检查依赖项,而不是直接手改 defconfig。
保存配置
./build.sh saveconfig
部分 SDK 支持指定文件:
./build.sh saveconfig bsp_defconfig
保存后确认实际修改位置:
git status --short
find device/config/chips/t527 bsp/configs/linux-5.15 \
-type f -name '*defconfig' -mmin -10 -print
加载指定配置
./build.sh loadconfig <defconfig名称或路径>
./build.sh menuconfig
./build.sh saveconfig <defconfig名称或路径>
不要把 out/.../kernel/build/.config 直接复制为 defconfig。完整 .config 和精简 defconfig 的语义不同,直接复制容易把临时依赖和自动选择项带入方案配置。
检查最终.config
find out -type f -path '*/kernel/build/.config' -print
grep -n '^CONFIG_SERIAL_SUNXI=' \
out/t527/<BOARD>/kernel/build/.config 2>/dev/null
若路径不同:
CONFIG_FILE=$(find out -type f -path '*/kernel/build/.config' | head -1)
echo "$CONFIG_FILE"
grep -n 'CONFIG_<目标宏>' "$CONFIG_FILE"
常见状态:
CONFIG_XXX=y # 编译进内核
CONFIG_XXX=m # 编译成模块
# CONFIG_XXX is not set
配置与DTS的关系
一个硬件功能正常工作通常需要同时满足:
驱动源码存在
+
Kconfig已启用
+
Makefile已编译
+
设备树节点已启用且参数正确
+
硬件连接与供电正常
只打开 menuconfig 而没有启用 DTS,或者只修改 DTS 而驱动未编译,设备都不会正常 probe。
编译确认
./build.sh kernel 2>&1 | tee /tmp/t527-kernel-build.log
检查驱动是否参与编译:
grep -i '<驱动文件名或模块名>' /tmp/t527-kernel-build.log
find out -type f -name '<模块名>.ko' -print
内建驱动没有 .ko,应通过 .config、vmlinux 符号和启动日志确认。