Devicetree 风格指南

  • 使用制表符缩进。

  • 制表符宽度为 8 个字符。

  • 遵循 Devicetree 规范的约定和规则。

  • 如果 Devicetree 源文件(DTS)编码风格 中的 Linux 内核规则给出了推荐做法,那么它在 Zephyr 中也是首选风格。

  • 如果有助于可读性,可以用一个空行(两个换行符)将相关的属性组分隔成“段落”。

  • 节点和属性名称使用短横线( - )作为单词分隔符。

  • 节点标签中使用下划线( _ )作为单词分隔符。

  • 属性定义中等号( = )两侧各留一个空格。

  • 不要在减少缩进的 }; 之前插入空行。

  • 在同一层级上插入一个空行来分隔节点。

  • 需要将较长的属性值拆分到多行时,第一个值应与左括号( < 或 [ )放在同一行。右括号和分号( >; 或 ]; )应放在属性最后一个值之后的同一行。

示例:

/dts-v1/;

/ {
	/* Node labels use the "_" separator, but node names use "-". */
	psa_rng: psa-rng {
		compatible = "zephyr,psa-crypto-rng";
		status = "okay";
	};

	ramdisk0 {
		compatible = "zephyr,ram-disk";
		/* Property names use the "-" separator. */
		disk-name = "RAM";
		sector-size = <512>;
		sector-count = <128>;
	};

	periph0 {
		/* Wrap array values to conform with line lengths. Indent
		 * continuation so that values align.
		 */
		pinctrl-0 = <&periph0_siga_px0_default &periph0_sigb_py7_default
			     &periph0_sigc_pz1_default>;
		pinctrl-names = "default";
	};

	mipi-dbi {
		compatible = "zephyr,mipi-dbi-spi";

		lcd0: lcd@0 {
			compatible = "sitronix,st7735r";
			/* Split array values across multiple lines to help readability. */
			gamctrp1 = [10 0e 02 03
				    0e 07 02 07
				    0a 12 27 37
				    00 0d 0e 10];
			gamctrn1 = [10 0e 03 03
				    0f 06 02 08
				    0a 13 26 36
				    00 0d 0e 10];
		};
	};
};