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




