2025年3月16日 星期日 甲辰(龙)年 月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

Device Tree Overlays:”插件“设备树

时间:11-21来源:作者:点击数:17
城东书院 www.cdsy.xyz

本文介绍了设备树的概念,包括传统设备树的批量管理硬件资源方式及其局限性,然后详细阐述了"插件"设备树的模块化管理方式,它允许更灵活的硬件资源定制。使用"插件"设备树需要内核配置支持,并通过挂载ConfigFS进行管理。以案例展示了如何创建和使用设备树及"插件"设备树,并提供了编译和加载设备树的步骤。此外,还提到了在U-Boot中加载设备树的方法。

Device Tree Overlays:”插件“设备树

传统设备树

批量管理硬件资源,机制僵化

”插件“设备树

模块化管理硬件资源,灵活定制

使用前提
  • 内核配置
    • CONFIG_OF_OVERLAY = y
    • CONFIG_OF_CONFIGFS = y
  • 挂载ConfigFS
    • mount x /sys/kernel/config -t configfs
案例说明
设备树:foo.dts
  • / {
  • compatible = "corp,foo";
  • /* On chip peripherals */
  • ocp: ocp {
  • /* peripherals that are always instantiated */
  • peripheral1 { ... };
  • }
  • };
“插件”设备树:bar.dts
  • /dts-v1/;
  • /plugin/;
  • / {
  • ....
  • fragment@0
  • {
  • target = <&ocp>;
  • __overlay__
  • {
  • bar
  • {
  • compatible = "corp,bar";
  • }
  • };
  • };
  • };
  • /dts-v1/ :指定dts版本号
  • /plugin/:允许设备树中引用未定义的节点
  • target = <&xxx>:指定"插件"设备树的父节点
  • target-path = “xxx”:指定"插件"设备树的父节点路径
设备树+“插件设备树”:foo.dts + bar.dts
  • / {
  • compatible = "corp,foo";
  • res: res {
  • };
  • ocp: ocp {
  • peripheral1 { ... };
  • bar {
  • compatible = "corp,bar";
  • }
  • }
  • };
编译方式
  • ./scripts/dtc/dtc -I dts -O dtb -o xxx.dtbo arch/arm/boot/dts/xxx.dts // 编译 dts 为 dtbo
  • ./scripts/dtc/dtc -I dtb -O dts -o xxx.dts arch/arm/boot/dts/xxx.dtbo // 反编译 dtbo 为 dts
APT下载dtc工具
  • sudo apt install device-tree-compiler
使用方式
内核运行状态加载(通用)
  1. 在/sys/kernel/config/device-tree/overlays/下创建一个新目录:
    • mkdir /sys/kernel/config/device-tree/overlays/xxx
  2. 将dtbo固件echo到path属性文件中
    • echo xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/path
    或者将dtbo的内容cat到dtbo属性文件
    • cat xxx.dtbo >/sys/kernel/config/device-tree/overlays/xxx/dtbo
  3. 节点将被创建,查看内核设备树
    • ls /proc/device-tree
  4. 删除"插件"设备树
    • rmdir /sys/kernel/config/device-tree/overlays/xxx
uboot加载(野火linux开发板)

修改/boot/uEnv.txt

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐