You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Zephyr设备树:如何获取phandles指向的phandle类型属性的子属性值

Zephyr设备树:如何获取phandles指向的phandle类型属性的子属性值

在我的Zephyr DTS绑定中,有一个带有指定兼容性的节点,我们称之为my_compatibility,它有一个可选的phandles类型属性,名为things,最多允许包含两个元素。

在驱动代码中,我可以构建一个该树节点的叶子值数组;例如,我可以为所有兼容节点创建一个数组,包含thingsflibble字符串属性的值(如果不存在则为NULL),代码如下:

#define GET_THINGS_LIST(i, name) {DT_PROP_BY_PHANDLE_IDX_OR(i, things, 0, name, NULL),  \
                                  DT_PROP_BY_PHANDLE_IDX_OR(i, things, 1, name, NULL)},

static const char *const leafValueFlibble[][2] = {
    DT_FOREACH_STATUS_OKAY_VARGS(my_compatibility, GET_THINGS_LIST, flibble)
};

这样管理起来很方便,这是一个可以在C语言中直接使用的有序列表。

不过,现在我需要让flibble成为phandle类型的属性。我该如何扩展上面的宏,以便仍然能够获取树的叶子值,也就是为所有兼容节点创建数组,包含flibble指向的节点中指定属性的值(如果不存在则用NULL/-1/某个已知值来保持顺序)?

备注:内容来源于stack exchange,提问作者Rob

火山引擎 最新活动