构建过程中出现 'undefined reference to '__device_dts_ord_58'' 错误通常意味着链接器无法找到某个符号的定义,该符号可能与设备树 (Device Tree) 中的节点有关。

解决步骤:

  1. 检查设备树文件: 确保设备树文件中正确定义了 'imu' 设备节点,并且该节点包含了必要的属性信息,例如 interrupt-parentgpio-controller
  2. 验证库文件: 确保所有必要的库文件都被正确地添加到项目中。您可以检查 CMakeLists.txt 文件,确保包含了所有相关的库。
  3. 检查代码: 仔细检查代码,确保 'imu' 设备节点的名称和属性与代码中的引用一致。
  4. 重新构建项目: 在进行任何修改后,请重新构建项目,以确保更改生效。

示例代码:

#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>

const struct device *imu_dev;

void main(void)
{
  imu_dev = device_get_binding('imu');
  if (imu_dev == NULL) {
    // 处理错误
  }

  // 使用 imu_dev 访问 IMU 传感器
}

示例设备树:

&imu {
  compatible = "st,lis3dh";
  interrupt-parent = &gpio_controller;
  interrupt-names = "int1";
  interrupt-gpios = <&gpio_controller 13 GPIO_ACTIVE_HIGH>;
  // 其他属性
};

注意:

  • 如果您使用的是定制的设备树文件,请确保该文件被正确地包含在项目中。
  • 'imu' 设备节点的名称和属性可能因您的特定硬件而异,请根据实际情况进行调整。

其他可能的原因:

  • 错误的设备树编译: 确保设备树文件被正确地编译成 dtsi 文件。
  • 缺少依赖项: 确保项目包含了所有必要的依赖项,例如 'sensor' 库。
  • Zephyr 版本问题: 尝试使用不同的 Zephyr 版本进行构建。

如果问题仍然存在,请提供更多错误信息和项目配置,以便更准确地定位问题。

Zephyr 构建错误: undefined reference to '__device_dts_ord_58' - ESP32C3

原文地址: https://www.cveoy.top/t/topic/oIdm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录