前言

最近在板子上调试的时候用到Lvgl,这里记录一下把Lvgl V8.1移植到linux上的过程

一、准备工作

  • 准备好所用板子的交叉编译环境
  • 带LCD的linux开发板,调通LCD驱动
  • Lvgl源码
    在github上搜索Lvgl https://github.com/lvgl ,找到以下仓库并下载:
  • Lvgl (下载lvgl-release-v8.1 )
  • lv_demos (下载lv_demos-release-v8.1)
  • lv_drivers (下载lv_drivers-release-v8.1)
  • lv_port_linux_frame_buffer (下载lv_port_linux_frame_buffer-release-v8.2)

(需要说明的是,一开始下的是master分支的最新代码,但是编译的时候发现lv_disp_drv_t没有定义(error: unknown type name ‘lv_disp_drv_t’),看了下其他版本的源码,是在lvgl\src\hal\lv_hal_disp.h下定义的,但是下载的lvgl源码里并没有找到相关的文件和定义,于是就下载最新的release版本 lvgl-release-v8.1)

二、开始移植

1.在Ubuntu下创建目录lvgl_demo_test并移入相应的文件

  • 把lvgl-release-v8.1复制进文件夹lvgl_demo_test,重命名为lvgl;
  • 把lv_drivers-release-v8.1复制进文件夹lvgl_demo_test,重命名为lv_drivers;
  • 把lv_demos-release-v8.1复制进文件夹lvgl_demo_test,重命名为lv_demo;
  • 从lvgl中复制lv_conf_template.hlvgl_demo_test,并重命名为lv_conf.h
  • 从lv_drivers中复制lv_drv_conf_template.h到lvgl_demo_test,并重命名为lv_drv_conf.h
  • 从lv_demo中复制lv_demo_conf_template.h到lvgl_demo_test,并重命名为lv_demo_conf.h
  • 从lv_port_linux_frame_buffer-release-v8.2中复制main.cMakefile到lvgl_demo_test下

2.修改配置文件

修改lv_conf.h

改成#if 1使能头文件的内容
在这里插入图片描述
根据驱动(可在设备树中查看)选择像素点对应像素格式的大小,否则显示可能乱码
在这里插入图片描述
修改显存大小
在这里插入图片描述
修改刷新周期,根据所用处理器的性能调整
在这里插入图片描述
设置Tick定时器配置函数
在这里插入图片描述
使能用到的字体,不然编译会提示未定义
在这里插入图片描述
如果需要查看log,使能LV_USE_LOG,设置打印的log等级并选择打印Log的接口
在这里插入图片描述

修改lv_drv_conf.h

改成#if 1 使能头文件的内容:
在这里插入图片描述
使能LCD显示:使能USE_FBDEV,路径设置成/dev/fb0,根据板子LCD的实际情况设置
在这里插入图片描述
使能触摸屏输入:
在这里插入图片描述
在这里插入图片描述

修改lv_demo_conf.h

改成#if 1 使能头文件的内容
在这里插入图片描述
使能要移植的demo,这里使能的是LV_USE_DEMO_WIDGETS
在这里插入图片描述

2.修改main.c

设置正确的lv_demo.h头文件路径
在这里插入图片描述
设置DISP_BUF_SIZE
在这里插入图片描述
根据LCD像素尺寸修改驱动参数,我使用的屏幕是800*480像素的
在这里插入图片描述
当前没有使用到鼠标,注释掉相关代码
在这里插入图片描述
lv_demo_widgets()是所移植的demo的入口
在这里插入图片描述

3.修改Makefile

配置交叉编译器
在这里插入图片描述
编入lv_demo
mouse没用到,注释掉
在这里插入图片描述
我用的编译器版本不支持 -Wshift-negative-value这个参数,在Makefle里去掉了

三、编译运行

  • 编译
    在lv_demo_test目录下,输入make即可编译,编译后在当前目录下生成可执行文件demo
  • 运行
    把demo复制到开发板上,输入./demo即可运行
    在这里插入图片描述
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐