修改设备树与内核配置

Linux 板级设备树

最新硬件使用:

kernel/arch/arm/boot/dts/sun8i-v3s-strongpi-spinand.dts

常见修改包括:

  • 启用或关闭外设节点
  • 修改 GPIO、I2C 地址和中断
  • 修改 NAND 分区
  • 调整触摸方向
  • 修改背光 PWM 参数

编辑完成后只编译设备树:

cd ~/v3s-workspace/kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- \
    sun8i-v3s-strongpi-spinand.dtb

产物位于:

arch/arm/boot/dts/sun8i-v3s-strongpi-spinand.dtb

TF 卡启动时,将它复制到第一个分区并命名为:

sun8i-v3s-strongpi.dtb

NAND 启动时写入:

xfel spinand write 0x100000 sun8i-v3s-strongpi-spinand.dtb

修改内核配置

载入板级默认配置:

cd ~/v3s-workspace/kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- strongpi_nand_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

配置保存后编译:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- \
    -j"$(nproc)" zImage dtbs modules

驱动选择:

  • y:驱动编入 zImage,启动早期即可使用。
  • m:生成 .ko 模块,需要安装到根文件系统并由系统加载。
  • n:不编译该功能。

安装模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- \
    INSTALL_MOD_PATH="$HOME/v3s-workspace/strongpi-v3s-support/rootfs_overlay" \
    modules_install

随后重新编译 Buildroot 根文件系统。

连续内存配置

摄像头或其他需要大块 DMA 缓冲区的驱动可能依赖 CMA。设备树已经声明 linux,cma-default 时,内核还需要启用:

CONFIG_CMA=y

V3S 的 64MiB DDR 地址范围为 0x400000000x44000000。CMA 的 reg 起始地址和长度必须完全落在该范围内;默认设备树使用 0x43000000 起始的 16MiB 区域。启动日志出现 reserved mem ... compatible matching fail 时,应检查 CONFIG_CMA 和预留区域是否越过 DDR 边界。