前面使用设备树的形式让硬件参数从内核中分离,实现解耦,修改硬件参数,只需编译设备树,已经比较高效了,但在调试阶段,比如内核正在运行,可以使用插件实现动态加载

编写设备树插件ovelay.dts,以下是两种常用编写方式,分别按照路径和别名的形式找到节点myled

添加子节点overlay_node

/dts-v1/;
/plugin/;

&{/quan/myled}{
    overlay_node{
        status = "okay";
    };
};

&myled{
    overlay_node{
        status = "okay";
    };
};
 

编译并反编译之后得到新的两种写法

//编译
/home/linux/sambashare/linux-kernel/linux-6.17.5/scripts/dtc/dtc -I dts -O dtb -o overlay.dtbo overlay.dts

//反编译
/home/linux/sambashare/linux-kernel/linux-6.17.5/scripts/dtc/dtc -I dtb -O dts -o overlay_.dts overlay.dtbo

verlay_.dts

/dts-v1/;

/ {

	fragment@0 {
		target-path = "/quan/myled";

		__overlay__ {

			overlay_node {
				status = "okay";
			};
		};
	};

	fragment@1 {
		target = <0xffffffff>;

		__overlay__ {

			overlay_node {
				status = "okay";
			};
		};
	};

	__fixups__ {
		myled = "/fragment@1:target:0";
	};
};

修改overlay.dts,至此,我们得到了四种编写方法

/dts-v1/;
/plugin/;

&{/quan/myled}{
    overlay_node{
        status = "okay";
    };
};

&myled{
    overlay_node{
        status = "okay";
    };
};
 
/ {

	fragment@0 {
		target-path = "/quan/myled";

		__overlay__ {

			overlay_node {
				status = "okay";
			};
		};
	};

	fragment@1 {
		target = <&myled>;

		__overlay__ {

			overlay_node {
				status = "okay";
			};
		};
	};
};

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐