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

相关推荐
Kaede615 分钟前
如何应对Linux云服务器磁盘空间不足的情况
linux·运维·服务器
apocelipes6 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
努力学习的小廉7 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
秃头菜狗7 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
2301_793102497 小时前
Linux——MySql数据库
linux·数据库
jiunian_cn8 小时前
【Linux】centos软件安装
linux·运维·centos
程序员JerrySUN9 小时前
[特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
java·linux·架构
孤寂大仙v9 小时前
【计算机网络】非阻塞IO——select实现多路转接
linux·计算机网络
派阿喵搞电子9 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络
Evan_ZGYF丶9 小时前
【PCIe总线】 -- PCI、PCIe相关实现
linux·嵌入式·pcie·pci