节点(node)是用来描述Zephyr电路板里设备(device)的,设备有一系列特性(property),比如 status、compatible、reg等,下面是一个例子:
radio: radio@40001000 {
compatible = "nordic,nrf-radio";
reg = <0x40001000 0x1000>;
interrupts = <1 NRF_DEFAULT_IRQ_PRIORITY>;
status = "okay";
};
在Zephyr 3.2 之前 label是一个property,比如花括号里的 “CLOCK”作为label的值,展示一个人类可读的名字。但是Zephyr又有一个node label 的语法,用来引用一个node,比如下例第一行的小写clock,它通过一个冒号接着指向的node。
clock: clock@40000000 {
compatible = "nordic,nrf-clock";
reg = <0x40000000 0x1000>;
interrupts = <0 NRF_DEFAULT_IRQ_PRIORITY>;
status = "okay";
label = "CLOCK";
};
但是从Zephyr 3.2 之后,label property 被弃用。这样学习使用node label时不会与label property 混淆,真是一件大快人心的事。
前面讲了定义一个node label 的方法,要想引用这个被node label标识的node,只要用 &加上node label 字串就可以了。
uart0: uart@40002000 {
/* uart can be either UART or UARTE, for the user to pick */
/* compatible = "nordic,nrf-uarte" or "nordic,nrf-uart"; */
compatible = "nordic,nrf-uarte";
reg = <0x40002000 0x1000>;
interrupts = <2 NRF_DEFAULT_IRQ_PRIORITY>;
status = "disabled";
label = "UART_0";
};
上面定义了一个 node,其node label是uart0 , &uart0 表示引用上面定义的node。下面指向的是同一个uart,增加了一些property的描述。
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
tx-pin = <6>;
rx-pin = <8>;
rx-pull-up;
rts-pin = <5>;
cts-pin = <7>;
cts-pull-up;
};
需要说明的是我这个例子是从3.2 之前的代码里摘取出来的,里面还有label property。新版本的代码我还没有。
Zephyr 3.2 弃用devicetree 中node 里的label property
版权声明:本文为brooknew原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。