OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4961|回复: 7

关于设备树address-cells和size-cells的理解

[复制链接]

13

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2016-4-20
在线时间
162 小时
发表于 2020-2-22 09:51:54 | 显示全部楼层 |阅读模式
本帖最后由 hannuaa 于 2020-2-22 12:26 编辑

设备树address-cells和size-cells的是对应的是子节点,而不是当前节点的地址及长度。
左神的视频讲解中,一直将address-cells和size-cells对应当前节点,似乎有点问题?

比如,imx6ull.dtsi中:
i2c1: i2c@021a0000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
                reg = <0x021a0000 0x4000>;
                interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clks IMX6UL_CLK_I2C1>;
                status = "disabled";
            };



左神认为address-cells = <1>size-cells = <0>,因此reg=<0x021a0000 0x4000>是错误的。
个人感觉不能这么理解。标号i2c1中的reg应该受父节点address-cells和size-cells的控制,其父节点如下:
aips1: aips-bus@02000000 {
            compatible = "fsl,aips-bus", "simple-bus";
            #address-cells = <1>;
            #size-cells = <1>;
            reg = <0x02000000 0x100000>;
            ranges;


因此,对于i2c标号,这么写是对的。

那么对于led驱动试验视频中,alphaled节点下的reg的写法没有问题,但是讲解似乎有不严谨了。因为alphaled节点下的reg应该受父节点(即根节点的控制),根节点的address-cells = <1>size-cells = <1>,恰好和视频中alphaled节点下的address-cells和size-cells一致而已。

以上纯属个人理解,不知对不对,求探讨?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-2-22 10:04:42 | 显示全部楼层
#address-cells和#size-cells [32bit无符号整数]
                        可以用在任何有子节点的设备节点中,描述子节点的地址信息.#address-cells决定子节点的reg属性中地址信息占的字长(即几个32bit),#size-cells决定子节点的reg属性中长度信息占的字长(即几个32bit).#address-cells和#size-cells决定了子节点的reg属性该怎么写.reg属性和地址有关,和地址有关的只有起始地址和地址长度,所以reg属性一般为reg=<address1 lenght1 address2 lenght2...>;

以上是教程中的解释,
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

13

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
351
金钱
351
注册时间
2016-4-20
在线时间
162 小时
 楼主| 发表于 2020-2-22 10:10:03 | 显示全部楼层
我是针对左神视频中的讲解
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-2-22 11:08:15 | 显示全部楼层
“设备树中的address-cells和size-cells的是对应的是子节点,而不是当前节点的地址及长度” 楼主说的这个是对的,可能左神搞混了!
森罗万象
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-2-22 15:10:23 | 显示全部楼层
hannuaa 发表于 2020-2-22 10:10
我是针对左神视频中的讲解

你说的多,视频里面是讲错了,这个已经有朋友指出来了。后续修改一下视频,加注释
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-11-20
在线时间
32 小时
发表于 2020-2-23 01:28:19 | 显示全部楼层
这两行实际上没起作用。

7.1讲

7.1讲
回复 支持 反对

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2020-9-5 13:45:58 | 显示全部楼层
原来是教程有误,还有个问题,对于led驱动试验视频中,alphaled节点下的reg应该受根节点控制,但是根节点中也没有address-cells属性啊 那alphaled节点下的reg的长度如何算呢~~~
回复 支持 反对

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2020-9-5 14:09:09 | 显示全部楼层
zuozhongkai 发表于 2020-2-22 15:10
你说的多,视频里面是讲错了,这个已经有朋友指出来了。后续修改一下视频,加注释

大神 看你视频里代码对齐一行一行移动太累了,
先选中代码,shift+tab左移
tab右移
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 17:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表