通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示
文章参考:https://gitee.com/socbis/linux-lvgl
lvgl on linux Frame buffer
主机环境: Ubuntu 18.04
lvgl 8.0.1
获取源码并运行demo
获取源码
需要3样东西来构建demo :
lvgl核心控件库
: 从此处获取源码 lvgl,选择版本 Release v8.0.1.显示和触摸接口层
: 关联图形库与硬件,源码 lv_drivers,选择版本 v8.0.lv_demo 源码
: 源码 lv_demos, 同样选择版本 v8.0.最终得到三个压缩包:
lvgl-8.0.1.tar.gz
lv_drivers-release-v8.0.zip
lv_demos-release-v8.0.zip
创建文件夹并解压源码:
mkdir lvgl_linuxcd lvgl_linux# 复制上述压缩包到此处 .# 解压tar xvf lvgl-8.0.1.tar.gzunzip lv_drivers-release-v8.0.zipunzip lv_demos-release-v8.0.zip# 重命名解压后的文件夹mv lvgl-8.0.1 lvglmv lv_drivers-release-v8.0 lv_driversmv lv_demos-release-v8.0 lv_demos# delete zip tarrm lv_drivers-release-v8.0.zip lv_demos-release-v8.0.zip lvgl-8.0.1.tar.gzlslv_demos lv_drivers lvgl
获取配置文件
核心库配置文件 :
lv_conf.h
驱动配置文件 :
lv_drv_conf.h
demo配置文件 :
lv_demo_conf.h
# 基于配置模板创建 cp lvgl/lv_conf_template.h lv_conf.h cp lv_drivers/lv_drv_conf_template.h lv_drv_conf.h cp lv_demos/lv_demo_conf_template.h lv_demo_conf.hls lv_conf.h lv_demo_conf.h lv_demos lv_drivers lv_drv_conf.h lvgl
修改配置文件:
使能,将3个文件
#if 0
改为#if 1
/*Set it to "1" to enable content*/
修改
lv_drv_conf.h
:# define USE_FBDEV 1# define USE_EVDEV 1
修改
lv_demo_conf.h
:#define LV_USE_DEMO_WIDGETS 1
修改
lv_conf.h
:配置
Tick interface
:#define LV_TICK_CUSTOM 1#if LV_TICK_CUSTOM#define LV_TICK_CUSTOM_INCLUDE <stdint.h> /*Header for the system time function*/extern uint32_t custom_tick_get(void);#define LV_TICK_CUSTOM_SYS_TIME_EXPR (custom_tick_get()) /*Expression evaluating to current system time in ms*/#endif /*LV_TICK_CUSTOM*/
使能 12,16 号字体:
#define LV_FONT_MONTSERRAT_12 1#define LV_FONT_MONTSERRAT_14 1#define LV_FONT_MONTSERRAT_16 1
设置堆大小:
使用 lvgl 内建内存分配方案: 配置堆大小,实测 2KB 无法启动demo,我给 2MB
# define LV_MEM_SIZE (2 * 1024U * 1024U) /*[bytes]*/
使用 linux 系统内存分配:使能宏
#define LV_MEM_CUSTOM 1
即可
编写主程序和Makefile
main.c
参考自 lv_port_linux_frame_buffer/blob/release/v8.2/main.cmain.c 中修改
lv_demo.h
路径:#include "lv_demos/lv_demo.h"
Makefile
参考自 lv_port_linux_frame_buffer/blob/release/v8.2/Makefile同时还要把Makefile同级目录下的mouse_cursor_icon.c复制过来
Makefile 做如下修改:
CC = arm-linux-gnueabihf-gccinclude $(LVGL_DIR)/lv_demos/lv_demo.mkCSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c
make
生成demo
参考官方的文档手册操作让其在Ubuntu上能显示:https://blog.lvgl.io/2018-01-03/linux_fb
1、Ctrl + Alt + F6切换TTF(也有可能是Ctrl + Alt + F1 /Ctrl + Alt + F4等,切换不了就多试下)2、sudo su切换用户3、service lightdm stop4、./demo,即可看到官方demo了(只能看,不能操作,鼠标看不到,需要再研究下)5、service lightdm start即可切换回linux桌面ttf
本文由博客一文多发平台 OpenWrite 发布!
相关文章:
通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示
文章参考:https://gitee.com/socbis/linux-lvgl lvgl on linux Frame buffer 主机环境: Ubuntu 18.04lvgl 8.0.1 获取源码并运行demo 获取源码 需要3样东西来构建demo : lvgl核心控件库: 从此处获取源码 lvgl,选择版本 Release v8.0.1. 显示和触摸接…...

M功能-支付平台(三)
target:离开柬埔寨倒计时-221day 前言 今天周六,但是在柬埔寨还是工作日,想着国内的朋友开始休周末就羡慕呀,记不清在这边过了多少个周六了,多到我已经习惯了。而且今天技术部还停电了,真的是热的受不了呀…...

5G工厂长啥样
5G工厂是一种新型的工业互联网基础设施,利用5G为代表的新一代信息通信技术集成,打造新型工业互联网基础设施。在5G工厂中,自动化和智能化设备广泛使用,高度互联的工厂网络得以实现,远程监控和管理成为可能,…...

使用Python操作Jenkins
大家好,Python作为一种简洁、灵活且功能丰富的编程语言,可以与各种API轻松集成,Jenkins的API也不例外。借助于Python中的python-jenkins模块,我们可以轻松地编写脚本来连接到Jenkins服务器,并执行各种操作,…...

网络协议测试仪设计方案:474-便携式手提万兆网络协议测试仪
便携式手提万兆网络协议测试仪 一、平台简介 便携式手提万兆网络协议测试仪,以FPGA万兆卡和X86主板为基础,构建便携式的手提设备。 FPGA万兆卡是以Kintex-7XC7K325T PCIeX4的双路万兆光纤网络卡,支持万兆网络数据的收发和网络协议…...

使用numpy手写一个神经网络
本文主要包含以下内容: 推导神经网络的误差反向传播过程使用numpy编写简单的神经网络,并使用iris数据集和california_housing数据集分别进行分类和回归任务,最终将训练过程可视化。 1. BP算法的推导过程 1.1 导入 前向传播和反向传播的总体…...
使用Spring AOP实现接口参数变更前后对比和日志记录
推荐一个程序员的常用工具网站,效率加倍,嘎嘎好用:程序员常用工具云服务器限时免费领:轻量服务器2核4G腾讯云:2核2G4M云服务器新老同享99元/年,续费同价阿里云:2核2G3M的ECS服务器只需99元/年,续费同价记录接口调用前后的参数变化是一个常见的需求,这不仅有助于调试和…...

免费无限换脸,火了,图片/视频/直播都行!
最强换脸AI工具Facefusion软件在近期更新到了2.6.0版本,带来了一系列的更新和改进,今天为大家分享一下最新的整合包。 Facefusion2.6.0版本介绍 FaceFusion不仅仅是一款换脸软件,它更是一个多功能的数字人和实时直播助手,真正开启…...

无线领夹麦克风哪个品牌好?本期文章揭秘无线麦克风哪个品牌好用
在当下这个全民皆为媒体的时代大潮中,视频分享已然成为了引领风尚的指向标。在自媒体领域竞争愈发激烈的态势下,若要在这片广阔海洋中扬帆远航,优秀的作品毫无疑问是吸引观众的关键所在。而想要塑造出这样的卓越之作,除了需要创…...

操作系统实验--终极逃课方法
找到图片里的这个路径下的文件 ,结合当前题目名称,把文件内容全部删除,改为print print的内容为下图左下角的预期输出的内容...
C语言实现正弦信号扫频
C语言实现正弦信号扫频 包含必要的头文件:首先,你需要包含 <stdio.h> 和 <math.h> 头文件,分别用于输入输出和数学函数的使用。 定义扫频参数:定义正弦扫频的参数,例如起始频率、结束频率、扫频时间等。 生成正弦波信号:使用正弦函数生成扫频信号,可以根…...

实用篇| huggingface网络不通
之前文章《Transformer原理》中介绍过,Transformers 是由 Hugging Face 开发的一个包,支持加载目前绝大部分的预训练模型。随着 BERT、GPT 等大规模语言模型的兴起,越来越多的公司和研究者采用 Transformers 库来构建应用。 Hugging Face是一家美国公司…...
NLP与训练模型-GPT-3:探索人工智能语言生成的新纪元
在人工智能领域,自然语言处理(NLP)一直是备受关注的研究方向之一。随着深度学习技术的发展,尤其是Transformer模型的出现,NLP领域取得了巨大的进步。其中,由OpenAI推出的GPT-3模型更是引起了广泛的关注和热…...
iOS内购欺诈漏洞
iOS内购欺诈漏洞 1.iOS内购欺诈漏洞概述2.伪造的凭证3.漏洞修复方案 1.iOS内购欺诈漏洞概述 黑产别的App上低价充值(比如1元)换取苹果真实凭证,再在目标App上下单高价(648元)商品,传入该凭证,如…...

【网络服务】正向代理和反向代理到底是什么意思
🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 前言 在学习和…...

【算法】记忆化搜索
快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、不同路径二、最长递增子序列三、猜数字大小 ||四、矩阵中的最长递增路径总结 引言 记忆化搜索&…...

博客系统多模块开发
创建工程 创建父工程 删除src目录,在pom.xml添加依赖: <!--统一版本 字符编码--><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.b…...

pdf阅读器哪个好用?五款PDF阅读器大比拼
pdf阅读器哪个好用?在数字化时代,PDF文档因其跨平台、跨设备的便捷性,已成为工作、学习和生活中不可或缺的一部分。而一款优秀的PDF阅读器,则能极大地提升我们处理PDF文档的效率与体验。今天,就让我们一起探索五款备受…...
C#实现Queue的加锁和解锁
在C#中,可以使用lock语句来对队列进行加锁和解锁,以确保在多线程环境下的线程安全。以下是一个简单的示例: using System; using System.Collections.Generic; using System.Threading;public class ThreadSafeQueue<T> {private read…...

北京邮电大学人工智能考数据结构,均分370!北京邮电大学计算机考研考情分析!
北京邮电大学(Beijing University of Posts and Telecommunications),简称北邮,是中华人民共和国教育部直属、工业和信息化部共建的全国重点大学,位列国家“211工程”、“985工程优势学科创新平台”、“世界一流学科建…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...