【正点原子i.MX93开发板】测评 + 七、设备树文件编译和更新
[复制链接]
本帖最后由 御坂10032号 于 2025-3-21 01:44 编辑
简介
在Linux开发中, 可能一个SOC会被不用的厂商所使用, 而不同的厂商会用相同的SOC来构建自己的开发板。 设备树文件是为了描述当前开发板的具体的资源信息。 类似其他开发板厂商提供的BSP(Board support package 板级支持包), 我们可以使用厂商提供的BSP来快速的实现对应的功能。 在Linux开发中也是类似的操作。在早期的Linux 开发中,所有的设备树文件都被提交到了Linux内核中。所有的厂商都按照自己的BSP来提交对应的类设备树文件到Linux源码中,造成了大量的冗余代码。 因此在Linux的版本更新之后,Linux内核应该只负责系统方向的调度信息等。 而不是应该将类设备树文件糅杂在一起。 因此设备树诞生了,设备树通常被用来描述板载器件功能的描述信息。
板级支持的描述部分
在设备树诞生后, 部分的Linux内核部分类BSP部分相关的描述文件被从内核中抽离了出来。如下图所示
~/file/linux-6.1.55-v1.0/arch/arm64/boot/dts/freescale 路径下的设备树文件
其中设备树文件后缀为DTS, 而编译后的设备树文件为DTB, 将DTS编译成DTB的工具是DTC。
通常设备树文件都存在设备树的基树, 其余的衍生设备树都需要继承于这棵基树进行编写。这块IMX93的设备树的基树是: imx93-11x11-atk.dtb 同样位于上文的~/file/linux-6.1.55-v1.0/arch/arm64/boot/dts/freescale 目录下。
其他的一些设备树有
- imx93-11x11-atk-mipi-dsi-5.5-720x1280.dtb
- imx93-11x11-atk-mipi-dsi-5.5-1080x1920.dtb
- imx93-11x11-atk-mipi-dsi-10.1-800x1280.dtb
- imx93-11x11-atk-lvds-10.1-1280x800.dtb
这些树分别是控制DSI显示5.5寸 720* 1280的设备树和5.5寸 1080 * 1920的设备树、10.1寸 800* 1280的设备树 和 LVDS屏幕10.1寸的1280* 800的设备树, 上述的设备树都依赖于基树。
上图为IM93的设备树基树文件
如果我们按照官方文档来编译设备树的话如下所示
其编译设备树之前我们需要先初始化当前的环境变量。
接着来初始化默认的编译配置
不过这里官方没有介绍的一点是:make 的这个命令实际上是应用了 linux目录下的/arch/arm64/configs/imx_v8_defconfig 如下图所示
接下来我们执行命令来编译设备树的基树
- make freescale/imx93-11x11-atk.dtb
如上图所示记录了一次对设备树基树的编译过程, 其中编译后的设备树的生成目录为arch/arm64/boot/dts/freescale/ 。 可以从上文观察到,第一次编译的时候并没有被DTC编译, 这是因为在对应的设备树文件夹内已经存在了一个设备树的编译文件(DTB), 所以我们使用命令把它删除掉之后,我们才可以重新来编译一个新的设备树。如果对原本的设备树文件进行了变更, 那么并不需要删除原有的设备树。对应的DTB文件会自动更新。
接着我们使用SSH连接到开发板,来查找开发板的设备树文件
从上图中我们可以看到对应的设备树文件在/run/media/mmcblk0p1目录下。
我们首先对原本的设备树文件进行备份,然后使用FTP工具对原本的设备树进行覆盖
接着重启开发板,此时便完成了设备树的更新!
|