这是本文档旧的修订版!


本文尚在完善中… —

一般设备树的编译是通过内核recipe来实现的,比如MP2目前是在: https://github.com/digi-embedded/meta-digi/blob/kirkstone/meta-digi-arm/recipes-kernel/linux/linux-dey_6.1.bb

我们一般无需更改或做一个bbapend,更方便的方法是,先手动在devshell里编译出设备树,然后在meta-custom中用文件系统复制的方式,把测试过的设备树复制到文件系统该有的位置。并通过UBoot的启动脚本在启动时加载特定设备树文件,从而让嵌入式系统镜像使用该设备树。

一般地,编译完任一个基础镜像后,在~/deyaio/dey4.0/workspace/ccmp25/tmp/work/ccmp25_dvk-dey-linux/linux-dey/6.1-r0/build/arch/arm64/boot/dts/digi中存放的是编译的结果。 而源码则位于:~/deyaio/dey4.0/workspace/ccmp25/tmp/work-shared/ccmp25-dvk/kernel-source/arch/arm64/boot/dts/digi

建议使用DEY AIO来进行系统开发,这部分包括了自定义的文件系统和自用板子设备树的实现。

在DEY AIO项目中,我们可以通过链接文件的方式,来把设备树项目用git的方式管理起来。比如,我们的deyaio目录是在~/deyaio,而我们开发的目录是~/github/dev/ccmp25_plc_dt,这里的ccmp25_plc_dt下的设备树文件用链接方式把设备树文件映射到DEY项目中。

第一步,利用DEY AIO工具编译一个基础镜像,比如core-image-base

第二步,创建git项目,将SmartIOMux导出的设备树文件重命名,比如ccmp257plc.dts,提交一份初始值:

git clone https://github.com/peyoot/ccmp25_dt.git
利用vscode之类编辑器远程创建或修改相关的设备树文件,比如命名为ccmp25-plc.dts,并定时保存工作

第三步:链接文件到digi的dts源码目录 cd tmp/work-shared/ccmp25-dvk/kernel-source/arch/arm64/boot/dts/digi ln -s ~/mygit/github/ccmp25_dt/ccmp25-plc.dts

第四步:回到项目文件夹编译 cd ../../../../../../../../.. 如果之前session已经发退出,可重新source一下 source dey-setup-environment bitbake -c compile devshell virtual/kernel 查一下文件是否在列 未完待续…

原始linux下的安装是在这里,我们仅需参考:

do_install:prepend:ccmp2() {
    if [ -d "${B}/arch/${ARCH}/boot/dts/digi" ]; then
        for dtbf in ${KERNEL_DEVICETREE}; do
            install -m 0644 "${B}/arch/${ARCH}/boot/dts/digi/${dtbf}" "${B}/arch/${ARCH}/boot/dts/"
        done
    fi
}