Yocto Mickledore下STM32MP157D-DK1设备树补丁编译失败求助
解决STM32MP157D-DK1 Yocto Mickledore设备树补丁编译失败问题
核心问题排查与修复
1. 设备树补丁语法错误
你的补丁里存在明显笔误,这是导致编译失败的直接原因:
# 错误写法 pinctrl=names = "default", "sleep"; # 正确写法 pinctrl-names = "default", "sleep";
设备树语法严格,此类拼写错误会直接触发设备树编译失败。
2. 补丁路径配置错误
从目录结构看,补丁文件存放在${THISDIR}/linux-stm32mp1/下,但linux-stm32mp_%.bbappend中的FILESEXTRAPATHS仅指向${THISDIR},Yocto无法定位到补丁文件。可通过以下两种方式修正:
# 方法1:修正FILESEXTRAPATHS指向补丁所在子目录 FILESEXTRAPATHS:prepend := "${THISDIR}/linux-stm32mp1:" SRC_URI += "file://0001-add-i2c5-userspace-dts.patch" # 方法2:直接在SRC_URI中指定完整相对路径 FILESEXTRAPATHS:prepend := "${THISDIR}:" SRC_URI += "file://linux-stm32mp1/0001-add-i2c5-userspace-dts.patch"
3. 手动验证补丁兼容性
进入kernel临时编译目录(通常位于tmp/work-shared/stm32mp157d-dk1/kernel-source/),执行以下命令确认补丁可正常应用:
patch -p1 < /path/to/your/0001-add-i2c5-userspace-dts.patch
若出现冲突或报错,需重新基于当前kernel版本生成补丁。
4. 获取详细编译日志
执行以下命令查看具体编译错误信息,精准定位潜在问题:
bitbake linux-stm32mp -c compile -f -v
验证修复
修正上述问题后,重新执行编译命令:
bitbake custom-image
若修复正确,编译可正常完成。
内容的提问来源于stack exchange,提问作者R.Orteza
相关产品推荐
相关产品推荐

