嵌入式Linux下LVGL的移植与配置
一.sdk源码下载路径
1.官方源码下载路径如下:
https://github.com/lvgl/lvgl
git下载方式 git clone https://github.com/lvgl/lvgl.git
2.个人移植好的源码8.2版本下载路径:
链接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwd=c68e
提取码:c68e
注意: 以下的配置均基于个人移植的sdk上修改.
二.编译方法
解压sdk源码后修改Makefile文件,修改如下
直接修改编译器(编译器需要添加进系统的环境变量中)

修改完Makefile文件后直接 make编译
三.配置文件修改说明
配置文件位于sdk根目录下lv_conf.h
1.图层背景透明配置
有些平台的视频层位于UI图层的下方,会导致视频被UI遮挡的情况,此时需要将UI的图层背景设置成透明即可看见视频画面。
配置方法如下:
#define LV_COLOR_SCREEN_TRANSP 1 // 将此选项打开//代码设置部件背景透明
lv_style_t tTempStyle;
lv_style_init(&tTempStyle);
v_style_set_bg_opa(&tTempStyle, LV_OPA_TRANSP);
lv_obj_add_style(lv_scr_act(), &tTempStyle, 0);
lv_obj_set_size(lv_scr_act(), 1024, 600);
2.本地图片解码显示实现
修改配置如下:
选择系统类型,开启对应的图片解码库
/*API for open, read, etc*/
#define LV_USE_FS_POSIX 1
#if LV_USE_FS_POSIX#define LV_FS_POSIX_LETTER 'A' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/#define LV_FS_POSIX_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/#define LV_FS_POSIX_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif// 打开图片的解码配置
/*PNG decoder library*/
#define LV_USE_PNG 1/*BMP decoder library*/
#define LV_USE_BMP 1/* JPG + split JPG decoder library.* Split JPG is a custom format optimized for embedded systems. */
#define LV_USE_SJPG 1/*GIF decoder library*/
#define LV_USE_GIF 1
默认情况下使用的是固定内存的分配,解码大图片的时候会出错,需要修改配置文件如下:
// 打开如下配置,使用系统动态分配
/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
#define LV_MEM_CUSTOM 1
显示的图片的代码案例:
lv_obj_t *pTempImg = lv_img_create(lv_scr_act());
// lv_img_set_src(pTempImg, "A:./png_decoder_test.png"); // 加载png图片
lv_img_set_src(pTempImg, "A:/customer/bg1024_600.jpg");// 加载jpg图片
lv_img_t *img = (lv_img_t *)pTempImg;
printf("Jamon ==>> img w=%d, h=%d\n", img->w, img->h);
lv_obj_set_size(pTempImg, img->w, img->h);
lv_obj_set_pos(pTempImg, 0, 0);
3.打开log调试,并使用printf输出
修改配置如下:
/*Enable the log module*/
#define LV_USE_LOG 1 // 开启log
#if LV_USE_LOG/*How important log should be added:*LV_LOG_LEVEL_TRACE A lot of logs to give detailed information*LV_LOG_LEVEL_INFO Log important events*LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail*LV_LOG_LEVEL_USER Only logs added by the user*LV_LOG_LEVEL_NONE Do not log anything*/#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN // 输出级别 /*1: Print the log with 'printf';*0: User need to register a callback with `lv_log_register_print_cb()`*/#define LV_LOG_PRINTF 1 // 使用系统函数printf输出/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/#define LV_LOG_TRACE_MEM 1#define LV_LOG_TRACE_TIMER 1#define LV_LOG_TRACE_INDEV 1#define LV_LOG_TRACE_DISP_REFR 1#define LV_LOG_TRACE_EVENT 1#define LV_LOG_TRACE_OBJ_CREATE 1#define LV_LOG_TRACE_LAYOUT 1#define LV_LOG_TRACE_ANIM 1#endif /*LV_USE_LOG*/
相关文章:
嵌入式Linux下LVGL的移植与配置
一.sdk源码下载路径 1.官方源码下载路径如下: https://github.com/lvgl/lvgl git下载方式 git clone https://github.com/lvgl/lvgl.git 2.个人移植好的源码8.2版本下载路径: 链接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwdc68e 提取…...
leetcode每日一练-第70题-爬楼梯
一、思路 动态规划 二、解题方法 使用一个动态规划数组 dp 来记录到达每个台阶的不同方法数。初始情况下,当台阶数为 1 时,方法数为 1,当台阶数为 2 时,方法数为 2。然后,我们从第 3 阶开始逐步计算每一阶的方法数&…...
设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
TSINGSEE青犀视频安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等功能。 智能视频监控平台EasyCVR可…...
arcgis宗地或者地块四至权利人信息提取教程
ARCGIS怎样将图斑四邻的名称及方位加入其属性表 以前曾发表过一篇《 如何把相邻图斑的属性添加在某个字段中》的个人心得,有些会员提出了进一步的要求,不但要相邻图斑的名称,还要求有方位,下面讲一下自己的做法。 基本思路是:连接相邻图斑质心,根据连线的角度确定相邻图斑…...
乐鑫首创|使用 ESP RainMaker® 私有云定制 Matter 生态
ESP RainMaker 是乐鑫的 AIoT 云平台,支持客户自主部署私有物联网云,从而全面掌握数据所有权和管理权,实现定制功能与服务。ESP RainMaker 云后端采用 AWS 无服务器架构,拥有开源的 iOS 和 Android 移动端 APP、第三方语音助手集成…...
【算法|数组】快慢指针
算法|数组——快慢指针 引入 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你…...
C++字符串:使用 std::string
C字符串:使用 std::string 初始化方法一 std::string 变量名称 { “字符串”}; std::string str { " 这是一个字符串" };std::cout << str; std::cin >> str;初始化方法二 std::string 变量名称 { “字符串”&#x…...
目前Java后端就业前景怎么样?
前言 并不乐观,看看现在的就业形式就知道了,基本上是僧多粥少的情况,你可能会看到很多编程语言排行榜或者流行榜中Java的排名很高,如同下面这种: 看排名确实可以粗略的得知语言当下的流行度、使用率,但是它…...
C语言基础(持续更新)
常用函数 strrchr 描述 C 库函数 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。测试代码 #include "stdio.h" #include "string.h"int main() {printf(&q…...
从源码层面深度剖析Spring循环依赖 | 京东云技术团队
以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean? 对于单例Bean来说,在Spring容器整个生命周期内,有且只有一个对象。 Spring 在创建 Bean 过程中࿰…...
Distance 2023牛客暑期多校训练营6 B
登录—专业IT笔试面试备考平台_牛客网 题目大意:给出两个长度为n的数组a,b,每次操作可以令一个数1,将a的一个子集A变成和b的一个子集B变成完全相同需要的最少操作数为C(A,B),求对于a的所有子集对所有b的子集的C(A,B)的…...
【Pandas】学习笔记之groupby()、agg()、transform()
在数据分析过程中经常需要对数据集进行分组,并且统计均值,最大值等等。那么 groupby() 的学习就十分有必要了 groupby(): 分组 官方文档: DataFrame.groupby(byNone, axis0, levelNone, as_indexTrue, sortTrue, group_keysTrue, observedF…...
使用正则表达式 移除 HTML 标签后得到字符串
需求分析 后台返回的数据是 这样式的 需要讲html 标签替换 high_light_text: "<span stylecolor:red>OPPO</span> <span stylecolor:red>OPPO</span> 白色 01"使用正则表达式 function stripHTMLTags(htmlString) {return htmlString.rep…...
Java中String方法魔性学习
这里写目录标题 先进行专栏介绍String详解常用构造方法代码演示常用成员方法代码示例总结 先进行专栏介绍 本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记 进行适当修改。希望…...
Smartbi 权限绕过漏洞复现(QVD-2023-17461)
0x01 产品简介 Smartbi大数据分析产品融合BI定义的所有阶段,对接各种业务数据库、数据仓库和大数据分析平台,进行加工处理、分析挖掘和可视化展现;满足所有用户的各种数据分析应用需求,如大数据分析、可视化分析、探索式分析、复杂…...
springboot自定义错误消息
为了提供自定义错误消息提示,springboot在resources目录下,有一个文件ValidationMessages.properties 用于存储 验证错误的消息提示: 比如: 这样一个ValidationMessage.properties username.notempty用户名不能为空 username.len…...
微信小程序申请步骤
微信公众平台链接:https://mp.weixin.qq.com/ 1、进到微信公众平台,点一下“点击注册”,挑选账号申请种类“小程序”,填好微信小程序用户信息,包含电子邮箱、登陆密码等。 2、微信公众平台会发送一封电子邮件…...
嘉楠勘智k230开发板上手记录(四)--HHB神经网络模型部署工具
按照K230_AI实战_HHB神经网络模型部署工具.md,HHB文档,RISC-V 编译器和模拟器安装来 一、环境 1. 拉取docker 镜像然后创建docker容器并进入容器 docker pull hhb4tools/hhb:2.4.5 docker run -itd --namehhb2_4 -p 22 "hhb4tools/hhb:2.4.5"…...
微信小程序的自定义TabBar及Vant的使用
一、安装Vant 1、在 资源管理器 空白位置,点右键打开 在外部终端窗口打开 2、初始化NPM npm init -y 3、安装命令 npm i vant/weapp1.3.3 -S --production 4、构建NPM包 在 工具 里选择构建NPM包 5、删除style:v2 在app.json里,删除"style"…...
canvas实现代码雨
学习抖音: 渡一前端必修课 效果图: 全部代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
C++11 constexpr和字面类型:从入门到精通
文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...
【大厂机试题解法笔记】矩阵匹配
题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...
