Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LVGL案例分享--手把手教你移植到T113-i国产工业开发板

LVGL案例分享--手把手教你移植到T113-i国产工业开发板

作者头像
阿志小管家
发布于 2024-02-02 11:23:42
发布于 2024-02-02 11:23:42
6240
举报

市面上有许多嵌入式GUI库可供选择,包括开源GUI库和闭源GUI库,开源GUI库:LVGL,EmWin等;闭源GUI库:TouchGFX,柿饼GUI等。

本篇文章主要描述如何将LVGL8.1移植到创龙科技的T113-i的开发板上。

LVGL

  1. LVGL,全名“Littlev Graphics Library”,是一个开源的图形库,主要用于在嵌入式系统上创建图形用户界面(GUI)。它是用C语言编写的,旨在高效和可定制,因此在各种微控制器平台和显示硬件上开发用户界面时备受欢迎。
  2. LVGL的特性
  • 轻量级:LVGL旨在轻量且高效,适用于资源受限的嵌入式系统,这些系统具有有限的内存和处理能力。
  • 高度可定制:LVGL允许开发人员根据项目要求定制GUI元素的外观和行为。
  • 小部件库:它提供了各种预设计的图形小部件,如按钮、标签、滑块、列表等,以简化交互式用户界面的创建。
  • 事件驱动:LVGL是事件驱动的,这意味着它会响应用户输入和其他事件以触发操作或状态更改。
  • 硬件支持:LVGL支持各种显示和输入硬件,包括不同类型的显示器(TFT、OLED等)和输入设备(触摸屏、按钮等)。
  • 积极的社区:LVGL有一个积极而支持性的社区,为其开发提供了资源并提供开发人员帮助。
  • 跨平台:LVGL可以在各种微控制器平台上使用,适用于各种嵌入式系统。
  1. LVGL的开源链接:https://github.com/lvgl

LVGL移植

下载源码仓库
  1. lvgl代码下载链接:https://github.com/lvgl/lvgl/archive/refs/tags/v8.1.0.tar.gz
  2. lv_demos代码下载链接:https://github.com/lvgl/lv_demos/archive/refs/tags/v8.1.0.tar.gz
  3. lv_drivers代码卸载链接:https://github.com/lvgl/lv_drivers/archive/refs/tags/v8.1.0.tar.gz
  4. lv_port_linux_frame_buffer代码卸载链接:https://github.com/lvgl/lv_port_linux_frame_buffer.git,通过git clone下载,然后切换到v8.2分支

将所有代码写在下来之后,代码目录如下:

源码文件移植
  1. 创建目录:lvgl,用于存放我们工程源码
  2. 将lvgl源码复制进lvgl目录下
  3. 将lv_drivers源码复制进lvgl目录下
  4. 将lv_demos源码复制进lvgl目录下
  5. 从lvgl中复制lv_conf_template.h到lvgl,并重命名为lv_conf.h
  6. 从lv_drivers中复制lv_drv_conf_template.h到lvgl,并重命名为lv_drv_conf.h
  7. 从lv_demo中复制lv_demo_conf_template.h到lvgl,并重命名为lv_demo_conf.h
  8. 从lv_port_linux_frame_buffer中复制main.c和Makefile到lvgl下

将文件移植完之后,代码目录如下:

修改配置文件
  • 修改lv_conf.h,此文件为lvgl的配置文件
  1. 使能lv_conf.h头文件,将#if 0修改为#if 1
  1. 根据驱动(可在设备树中查看)选择像素点对应像素格式的大小,否则显示可能乱码
  1. 修改显存大小
  1. 设置Tick定时器配置函数
  1. 查看log,使能LV_USE_LOG,设置打印的log等级并选择打印Log的接口
  1. 测试的样例中用到不同字号的字体,需要使能用到的字体
  • 修改lv_drv_conf.h,此文件为驱动配置文件
  1. 使能修改lv_drv_conf.h头文件,将#if 0修改为#if 1
  1. 使能LCD显示:使能USE_FBDEV,路径设置成/dev/fb0,根据板子LCD的实际情况设置
  1. 使能鼠标或者触摸屏
  • 修改lv_demo_conf.h,此文件为测试用例配置文件
  1. 使能修改lv_demo_conf.h头文件,将#if 0修改为#if 1
  1. 使能LV_USE_DEMO_WIDGETS测试用例
  • 修改main.c文件,此文件为lvgl程序的主程序
  1. 修改lvgl的demos头文件
  1. 修改lvgl显示的分比率,我是采用HDMI屏幕,分辨率为:1920 * 1080
  1. 修改鼠标的配置,我的鼠标的设备节点为:/dev/input/event5
  • 修改Makefile文件,此文件为构建工程脚本
  1. 修改构建工具链路径,需要选择T113-i的交叉工具链,工具链路径为:xxx/T113-i_v1.0/out/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
  1. 由于工具链不支持编译选项-Wshift-negative-value,直接伤处对应编译选项。
  1. 因为没有鼠标的图标文件,所以把鼠标图标的配置注释掉
  1. 增加测试样例的编译,包含其构建脚本

LVGL编译验证

  1. 编译,在lvgl工程目录下进行构建,执行make命令
  1. 编译完之后,会在当前目录下生成demo可执行文件
  1. 验证,我们将可执行文件demo拷贝到板子上
  1. 在板子运行LVGL实例
  1. 运行结果:

总结

  • lvgl在Linux上的移植是比较简单快捷的;只需要修改几个配置文件,即可在目标上运行,对我们部署UI非常方便。
  • lvgl在T113-i上运行整体效果还可以,流畅度整体满意,适合做一些项目的落地。
  • lvgl的是跨平台的,所以写一个应用可以多端部署,避免了重复开发的过程。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
让GIS三维可视化变得简单-地理坐标系统
地理位置也就是坐标说是 GIS 的灵魂不为过吧,像天气预报、火箭发射包括地震、火山等事故发生时,新闻媒体就会说东经 XX 度、北纬 YY 度发生了什么什么,还有高德百度的地图导航、定位等等都需要用到坐标系统,因为没有准确的位置信息就无法表达地物的位置关系,地图查询分析等等也就无从谈起了
isboyjc
2022/03/28
1.1K0
让GIS三维可视化变得简单-地理坐标系统
GIS世界里坐标系“黑话”
世界大地测量系统(World geodetic system,简称WGS)是指1960年以来, 由美国国防制图局(DMA)建立的四个世界大地测量系统(WGS60、WGS66、WGS72和WGS84)的统称
追风骚年
2021/11/19
2.4K0
GIS坐标系测绘原理:大地水准面/基准面/参考椭球体/EPSG/SRI/WKT
预热文章系列:《GIS历史概述与WebGis应用开发技术浅解》、《GIS坐标系:WGS84,GCJ02,BD09,火星坐标,大地坐标等解析说与转换》、《OGC标准WMTS服务概念与地图商的瓦片编号流派》、《GIS基础知识 - 坐标系、投影、EPSG:4326、EPSG:3857 》我们过一遍如下概念:
周陆军
2021/07/13
5.2K0
让GIS三维可视化变得简单-投影坐标系统
投影坐标系统 PCS(Projection Coordinate System),它也叫非地球投影坐标系统 (notearth),或者再简单点叫平面坐标系统,也就是使用基于 X,Y 值的坐标系统来描述地球上某个点所处的位置
isboyjc
2022/03/28
1.3K0
让GIS三维可视化变得简单-投影坐标系统
什么是坐标系,不同坐标系之间有什么区别
本文作者为国外制图师希瑟·史密斯,由点点GIS翻译发布,如有错漏之处请后台留言指出
陈南GISer
2021/08/18
1.9K0
什么是坐标系,不同坐标系之间有什么区别
Web墨卡托公开的小秘密
所谓地图投影,是利用一定数学法则把地球表面的经、纬线转换到平面上的理论和方法。由于地球是一个赤道略宽两极略扁的不规则的梨形球体,故其表面是一个不可展平的曲面,所以运用任何数学方法进行这种转换都会产生误差和变形,为按照不同的需求缩小误差,就产生了各种投影方法,eg:墨卡托投影,高斯克吕格投影, Lambert__投影,UTM__投影…
用户9580384
2022/10/05
2.9K0
Web墨卡托公开的小秘密
明白了这些术语,才算懂个“球”
最近公司要开展国家2000坐标转换相关的工作,身边的测绘专业的同事给我科普了一下GIS基础知识,甩给我一堆缩写、概念和PPT:
申龙斌
2019/05/08
2K0
明白了这些术语,才算懂个“球”
地图坐标
1、椭球面 地图坐标系由大地基准面和地图投影确定,大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的IAG 75地球椭球体建立了我国新的大地坐标系--西安80坐标系, 目前GPS定位所得出的结果都属于WGS84坐标系统,WGS84基准面采用WGS84
用户1075292
2018/01/23
2.3K0
基于 ArcGIS 的坐标系转换
地理坐标系就是把地球当成一个球体来看,以球心为参照点,通过经纬度来定位某个坐标点。
被水淹没
2023/02/25
2.8K0
基于 ArcGIS 的坐标系转换
自动驾驶中的时空坐标系
下面我们介绍自动驾驶技术中几种常用的坐标系统,以及他们之间如何完成关联和转换,最终构建出统一的环境模型。 所谓时空坐标系,包括三维空间坐标系和一维时间坐标系。在此基础上,用解析的形式(坐标)把物体在空间和时间的位置、姿态表示出来。一般三维空间坐标系用三个正交轴X,Y,Z表示物体的位置,用绕这三个正交轴的旋转角度(roll 横滚角, pitch 俯仰角, yaw 偏航角)表示物体的姿态。时间坐标系只有一个维度。为了表述方便,我们一般将空间坐标和时间坐标分开讨论。 摄像机坐标系统 摄像机/摄像头以其低廉的价格、
刘盼
2018/03/16
4.9K0
自动驾驶中的时空坐标系
关于坐标系——在规划常用软件中
规划工作中最常接触的就是空间数据了,我们的操作也常常是在某个具体空间上。为了方便所有空间数据的统一处理,我们需要引入一个中间量,所有数据都参照它,“它”就是坐标系了。我们常用的Sketch、CAD、ArcGIS里面都是有坐标系的,如果我们可以建立起一个坐标系的概念,那么这些软件中的不同数据都可以拉通使用了(还包括从网络上获取到的各种数据)。
Sidchen
2020/08/02
1.7K0
坐标系与矩阵(4):球心坐标与NEU坐标系
前三篇介绍了坐标系和矩阵的数学知识,从本篇开始,我们试图运用这些知识来解决实际问题。
Peter Lu
2021/07/20
3.5K0
坐标系与矩阵(4):球心坐标与NEU坐标系
常用坐标系
    随着接触的地图种类越来越多,每种产品对地图服务的坐标系的要求不同,今天遇到了整理的好文,整理记录分享。
sunsky
2022/06/14
3.9K0
常用坐标系
ECEF和大地坐标系的相互转化
在阅读 RTKLIB的源码时,发现了ECEF和大地坐标系的相互转换的函数,大地坐标系(φ,λ,h)转成ECEF(X,Y,Z)与所看书籍(GPS原理与接收机,谢刚,电子工业出版社)的公式是一样的,而EC
用户1653704
2018/06/07
1.1K0
地理坐标系与投影坐标系的区别
1、首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为 地理坐标系统,是以经纬度为地图的存储单位的。很明显,Geographic coordinate syst em是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上,如何进行操作 呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球上?这必然要求 我们找到这样的一个椭球体。这样的椭球体具有特点:可以量化计算的。具有长半轴,短
用户1075292
2018/01/23
2.2K0
大地经纬度坐标系与Web墨卡托坐标系的转换
我在《大地经纬度坐标与地心地固坐标的的转换》这篇文章中已经论述了大地坐标系/地理坐标系的概念,简单来说就是由经度、纬度以及高程(BLH)确定的坐标系,它是一种曲面坐标。
charlee44
2021/10/26
3.7K0
GIS专辑 | 数据是GIS的血液
本周将连载关于ArcGIS技术应用的文章。来源于我的师兄。他有丰富的工作经验。如有问题欢迎大家留言或者访问博客进行交流:https://blog.csdn.net/symBBD
郭好奇同学
2020/12/22
5.1K0
GIS专辑 | 数据是GIS的血液
ArcMap通过模型构建器导出地理与投影坐标系转换的Python代码
  本文介绍在ArcMap软件中,通过创建模型构建器(ModelBuilder),导出地理坐标系与投影坐标系之间相互转换的Python代码的方法。
疯狂学习GIS
2022/08/10
9510
ArcMap通过模型构建器导出地理与投影坐标系转换的Python代码
游戏引擎与GIS
本人一直好奇UE这类的游戏引擎在GIS领域的想法,今天看了一下UE的‘Learn How to Work With Geospatial Data in Unreal Engine’,以及Project Anywhere这个demo的相关资料,在此总结一下。我并不了解游戏引擎,内容不对的地方请指正。
Peter Lu
2021/01/05
5.1K0
【森城市】GIS数据漫谈(四)— 坐标系统
地球表面并不是一个标准的正球体,根据2020年的测量成果,珠穆朗玛峰高程为8848.86m,而地球上最深的海沟——马里亚纳海沟深度为11034 m。两者相差了将近 20 km!由于地球的自然表面凹凸不平,形态复杂,显然不能作为测量的基准面。所以人们开始寻求一种与地球自然表面接近的规则曲面来代替不规则的地球表面。地球表面积中海洋面积约占71%,陆地面积仅占29%。于是利用水准面表示地球的物理表面,简单说就是假设有一个静止的海水面(一个无波浪、无潮汐、无水流、无大气压变化,处于流体平衡状态的静止海平面),向陆地延伸形成的一个封闭曲面来表示地球的物理表面。
thingjs
2022/07/15
7740
【森城市】GIS数据漫谈(四)— 坐标系统
相关推荐
让GIS三维可视化变得简单-地理坐标系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档