首页 > 系统相关 >通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示

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

时间:2024-05-21 13:20:06浏览次数:14  
标签:buffer demo 虚拟机 lv v8.0 conf linux lvgl

文章参考: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. 创建文件夹并解压源码:

    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
    # 基于配置模板创建
    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

      #  define USE_FBDEV           1
      #  define USE_EVDEV           1
      
    • 修改 lv_demo_conf.h :

      #define LV_USE_DEMO_WIDGETS        1
      
    • 修改 lv_conf.h :

      配置 Tick interface

      #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 号字体:

      #define LV_FONT_MONTSERRAT_12    1
      #define LV_FONT_MONTSERRAT_14    1
      #define LV_FONT_MONTSERRAT_16    1
      

      设置堆大小:

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

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

  4. 编写主程序和Makefile

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

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

    #include "lv_demos/lv_demo.h"
    

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

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

    Makefile 做如下修改:

    CC = arm-linux-gnueabihf-gcc
    
    include $(LVGL_DIR)/lv_demos/lv_demo.mk
    
    CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
    
  5. make 生成 demo

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

标签:buffer,demo,虚拟机,lv,v8.0,conf,linux,lvgl
From: https://www.cnblogs.com/xjxcxjx/p/18203775

相关文章

  • jmeter分布式压测(Linux版本)
    1、安装JDK并配置环境变量(此处不再赘述)2、将Jmeter上传到任意目录解压(此处不再赘述)3、配置环境变量vi/etc/profile将光标移动到最底部,插入下面的内容,exportJMETER_HOME=/home/apache-jmeter-5.1.1  #jmeter的安装目录exportCLASSPATH=$JMETER_HOME/lib/ext/ApacheJMet......
  • Linux如何给自己发邮件?
    该功能在一些定时任务报警中经常会使用到,比较实用,类似的还有发送微信消息等方式,通知给运维人员一些信息。本文以centos7.6为例1、安装mail软件CentOS/RHEL系统yum-yinstallmailxDebian/Ubuntu系统:aptinstallmailutils2、配置mail文件将以下内容添加在配置文件最下端set......
  • linux实现namespace间通信
    一目的linux实现两个namespace间通信 二操作1.逻辑①创建两个namespace②创建一对网络接口③给每个namespace分配网络接口④每个namespace设置ip,激活网卡⑤测试两个namespace能否通信  三资料Networknamespace是linux内核提供的用于实现网络虚拟化的重要......
  • windows cmd拉取linux文件夹下的文件,并解压
    前言:nginx静态文件从linux文件夹下拉取,然后放到windows下,并且解压 需要安装putty,用pscp命令del-pull.bat文件,负责删除本地文件夹下所有文件,并且拉取数据@echooffsetlocalsetFOLDER_PATH=C:\Users\admin\Desktop\yaya_nginx\web\echoDeletingfilesinfolder...rm......
  • 关于Linux OpenSSH登录的问题
    OpenSSH由7.6升级到8.2和9.0之后用密码登录登不上去了,提供以下思路:1、7.6之前的版本SSH启动路径为/usr/local/sbin/sshd,7.6之后的版本启动路径为/usr/sbin/sshd,控制启动文件为vi/etc/rc.d/init.d/sshd 2、检查SSH服务的配置文件 /etc/ssh/sshd_config。确保没有设置 Passwo......
  • Linux 中 如何判断每一行的数据都是相同的
     001、Linux中如何判断每一行的数据都是相同的 [root@PC1test2]#lsa.txt[root@PC1test2]#cata.txt##测试数据aabbccaabbccaabbccaakkccaabbccaabbcc[root@PC1test2......
  • linux配置 CentOS安装
    CentOS7安装安装镜像安装镜像完成、配置网卡find/-nameifcfg-ens33找到ifcfg-ens33文件配置ip配置动态ip修改ONBOOT=YES此时为自动获取ip配置静态ip需要在底下添加四行重启网络systemctlrestartnetwork,此时可以ping通外部网络安装图形化界面yumgrou......
  • linux用户组相关操作
    建新用户adduserusername//新建用户passwdusername//给user设置密码建工作组groupaddtest//建立test工作组新建用户的同时增加工作组useradd-gtestusername//新建user并添加到test组给已有用户增加工作组usermod-Ggroupnameusername或者gpasswd-ausergro......
  • linux 数据库安装配置
    如果有原来的数据库,需要先卸载摘自https://blog.csdn.net/weixin_50367873/article/details/134551859,本文通过yum安装mysql,如需离线安装mysql,查看原文1.检查是否有mariadb存在,centos默认自带 psajx|grepmariadb查找是否存在 systemctlstopmariadb.service停止服务......
  • [转帖]Linux内存管理基本概念
    最近在学习Linux系统的内存管理,小白一枚,零散从网上收集的一些笔记如下:/proc目录提供了很多工具给我们查看当前内存情况1./proc/meminfo是什么$cat/proc/meminfoMemTotal:2052440kB//总内存MemFree:50004kB//空闲内存Buffers:19976kB/......