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

相关推荐
wdxylb1 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20072 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪2 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk5 小时前
Linux 正则表达式
linux·运维
Fireworkitte6 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9006 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char6 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘128 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记11 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发12 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建