移植LVGL到Linux

前言

最近在板子上调试的时候用到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即可运行
    在这里插入图片描述
### 回答1: 嵌入式Linux移植LVGL的步骤如下: 1. 确认目标平台的处理器架构和操作系统版本,以及LVGL的版本和依赖库。 2. 下载LVGL源代码,并根据目标平台的处理器架构进行编译。 3. 根据目标平台的操作系统版本,修改LVGL的配置文件,包括屏幕分辨率、颜色深度、字体等。 4. 根据目标平台的硬件接口,编写驱动程序,包括屏幕驱动、输入设备驱动等。 5. 将LVGL的库文件和驱动程序集成到目标平台的文件系统中。 6. 在目标平台上运行测试程序,验证LVGL的功能和性能。 7. 根据实际需求,进行优化和定制化开发,以满足特定应用场景的需求。 以上是嵌入式Linux移植LVGL的基本步骤,需要根据具体情况进行调整和完善。 ### 回答2: 嵌入式Linux系统是一种常用的嵌入式系统,它具有可扩展性、灵活性、可靠性等优点。而LVGL是一种高性能、可定制的图形界面库,常被用于嵌入式Linux系统中,来提供用户友好、美观、易用的交互界面。因此,移植LVGL到嵌入式Linux系统中,已成为很多开发者的需求。以下是关于嵌入式Linux移植LVGL的一些指南: 1. 确认硬件平台 首先,需要确定嵌入式Linux系统所使用的硬件平台,包括处理器体系结构、SoC等。因为LVGL是一个跨平台的图形界面库,所以需要对其进行移植移植LVGL需要确保底层硬件的驱动已经完善,并经过了充分的测试和验证。 2. 安装必要的开发工具 在移植LVGL之前,需要安装必要的开发工具。首先,需要安装嵌入式Linux系统的开发环境,包括交叉编译工具链、调试器、开发板的bootloader等。其次,需要安装LVGL相关的开发工具,如GUI Builder、Font Converter等。 3. 下载LVGL源码并配置 下一步是下载LVGL源代码,然后配置工程。在配置工程时,需要在makefile中添加相关参数,如编译选项、链接选项等。还需要将LVGL与所使用的嵌入式Linux系统进行整合,以确保LVGL能够与系统完美地交互。 4. 编写应用程序 接下来,需要编写应用程序,以实现与LVGL的交互。开发人员可以使用现有的LVGL应用程序作为模板,然后进行修改和调整。在编写应用程序时,需要确保使用了正确的调用接口,以保证LVGL库能够正确地运行,并与所选择的硬件平台相匹配。 5. 测试与验证 一旦完成LVGL移植和应用程序开发,需要进行测试和验证。在进行系统测试时,需要关注系统的性能和稳定性。测试过程中需要注重测试用例,尽可能地涵盖各种情况,以确保系统的完整性和正确性。 综上所述,移植LVGL到嵌入式Linux系统中,需要开发人员具备一定的嵌入式开发经验和系统调试能力。需要注意移植过程中的细节问题,及时发现和解决问题,确保系统的稳定性和可靠性。 ### 回答3: 嵌入式Linux移植LVGL是一个相对复杂和庞大的工作,需要深入理解Linux系统、LVGL图形库以及嵌入式系统的相关知识和技术。 在移植过程中,可以按照以下步骤进行: 1. 安装交叉编译器 需要安装与目标硬件架构相对应的交叉编译器,以便在开发机上生成目标平台的可执行文件。可以选择使用已有的交叉编译器或自行编译交叉编译器。 2. 准备开发环境 需要配置和准备开发环境,包括交叉编译工具链、系统工具、库文件等。 3. 准备源代码 需要在Linux主机上下载LVGL的源代码和相关的依赖库代码,并进行适当的调试和修改。 4. 配置Makefile文件 需要根据硬件平台的不同,对Makefile文件进行相关配置,包括编译器路径、库文件路径、头文件路径等。 5. 编译和链接 使用Makefile文件进行编译和链接生成目标文件。 6. 运行测试 将生成的目标文件拷贝到目标嵌入式系统上,进行测试,并及时调整和修改。 除了以上步骤外,还需要注意以下几点: 1. 熟悉LVGL图形库的使用方法和API,以便在移植过程中进行相应的调整和修改。 2. 根据目标硬件平台的不同,需要针对硬件的特性进行相应的调整和优化。 3. 在移植过程中需要处理好库文件和头文件的依赖关系,防止出现链接或编译错误。 4. 要注意码大小和性能,针对不同的应用场景进行相应的优化。 综上所述,嵌入式Linux移植LVGL需要技术水平比较高的开发人员,并且需要进行细致的调试和优化工作。但是,一旦成功移植,将大大加快嵌入式Linux图形界面开发的速度,提高系统的性能和稳定性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值