跳到主要内容

Kernel 和设备树

Kernel defconfig​

建立 defconfig 文件

  1. 进入 arch/arm64/configs 目录,输入:

    cp m1000_generic_defconfig boardx_defconfig
  2. 修改 yocto meta 文件(meta/meta-m1000/recipes-kernel/linux/linux-mthreads_7.%.bbappend)中的 OPT_M1000_DEFCONFIG,以关联 kernel 和 boardx_defconfig,如图所示:

    E300 025 图示

修改 Kernel 配置单

在 yocto 环境下执行:

bitbake -c menuconfig linux-mthreads

按需求更改配置后,在 menuconfig 中选择 Save 保存并退出,然后执行:

bitbake -c savedefconfig linux-mthreads

该命令会将当前配置回写到 arch/arm64/configs/${KBUILD_DEFCONFIG}。若已按上一节将 OPT_M1000_DEFCONFIG 改为 boardx_defconfig,则保存到 boardx_defconfig。


设备树​

以下列出相关设备树文件(设备树源文件格式为 .dts,设备树包含文件格式为 .dtsi)

$ls arch/arm64/boot/dts/m1000/
m1000-main.dtsi m1000-aimodule.dts m1000-aimodule.dtsi
m1000-isp.dtsi m1000-videv.dtsi m1000-pmu.dtsi
m1000-smmu.dtsi

步骤 1:建立设备树文件​

  1. 进入 arch/arm64/boot/dts/m1000/目录,输入:
    cp m1000-aimodule.dts boardx.dts
    cp m1000-aimodule.dtsi boardx.dtsi
  2. 修改 Makefile 文件增加:
    dtb-$(CONFIG_ARCH_MT_M1000_SOC) += boardx.dtb

步骤 2:配置设备树​

MTT E300 的设备树文件分为 .dtsi(设备树包含文件)和 .dts(设备树源文件)两种。.dts 文件中 include 了 .dtsi 文件。其中主要的配置在 m1000-main.dtsi/m1000-aimodule.dts 文件中,管脚相关的配置在 m1000-aimodule.dtsi 等其他文件中。用户自己的设备树文件(如上一节中的 boardx.dts 文件)中应包含这两个文件,如下图所示:

E300 026 图示

一般情况下,用户无需修改 m1000-main.dtsi/m1000-aimodule.dtsi。如果确实需要修改其中的某个配置项,不建议直接修改该文件,而是在 m1000-aimodule.dts 文件中重新定义这个配置项。

步骤 3:编译设备树 dtb​

  1. 修改 yocto meta 文件(meta/meta-m1000/conf/machine/aimodule.conf)中的 OPT_KERNEL_DEVICETREE,以关联 kernel 和 boardx.dtb,如图所示:

    E300 027 图示

  2. 执行编译 kernel 命令即可同时生成 boardx.dtb