You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

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

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

在驱动代码中,我可以构建一个该树节点的叶子值数组;例如,我可以为所有兼容节点创建一个数组,包含things中flibble字符串属性的值(如果不存在则为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:44:29