【兆易创新GD32H759I-EVAL开发板】 关于LVGL 的内存配置

【兆易创新GD32H759I-EVAL开发板】拥有外部32MB的 SDRAM

在使用LVGL时 可以随意分配大小

但是我们也应该明白 所定义的内存大小的 的一些概念

LVGL中 有单独的 定义 LV_MEM_SIZE 定义内存大小

LVLG 中 在定义 显示程序 接口时 还需要用到 lv_disp_draw_buf_init() 分配显存

这两处的 内存 有什么关系?

LV_MEM_SIZElv_disp_draw_buf_init函数中的显示缓存(例如buf_3_1, buf_3_2)是LVGL图形库中两个关键但不同功能的配置项。理解它们之间的关系对于优化LVGL的性能和内存使用非常重要。

LV_MEM_SIZE

LV_MEM_SIZE是在LVGL配置中定义的一个宏,它指定了LVGL内部使用的内存池的大小。这个内存池用于LVGL的对象、样式、动画等动态分配的内存需求。简而言之,LV_MEM_SIZE决定了LVGL可以使用的总内存量,对于运行LVGL的系统来说,这个值需要根据可用内存资源、UI复杂性等因素谨慎设置。

显示缓存(Display Buffer)

显示缓存,如代码中的buf_3_1buf_3_2,是用于存储屏幕绘制操作的临时像素数据的内存区域。当LVGL绘制界面元素时,它会首先在显示缓存中进行,然后再将这些数据发送到屏幕。这样做的目的是为了提高绘图效率,减少屏幕刷新次数,从而优化性能和用户体验。在lv_disp_draw_buf_init函数中指定的缓存大小(即MY_DISP_HOR_RES * MY_DISP_VER_RES)直接决定了一次可以绘制的最大像素数量。

LV_MEM_SIZE与显示缓存的关系

虽然LV_MEM_SIZE和显示缓存(buf_3_1, buf_3_2)都涉及内存配置,但它们服务于LVGL的不同方面:

  • LV_MEM_SIZE 是LVGL内部动态分配机制的全局内存池大小,影响整个库的对象创建、事件处理、样式应用等方面的能力。
  • 显示缓存 则专门用于图形渲染过程,确保绘图操作的高效执行。

没有直接关系LV_MEM_SIZE的大小不会直接影响显示缓存的大小,它们各自独立配置。然而,从整个系统资源管理的角度看,两者都从系统的总可用内存中分配,因此在设计时需要考虑整体内存的分配和优化。

实践中的配置考量

在实际应用中,合理配置LV_MEM_SIZE和显示缓存的大小是非常重要的:

  • LV_MEM_SIZE 应足够大,以支持应用程序的UI复杂度,包括所需的LVGL对象数、样式等。如果LV_MEM_SIZE设置得太小,可能会导致内存分配失败,影响UI的正常运行。
  • 显示缓存 的大小影响渲染性能。较大的显示缓存可以减少渲染次数,提高渲染效率,但同时也会占用更多的内存。通常,显示缓存至少需要能容纳一个屏幕的像素数据,但根据具体的显示需求和系统资源,可以配置为更大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis框架解析与优化

MyBatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。 什么是 MyBatis? MyBatis 是一个半…

【3D reconstruction 学习笔记】

三维重建 3D reconstruction 1. 相机几何针孔相机摄像机几何 2. 相机标定线性方程组的解齐次线性方程组的解非线性方程组的最小二乘解透镜相机标定带畸变的相机标定 3. 单视图重建2D平面上的变换3D空间上的变换单视测量无穷远点 无穷远线 无穷远平面影消点 影消线单视重构 4. 三…

天艺制盖邀您参观2024第七届世界燕窝及天然滋补品博览会

2024第七届世界燕窝及天然滋补品博览会 2024年8月7-9日| 上海新国际博览中心 上海燕博会 世界燕窝及天然滋补品展览会暨世界滋补产业生态发展大会(简称上海燕博会),2017年创办于中国上海,是一年一度的世界燕窝滋补品行业盛会。…

宁波中墙建材施工过程中,如何确保陶粒复合砌块的垂直度和水平度符合要求?

宁波中墙建材陶粒复合砌块如何使用 确保陶粒复合砌块施工质量的建议: 基层处理:在施工前,确保基层干净、平整、坚固,去除表面的杂物和油污等。 砌块质量:选择质量好、尺寸规格一致的陶粒复合砌块,避免使用有…

【串口开发】android 智能设备开发 知识笔记

1.一般的波特率选择115200,自己玩的可以用9600等随便的 2.为了android方便操作,引入了 implementation com.licheedev:android-serialport:2.1.3包。 不然就得手写了,比如像这样 ,打开串口监听 // 打开串口boolean openSerialPort = mSerialPortManager.setOnOpenSerial…

每天一个数据分析题(二百二十八)

在超参数调参的各种方法中,贝叶斯优化搜索(Bayesian Optimization)是一种非常有效的方法。请问在贝叶斯搜索中,用于估计目标函数并为下一次迭代提供建议的模型是什么? A. 线性回归 B. 随机森林 C. 高斯过程 D. 神经网络 题目来源于CDA模…

vue js有哪些优点和缺点

Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面和单页面应用。以下是 Vue.js 的一些主要优点和缺点: 优点: 轻量级和简洁:Vue.js 的核心库专注于视图层,并且非常轻量,这使得它可以很容易地与其…

java算法题每日多道六

138. 随机链表的复制 题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对…

JS异步操作

点击按钮触发onScan函数,函数调用扫描二维码这个异步操作后,需要扫描二维码的函数返回结果,可以用Promise来实现。Promise对象状态变为resolved(成功)或rejected(失败),然后将解决&a…

运放PSRR与开关电源纹波分析的实际案例分享!

本文来自看海原创视频教程:《运放秘籍》运算放大器基础精讲及应用第一部*开天 微信公众号:工程师看海 【淘宝】https://m.tb.cn/h.5PAjLi7?tkvmMLW43KO7q CZ3457 「运放秘籍_运算放大器Multisim仿真视频教程第一部开天_工程师看海」 点击链接直接打开 …

前端逻辑错误或UI崩溃解决问题

全屏错误覆盖层或UI崩溃 VueReact(错误边界) Vue Vue的全屏错误覆盖层解决,其实只需要配置Error就好,在开发服务器的client.overlay中设置关闭全屏覆盖层 module.exports {devServer: {client: {overlay: {warnings: false,error…

安卓面试题多线程41-45

41. Java中都有哪些同步器?1.synchronized关键字   在Java中,使用synchronized关键字可以对代码块或方法进行同步,使得在同一时刻只有一个线程可以执行该代码块或方法。   下面是一个使用synchronized关键字同步的示例代码: public class SynchronizedExample {private…

Android下的Touch事件分发详解

文章目录 一、事件传递路径二、触摸事件的三个关键方法2.1 dispatchTouchEvent(MotionEvent ev)2.2 onInterceptTouchEvent(MotionEvent ev)2.3 onTouchEvent(MotionEvent event) 三、ViewGroup中的dispatchTouchEvent实现四、总结 在Android系统中,触摸事件的分发和…

k8s入门到实战(一)—— kubernetes概述

k8s 概述 k8s github地址:https://github.com/kubernetes/kubernetes 官方文档:https://kubernetes.io/zh-cn/docs/home/ k8s,全程是 kubernetes,这个名字源于希腊语,意为"舵手"或"飞行员” k8s 这…

mysql忘记root密码

一、用安全模式启动mysql 在 my.ini(windows的安装目录)或 /etc/my.cnf(linux) 的最后一行添加 skip-grant-tables1 重启mysql服务 systemctl restart mysqld 二、创建admin用户 免密码使用root登录进去 $ mysql -uroot 创建…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作,比如加载数据,或者初始化三方库等等,导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深,或者一些不会立即使用的布局也在一开始一起加载到…

Linux-Miniconda安装

下载miniconda安装文件 get "https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh" -O ~/miniconda.sh 如果是其它系统或者架构,访问地址获取对应安装脚本: https://mirrors.tuna.tsinghua.edu.cn…

Offlian RL: Weighted Policy Constraints for Offline Reinforcement Learning

AAAI 2023 paper Intro 分布偏移导致离线RL对于OOD数据存在过估计问题。因此一些方法限制策略靠近行为策略。但是着很大程度受限于数据集的质量。若是数据集存在非专家,一个自然的问题是是否有可能构建一个更合理的策略约束方法,该方法通过识别数据集中…

面试算法-111-课程表 II

题目 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。 例如,想要学习课程 0 ,你需要先完成…

SpringBoot 3整合Elasticsearch 8

这里写自定义目录标题 版本说明spring boot POM依赖application.yml配置新建模型映射Repository简单测试完整项目文件目录结构windows下elasticsearch安装配置 版本说明 官网说明 本文使用最新的版本 springboot: 3.2.3 spring-data elasticsearch: 5.2.3 elasticsearch: 8.1…