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的分享

相关推荐
Light6029 分钟前
领码方案|Linux 下 PLT → PDF 转换服务超级完整版:异步、权限、进度
linux·pdf·可观测性·异步队列·plt转pdf·权限治理·进度查询
羚羊角uou1 小时前
【Linux】命名管道
linux·运维·服务器
IT 小阿姨(数据库)1 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
THMAIL1 小时前
量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
linux·人工智能·python·深度学习·机器学习·金融
让子弹飞022 小时前
36.2Linux单总线驱动DS18B20实验(详细讲解代码)_csdn
linux·ubuntu·驱动的分离和分层
Yana.nice2 小时前
yum list 和 repoquery的区别
linux
码出钞能力3 小时前
更换libc.so导致linux变砖,通过LD_PRELOAD挽救
linux·服务器
小马学嵌入式~3 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
小猪咪piggy3 小时前
【JavaEE】(24) Linux 基础使用和程序部署
linux·运维·服务器
Haven-4 小时前
Linux常见命令
linux·基本指令