设备树问题排除
使用原始构建目录重试一次
重要的
在做其他事情之前,先尝试这个。
例如,请参见原始构建,或者只是完全删除构建目录,然后重试。
这是一般的建议,特别适用于调试设备树的问题,因为输出是在CMake配置阶段创建的,并且在其输入发生变化时并不总是重新生成。
确保 包含<devicetree.h>头文件
与Kconfig符号不同,必须显式地将devicetree.h头文件包含在内。
许多Zephyr头文件依赖于来自设备树的信息,所以包含一些其他API可能会过渡地包含devicetree.h,但这是不能保证的。
确保您使用了正确的名称
记住:
- 在C/C++中,设备树名称必须小写字体,特殊字符必须转换为下划线。Zephyr生成的设备树头以这种方式将DTS名称转换为基于预处理器的<devicetree.h> API。
- 在覆盖文件中,使用设备节点和属性名称在任何DTS文件中显示的方式。Zephyr覆盖层只是DTS片段。
例如,如果您试图在C/C++文件中获取具有路径/soc/i2c@12340000
的节点的clock-frequency
属性:
/*
* foo.c: lowercase-and-undersc