找回密码
 立即注册
首页 业界区 安全 通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buff ...

通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示

殷罗绮 2025-6-8 12:18:55
文章参考:https://gitee.com/socbis/linux-lvgl
lvgl on linux Frame buffer

主机环境: Ubuntu 18.04
lvgl 8.0.1
获取源码并运行demo


  • 获取源码
    需要3样东西来构建demo :

    • lvgl核心控件库: 从此处获取源码 lvgl,选择版本 Release v8.0.1.
    • 显示和触摸接口层 : 关联图形库与硬件,源码 lv_drivers,选择版本 v8.0.
    • lv_demo 源码 : 源码 lv_demos, 同样选择版本 v8.0.
    最终得到三个压缩包:

    • lvgl-8.0.1.tar.gz
    • lv_drivers-release-v8.0.zip
    • lv_demos-release-v8.0.zip

  • 创建文件夹并解压源码:
    1. mkdir lvgl_linux
    2. cd lvgl_linux
    3. # 复制上述压缩包到此处 .
    4. # 解压
    5. tar xvf lvgl-8.0.1.tar.gz
    6. unzip lv_drivers-release-v8.0.zip
    7. unzip lv_demos-release-v8.0.zip
    8. # 重命名解压后的文件夹
    9. mv lvgl-8.0.1 lvgl
    10. mv lv_drivers-release-v8.0 lv_drivers
    11. mv lv_demos-release-v8.0 lv_demos
    12. # delete zip tar
    13. rm lv_drivers-release-v8.0.zip lv_demos-release-v8.0.zip lvgl-8.0.1.tar.gz
    14. ls
    15. lv_demos  lv_drivers  lvgl
    复制代码
  • 获取配置文件

    • 核心库配置文件 : lv_conf.h
    • 驱动配置文件 : lv_drv_conf.h
    • demo配置文件 : lv_demo_conf.h
    1. # 基于配置模板创建
    2. cp lvgl/lv_conf_template.h lv_conf.h
    3. cp lv_drivers/lv_drv_conf_template.h lv_drv_conf.h
    4. cp lv_demos/lv_demo_conf_template.h lv_demo_conf.h
    5. ls
    6. lv_conf.h  lv_demo_conf.h  lv_demos  lv_drivers  lv_drv_conf.h  lvgl
    复制代码
    修改配置文件:

    • 使能,将3个文件 #if 0 改为 #if 1 /*Set it to "1" to enable content*/
    • 修改 lv_drv_conf.h:
      1. #  define USE_FBDEV           1
      2. #  define USE_EVDEV           1
      复制代码
    • 修改 lv_demo_conf.h :
      1. #define LV_USE_DEMO_WIDGETS        1
      复制代码
    • 修改 lv_conf.h :
      配置 Tick interface :
      1. #define LV_TICK_CUSTOM     1
      2. #if LV_TICK_CUSTOM
      3. #define LV_TICK_CUSTOM_INCLUDE  <stdint.h>         /*Header for the system time function*/
      4. extern uint32_t custom_tick_get(void);
      5. #define LV_TICK_CUSTOM_SYS_TIME_EXPR (custom_tick_get())     /*Expression evaluating to current system time in ms*/
      6. #endif   /*LV_TICK_CUSTOM*/
      复制代码
      使能 12,16 号字体:
      1. #define LV_FONT_MONTSERRAT_12    1
      2. #define LV_FONT_MONTSERRAT_14    1
      3. #define LV_FONT_MONTSERRAT_16    1
      复制代码
      设置堆大小:

      • 使用 lvgl 内建内存分配方案:
        配置堆大小,实测 2KB 无法启动demo,我给 2MB
        1. #  define LV_MEM_SIZE    (2 * 1024U * 1024U)          /*[bytes]*/
        复制代码
      • 使用 linux 系统内存分配:使能宏 #define LV_MEM_CUSTOM      1 即可


  • 编写主程序和Makefile
    main.c 参考自 lv_port_linux_frame_buffer/blob/release/v8.2/main.c
    main.c 中修改 lv_demo.h 路径:
    1. #include "lv_demos/lv_demo.h"
    复制代码
    Makefile 参考自 lv_port_linux_frame_buffer/blob/release/v8.2/Makefile
    1. 同时还要把Makefile同级目录下的mouse_cursor_icon.c复制过来
    复制代码
    Makefile 做如下修改:
    1. CC = arm-linux-gnueabihf-gcc
    2. include $(LVGL_DIR)/lv_demos/lv_demo.mk
    3. CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
    复制代码
  • make 生成 demo
  • 参考官方的文档手册操作让其在Ubuntu上能显示:https://blog.lvgl.io/2018-01-03/linux_fb
    1、Ctrl + Alt + F6切换TTF(也有可能是Ctrl + Alt + F1 /Ctrl + Alt + F4等,切换不了就多试下)
    2、sudo su切换用户
    3、service lightdm stop
    4、./demo,即可看到官方demo了(只能看,不能操作,鼠标看不到,需要再研究下)
    5、service lightdm start即可切换回linux桌面ttf
本文由博客一文多发平台 OpenWrite 发布!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册