ST意法半导体
直播中

最强海贼王

9年用户 1456经验值
擅长:MEMS/传感技术
私信 关注
[问答]

使用STM32MP135x-DK进行lvgl9.1,编译时出现报错怎么解决?

  使用STM32MP135x-DK进行lvgl9.1,显示屏设备节点使用的/dev/dri/card0
LV_USE_LINUX_FBDEV         0

LV_USE_LINUX_DRM        1
但是在编译时出现如下报错,但是在st sdk里面是能找到drm.h的
dx@dx:~/STM32MPU_workspace/Developer-Package/my_workspace/lv_port_linux/build$ source $HOME/STM32MPU_workspace/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabidx@dx:~/STM32MPU_workspace/Developer-Package/my_workspace/lv_port_linux/build$ make[  0%] Building C object lvgl/CMakeFiles/lvgl.dir/src/drivers/display/drm/lv_linux_drm.c.oIn file included from /home/dx/STM32MPU_workspace/Developer-Package/my_workspace/lv_port_linux/lvgl/src/drivers/display/drm/lv_linux_drm.c:21:/home/dx/STM32MPU_workspace/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/include/xf86drm.h:40:10: fatal error: drm.h: No such file or directory   40 | #include       |          ^~~~~~~compilation terminated.make[2]: *** [lvgl/CMakeFiles/lvgl.dir/build.make:1530: lvgl/CMakeFiles/lvgl.dir/src/drivers/display/drm/lv_linux_drm.c.o] Error 1make[1]: *** [CMakeFiles/Makefile2:162: lvgl/CMakeFiles/lvgl.dir/all] Error 2make: *** [Makefile:136: all] Error 2

回帖(1)

张敏

2025-3-17 17:35:43

针对在STM32MP135x-DK上编译LVGL 9.1时遇到的DRM头文件缺失问题,以下是逐步解决方案:




1. 验证SDK环境配置




  • 确认环境变量生效

    执行以下命令,检查SDK的环境变量是否包含DRM头文件路径:


    echo $CFLAGS
    echo $LDFLAGS

    如果输出中未包含/usr/include/libdrm或相关路径,需手动添加。




  • 手动指定头文件路径

    在编译命令或Makefile中显式添加DRM头文件路径:


    CFLAGS += -I$SDK_SYSROOT/usr/include/libdrm





2. 检查LVGL配置



  • 确保正确启用DRM

    lv_conf.h中确认以下配置:
    #define LV_USE_LINUX_DRM 1
    #define LV_LINUX_DRM_CARD "/dev/dri/card0"  // 根据实际设备节点调整
    #define LV_USE_LINUX_FBDEV 0               // 禁用FBDEV避免冲突




3. 检查依赖库链接




  • 确认libdrm链接

    在编译命令或Makefile中添加-ldrm链接选项:


    LDFLAGS += -ldrm



  • 验证SDK中的libdrm库

    检查SDK的库路径(如$SDK_SYSROOT/usr/lib)是否存在libdrm.so






4. 手动指定交叉编译参数


如果环境变量未正确传递,在CMake或Makefile中显式设置路径:


CFLAGS="-I$SDK_SYSROOT/usr/include/libdrm" 
LDFLAGS="-L$SDK_SYSROOT/usr/lib -ldrm"
make



5. 检查内核DRM驱动支持



  • 确认内核配置

    确保内核已启用DRM支持及STM32 LTDC驱动:
    CONFIG_DRM=y
    CONFIG_DRM_STM=y
    CONFIG_DRM_STM_LTDC=y




6. 示例编译命令


完整编译命令示例:


source $HOME/STM32MPU_workspace/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

cd ~/STM32MPU_workspace/Developer-Package/my_workspace/lv_port_linux/build

CFLAGS="-I$OECORE_TARGET_SYSROOT/usr/include/libdrm"
LDFLAGS="-ldrm"
cmake .. -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake

make



7. 其他调试步骤



  • 查看详细编译日志

    make命令后添加VERBOSE=1查看详细编译过程。

  • 检查SDK版本兼容性

    确认LVGL 9.1与当前SDK中的DRM库版本兼容。




如果问题仍未解决,建议查阅LVGL官方论坛或提交Issue,附上完整编译日志及环境配置细节。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分