今天有人问了我一下ranges属性,找了相关资料确认后,记录一下:
参考资料链接:让你完全理解linux内核设备树ranges属性地址转换 - vkang - 博客园 (cnblogs.com)
ranges属性定义如下:
ranges = < local_address parent_address address_size
local_address parent_address address_size
local_address parent_address address_size
local_address parent_address address_size>
注:具体有多少行,根据实际情况来决定
下面已实际代码来分析:
设备树示例如下:
注:上面的设备树代码是随便找的。原理性是通用的。
通过代码示例,我们可以看到,ranges的每一行有7个数值,那么这7个数值是怎么对应的,对应关系如下:
所以解析ranges,需要考虑到的信息有:
#address-cells:本节点和父节点的值
#size-cells:本节点的值