设备树的语法

设备树源文件也是需要根据一定规则来编写的,同C语言一样,也要遵循一些语法规则。
1、节点格式
label:node-name@unit-address
label:标号
node-name:节点名称
unit-address:单元地址

label是标号,可以忽略。label的作用是为了方便地引用node。

/{
	uart0:uart@FE001000{
		compatible="ns16550"
		reg=<0xFE001000 0x100>
	};
};

可以使用下面 2 种方法来修改 uart@fe001000 这个 node:

&uart0{
	status = "disabled";
};
/* or */
&{/uart@FE001000} {
	status = "disabled";
}

2、属性格式
简单地说, properties 就是“name=value”, value 有多种取值方式。
一个32位的数据,用尖括号包围起来:
interrupts = <17 0xc>;
一个64位数据(使用2个32位数据表示),用尖括号包围起来:
clock-frequency = <0x00000001 0x00000000>;
有结束符的字符串,用双引号包围起来:
compatible = “simple-bus”;
字节序列,用中括号包围起来,如:
local-mac-address = [00 00 12 34 56 78];
local-mac-address = [000012345678];
可以是各种值的组合,用逗号隔开
compatible = “ns16550”, “ns8250”;
example = <0xf00f0000 19>, “a strange property format”;

3、一些标准属性
(1) compatible 属性
“compatible”表示“兼容”,对于某个LED,内核中可能有A、B、C三个驱动都支持它,那可以这样写:
led {
compatible = “A”, “B”, “C”;
};
内核启动时,就会为这个LED按这样的优先顺序为它找到驱动程序:A、B、C。
(2)model 属性
model属性与compatible属性有些类似,但是有差别。compatible属性是一个字符串列表,表示可以你的硬件兼容A、B、C等驱动;model用来准确地定义这个硬件是什么。比如根节点中可以这样写:

/ {
compatible = “samsung,smdk2440”, “samsung,mini2440”;
model = “jz2440_v3”;
};
它表示这个单板,可以兼容内核中的“smdk2440”,也兼容“mini2440”。从compatible属性中可以知道它兼容哪些板,但是它到底是什么板?用model属性来明确。
status 属性看名字就知道是和设备状态有关的, status 属性值也是字符串,字符串是设备的状态信息,可选的状态如下所示:

valuedescribe
“okey”“表明设备是可操作的”
“disabled”“表明设备当前是不可操作的,但是在未来可以变为可操作的,比如比如热插拔设备插入以后。至于disabled的具体含义还要看设备的绑定文档”
“fail”“表明设备不可操作,设备检测到了一系列的错误,而且设备也不大可能变得可操作”
“fail-sss”含义和"fail"相同,后面的sss部分是检测到的错误内容
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值