向内核设备树添加新UART传感器遇DTS编译错误求助
解决STM32MP13 UART8子节点DTS编译错误
首先你提供的DTS代码存在语法错误,这是编译失败的直接原因:
sensor节点内的status = "okay"行末尾缺少分号sensor节点末尾缺少分号
修正后的DTS代码如下:
&uart8 { pinctrl-names = "default", "sleep", "idle"; pinctrl-0 = <&uart8_pins_a>; pinctrl-1 = <&uart8_sleep_pins_a>; pinctrl-2 = <&uart8_idle_pins_a>; /delete-property/dmas; /delete-property/dma-names; status = "okay"; sensor: sensor@0 { compatible = "vendor,sensor"; status = "okay"; current-speed = <115200>; }; };
除语法问题外,还需排查以下关键点:
- 引脚配置节点有效性:确认
uart8_pins_a、uart8_sleep_pins_a、uart8_idle_pins_a这些引脚节点在STM32MP13官方DTSI文件(如stm32mp13xx-pinctrl.dtsi)中存在,若不存在需自行定义正确的引脚复用配置。 - compatible字符串匹配:内核驱动的
of_match_table必须与DTS中的"vendor,sensor"完全一致(包括大小写、格式),否则驱动无法识别设备节点。 - Yocto构建配置:确保修改的DTS文件是Yocto构建流程中加载的目标文件,比如确认在
meta-st-stm32mp层对应板卡的配置中已指定该DTS,或自定义DTS已正确添加到构建项。 - 属性合法性:检查
current-speed是否是你的传感器驱动支持的属性,部分UART子设备可能使用baud-rate而非current-speed,需根据驱动逻辑调整。
内容的提问来源于stack exchange,提问作者KD47
相关产品推荐
相关产品推荐

