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

文章参考:https://gitee.com/socbis/linux-lvgl

lvgl on linux Frame buffer

主机环境: Ubuntu 18.04

lvgl 8.0.1

获取源码并运行demo

  1. 获取源码

    需要3样东西来构建demo :

    1. lvgl核心控件库: 从此处获取源码 lvgl,选择版本 Release v8.0.1.

    2. 显示和触摸接口层 : 关联图形库与硬件,源码 lv_drivers,选择版本 v8.0.

    3. lv_demo 源码 : 源码 lv_demos, 同样选择版本 v8.0.

      最终得到三个压缩包:

    • lvgl-8.0.1.tar.gz
    • lv_drivers-release-v8.0.zip
    • lv_demos-release-v8.0.zip
  2. 创建文件夹并解压源码:

    sh 复制代码
     mkdir lvgl_linux
     cd lvgl_linux
     # 复制上述压缩包到此处 .
    
     # 解压
     tar xvf lvgl-8.0.1.tar.gz
     unzip lv_drivers-release-v8.0.zip
     unzip lv_demos-release-v8.0.zip
    
     # 重命名解压后的文件夹
     mv lvgl-8.0.1 lvgl
     mv lv_drivers-release-v8.0 lv_drivers
     mv lv_demos-release-v8.0 lv_demos
    
     # delete zip tar
     rm lv_drivers-release-v8.0.zip lv_demos-release-v8.0.zip lvgl-8.0.1.tar.gz
    
     ls
     lv_demos  lv_drivers  lvgl
  3. 获取配置文件

    • 核心库配置文件 : lv_conf.h

    • 驱动配置文件 : lv_drv_conf.h

    • demo配置文件 : lv_demo_conf.h

      sh 复制代码
      # 基于配置模板创建
      cp lvgl/lv_conf_template.h lv_conf.h
      cp lv_drivers/lv_drv_conf_template.h lv_drv_conf.h
      cp lv_demos/lv_demo_conf_template.h lv_demo_conf.h
      
      ls
      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

      c 复制代码
        #  define USE_FBDEV           1
        #  define USE_EVDEV           1
    • 修改 lv_demo_conf.h :

      c 复制代码
        #define LV_USE_DEMO_WIDGETS        1
    • 修改 lv_conf.h :

      配置 Tick interface

      c 复制代码
        #define LV_TICK_CUSTOM     1
        #if LV_TICK_CUSTOM
        #define LV_TICK_CUSTOM_INCLUDE  <stdint.h>         /*Header for the system time function*/
        extern uint32_t custom_tick_get(void);
        #define LV_TICK_CUSTOM_SYS_TIME_EXPR (custom_tick_get())     /*Expression evaluating to current system time in ms*/
        #endif   /*LV_TICK_CUSTOM*/

      使能 12,16 号字体:

      c 复制代码
        #define LV_FONT_MONTSERRAT_12    1
        #define LV_FONT_MONTSERRAT_14    1
        #define LV_FONT_MONTSERRAT_16    1

      设置堆大小:

      • 使用 lvgl 内建内存分配方案: 配置堆大小,实测 2KB 无法启动demo,我给 2MB

        c 复制代码
          #  define LV_MEM_SIZE    (2 * 1024U * 1024U)          /*[bytes]*/
      • 使用 linux 系统内存分配:使能宏 #define LV_MEM_CUSTOM 1 即可

  1. 编写主程序和Makefile

    main.c 参考自 lv_port_linux_frame_buffer/blob/release/v8.2/main.c

    main.c 中修改 lv_demo.h 路径:

    c 复制代码
     #include "lv_demos/lv_demo.h"

    Makefile 参考自 lv_port_linux_frame_buffer/blob/release/v8.2/Makefile

    复制代码
     同时还要把Makefile同级目录下的mouse_cursor_icon.c复制过来

    Makefile 做如下修改:

    makefile 复制代码
     CC = arm-linux-gnueabihf-gcc
    
     include $(LVGL_DIR)/lv_demos/lv_demo.mk
    
     CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
  2. make 生成 demo

  3. 参考官方的文档手册操作让其在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 发布!

相关推荐
软件开发技术深度爱好者1 天前
浅论虚荣心
随笔·学习心得
软件开发技术深度爱好者6 天前
排中律和反证法的关系
随笔·数学广角·科普向未来
软件开发技术深度爱好者8 天前
谈谈矛盾律和排中律中的“矛盾”
随笔·学习心得·科普向未来
软件开发技术深度爱好者18 天前
如何识破一本正经的胡说乱象
随笔·学习心得·科普向未来
AomanHao3 个月前
【随笔】十年之约,不止约定十年
随笔
躺柒3 个月前
2025年总结及2026年目标之关键字【保持】
读书笔记·个人总结·随笔·年度总结·目标·工作总结·未来计划
躺柒3 个月前
2025年12月总结及随笔之海市蜃楼
人工智能·程序人生·读书笔记·个人总结·随笔
林立可4 个月前
合马番外篇——黄山游踪
游记·随笔·马拉松
1LOVESJohnny4 个月前
随笔 | 写在十一月的最后一天
随笔
AomanHao4 个月前
【随笔】CIY68-DIY机械键盘维修小记
计算机外设·随笔·机械键盘