Linux系统基于ARM平台的LVGL移植

软硬件介绍:Ubuntu 20.04 ARM 和(Cortex-A53架构)开发板

基本原理

LVGL图形库是支持使用Linux系统的Framebuffer帧缓冲设备实现的,如果想要实现在ARM开发板上运行LVGL图形库,那么就需要把LVGL图形库提供的关于帧缓冲设备的案例源码进行移植。

  1. ARM开发板搭载的Linux系统,并且开发板板载了7寸的LCD屏和电容式触摸屏,如下:

(只想了解如何使用可以不看,这里的源码可以在文章最后的百度网盘找到)阅读LVGL关于Linux帧缓冲设备的技术博客,下载要移植的源码和了解要修改的内容!

由于git采用的分支管理,所以下载的案例源码中缺少lvgl和lvgl_drivers的分支源码,所以需要从GitHub中下载这两个分支源码,如下图:

2.把两个分支源码包下载到本地之后,需要对两个源码包进行解压,再把解压之后的所有内容分别拷贝到工程中lvgl文件夹和lvgl_drivers文件夹中即可,这样就完成了源码的整合!!

(1)根据LVGL官方的提示把两个分支源码包中的配置文件替换到主源码包根目录下,如下:

注意:要把lvgl文件夹中的lv_conf_template.h和lv_drivers文件夹中的lv_drv_conf_template.h这两个文件拷贝到工程根目录下,并且把lv_conf_template.h改名为lv_conf.h,把lv_drv_conf_template.h改名为lv_drv_conf.h。

(2)根据LVGL官方的提示来修改主源码包的lv_conf.h配置文件中的部分参数,具体如下图:
(3)根据LVGL官方的提示来修改主源码包的lv_drv_conf.h配置文件中的部分参数,如下图:
(4)由于开发板采用ARM平台,所以需要修改案例源码中Makefile脚本文件的编译工具链
注意:(5)把整个源码工程放入Linux系统中,并切换到源码工程中对源码进行编译,输入: make

可以看到对工程进行编译时会提示以下错误:cc: error: unrecognized command line option '-Wshift-negative-value'

这个错误原因是指Linux系统中使用的arm-linux-gcc交叉编译器不支持这个选项,所以解决方案是更换更高版本的arm-linux-gcc编译器或者从Makefile脚本文件中把这句话删掉。

从Makefile脚本文件中删掉 "-Wshift-negative-value"之后,保存脚本后对工程再次编译即可。

如果没有任何其他错误提示,则说明源码编译通过,此时可以把生成的可执行文件下载到ARM开发板测试。

(6)切换到项目源码的 build/bin目录下可以看到一个名称叫做demo的可执行文件,如下:
注意:(7)把可执行文件下载到ARM开发板中,修改可执行文件的权限,并运行可执行文件观察!

可以看到,ARM开发板确实可以显示LVGL图形库提供的例程,但是此时是无法通过触摸屏切换界面的,原因是在main.c的循环中没有调用一个名称叫做lv_tick_inc()的函数接口。

整个 LVGL图形库的运转都是基于 LVGL图形库中定义的 "Timer" 定时器,系统需要给 LVGL 一个 "心跳",LVGL图形库框架才可以正常的运转起来。而lv_tick_inc()就是用于系统告知LVGL图形库时间的函数接口,该函数是以毫秒为单位的。

修改main.c之后重新对工程进行编译,再把生成的可执行文件下载到开发板验证即可!

源码百度网盘链接:通过网盘分享的文件:LVGL.rar

链接: https://pan.baidu.com/s/1yfsIgFq3C9LqzFbOUDFJTg?pwd=hfym 提取码: hfym

--来自百度网盘超级会员v2的分享

相关推荐
吠品1 小时前
高性能JS数组操作:何时选用push、unshift、splice或扩展运算符?
linux·服务器·数据库
fish_xk1 小时前
Linux中的指令和权限
linux·运维·服务器
暴力求解1 小时前
Linux---内核态
linux·运维·服务器
mounter6251 小时前
深入理解 Linux 网络新特性:netkit 中的 RX/TX Queue Leasing 与 TCP Devmem
linux·服务器·网络·tcp/ip·kernel
dvjr cloi2 小时前
Linux(CentOS)安装 MySQL
linux·mysql·centos
zhouwy1132 小时前
Linux系统管理命令大全
linux·运维
zhangrelay2 小时前
三分钟云课实践速通--单片机原理与应用--Arduino--SimulIDE--
linux·单片机·嵌入式硬件·学习·ubuntu
zzzyyy5383 小时前
Linux之缓冲区
linux·运维·服务器
hwscom3 小时前
Linux服务器如何进行安全加固,防止黑客攻击(Windows也适用)
linux·服务器·安全
lzh200409193 小时前
Linux管道(Pipe)深度指南:从原理到实战
linux·c++