You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto Kirkstone构建STM32MP1时出现of_find_mipi_dsi_device_by_node未定义引用错误

问题:STM32MP1开发板Yocto Kirkstone构建内核时出现链接错误

环境信息

  • 硬件:STM32MP1开发板(型号:emsbc-argon)
  • Yocto版本:Kirkstone(DISTRO_CODENAME="kirkstone")
  • 构建配置:
Build Configuration:
BB_VERSION           = "2.0.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "arm-emt_eglfs-linux-gnueabi"
MACHINE              = "emsbc-argon"
DISTRO               = "emt-eglfs"
DISTRO_VERSION       = "1.3"
TUNE_FEATURES        = "arm vfp cortexa7 neon vfpv4 thumb callconvention-hard"
TARGET_FPU           = "hard"
DISTRO_CODENAME      = "kirkstone"
ACCEPT_EULA_emsbc-argon = "1"
GCCVERSION           = "11.%"
PREFERRED_PROVIDER_virtual/kernel = "linux-stm32mp-argon"
meta-emtrion-emsbc-argon = "HEAD:7c4912ff0cecc10281ca52a18402d0a29d9ad6ec"
meta-emtrion         = "HEAD:254f385f1d5b8deb0723a0dc4fdb996dd64661b1"  
meta                 = "HEAD:f7766da462905ec67bf549d46b8017be36cd5b2a"
meta-oe              
meta-initramfs       
meta-multimedia      
meta-python          
meta-networking      
meta-webserver       
meta-filesystems     
meta-perl            = "HEAD:05dcac98473402d87e0af73bbc2c5a6a840abe93"
meta-qt5             = "HEAD:5b71df60e523423b9df6793de9387f87a149ac42"
meta-st-stm32mp      = "HEAD:ca501bd7dbe023682903ceedddaacd940b0898f4"
meta-st-openstlinux  = "HEAD:cb736b403d0fef2a02390695613b6b4bb13ca1b7"
meta-gnome           
meta-xfce            = "HEAD:05dcac98473402d87e0af73bbc2c5a6a840abe93"

错误信息

构建自定义配方m4examples.bb时出现以下内核链接错误:

ld: drivers/input/touchscreen/edt-ft5x06.o: in function `edt_ft5x06_ts_probe':
| edt-ft5x06.c:(.text+0x15a4): undefined reference to `of_find_mipi_dsi_device_by_node'
| make[1]: *** [/home/hico/work/emtrion-beta-test/build-argon/tmp-glibc/work-shared/emsbc-argon/kernel-source/Makefile:1080: vmlinux] Error 1
| make: *** [/home/hico/work/emtrion-beta-test/build-argon/tmp-glibc/work-shared/emsbc-argon/kernel-source/Makefile:179: sub-make] Error 2
| ERROR: oe_runmake failed

解决思路

1. 启用内核MIPI DSI相关配置

of_find_mipi_dsi_device_by_node是MIPI DSI子系统的API,需确保内核配置中开启对应选项:

  • 执行bitbake -c menuconfig virtual/kernel进入内核配置界面
  • 找到并启用CONFIG_DRM_MIPI_DSI(路径:Device Drivers > Graphics support > DRM support > MIPI DSI support)
  • 若edt-ft5x06驱动依赖其他MIPI相关模块,同步开启对应配置

2. 检查驱动编译配置

  • 确认edt-ft5x06驱动的Makefile中包含正确编译规则,如obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o
  • 检查驱动源码是否包含必要头文件:#include <drm/mipi_dsi.h>,确保API声明被正确引入

3. 校验内核源码一致性

  • 确认linux-stm32mp-argon内核版本与meta层(如meta-st-stm32mp)版本匹配,避免因API变更导致函数缺失
  • 若有自定义内核补丁,检查是否误删了MIPI DSI子系统的函数实现代码

4. 排除自定义配方干扰

  • 检查m4examples.bb是否修改了内核编译参数(如CFLAGS/LDFLAGS)或内核配置,这类修改可能破坏链接流程
  • 尝试单独构建内核:执行bitbake virtual/kernel -c clean && bitbake virtual/kernel,若仍报错则问题与配方无关,需聚焦内核本身排查

内容的提问来源于stack exchange,提问作者radium88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:37:34