当前位置: 首页 > news >正文

LVGL 9.5.0 嵌入式32位mcu的 ram/rom 精简

为了让lvgl可以在flash只有256KB的mcu上使用,所以在lv_conf.h中做以下调整:

关于RAM运行内存,只需要修改一处 :
LV_MEM_SIZE 默认是 (64 * 1024U) ,我改成了(10* 1024U) 也就是10kb,根据你自己情况调整。

#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN /** Size of memory available for `lv_malloc()` in bytes (>= 2kB) */ #define LV_MEM_SIZE (10 * 1024U) /**< [bytes] */ /** Size of the memory expand for `lv_malloc()` in bytes */ #define LV_MEM_POOL_EXPAND_SIZE 0 /** Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too. */ #define LV_MEM_ADR 0 /**< 0: unused*/ /* Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc */ #if LV_MEM_ADR == 0 #undef LV_MEM_POOL_INCLUDE #undef LV_MEM_POOL_ALLOC #endif #endif /*LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN*/

关于Flash内存:
1.颜色格式精简: 比如说ST7789用的是RGB565颜色格式,那么把其他颜色格式改成0。

#define LV_DRAW_SW_SUPPORT_RGB565 1 #define LV_DRAW_SW_SUPPORT_RGB565_SWAPPED 1 #define LV_DRAW_SW_SUPPORT_RGB565A8 0 #define LV_DRAW_SW_SUPPORT_RGB888 0 #define LV_DRAW_SW_SUPPORT_XRGB8888 0 #define LV_DRAW_SW_SUPPORT_ARGB8888 0 #define LV_DRAW_SW_SUPPORT_ARGB8888_PREMULTIPLIED 0 #define LV_DRAW_SW_SUPPORT_L8 0 #define LV_DRAW_SW_SUPPORT_AL88 0 #define LV_DRAW_SW_SUPPORT_A8 0 #define LV_DRAW_SW_SUPPORT_I1 0 //复杂渲染 (阴影,圆角等),要不要开看你自己选择 #define LV_DRAW_SW_COMPLEX 1

2. UI组件精简:

#define LV_USE_ANIMIMG 1 #define LV_USE_ARC 1 #define LV_USE_ARCLABEL 1 #define LV_USE_BAR 1 #define LV_USE_BUTTON 1 #define LV_USE_BUTTONMATRIX 0 //按钮矩阵 ,非触摸屏应用一般也用不着。 #define LV_USE_CALENDAR 0 //日历,一般用不着。 #define LV_USE_CANVAS 1 #define LV_USE_CHART 0 //图表,轻应用一般也用不着,也可以自己用canvas实现。 #define LV_USE_CHECKBOX 0 //复选框,非触摸屏应用一般也用不着。 #define LV_USE_DROPDOWN 0 //展开选择框,非触摸屏应用一般也用不着。 #define LV_USE_IMAGE 1 #define LV_USE_IMAGEBUTTON 0 #define LV_USE_KEYBOARD 0 //键盘,用不着。 #define LV_USE_LABEL 1 #define LV_USE_LED 1 #define LV_USE_LINE 1 #define LV_USE_LIST 1 #define LV_USE_LOTTIE 0 //LOTTIE动画,用不着 #define LV_USE_MENU 1 #define LV_USE_MSGBOX 0 //消息提示框,非触摸屏应用一般也用不着。 #define LV_USE_ROLLER 0 #define LV_USE_SCALE 0 //尺子,非触摸屏应用一般也用不着。 #define LV_USE_SLIDER 0 //滑条,非触摸屏应用一般也用不着。 #define LV_USE_SPAN 1 #define LV_USE_SPINBOX 0 #define LV_USE_SPINNER 0 #define LV_USE_SWITCH 1 #define LV_USE_TABLE 0 #define LV_USE_TABVIEW 1 #define LV_USE_TILEVIEW 1 #define LV_USE_WIN 1



最后精简的flash占用大概120KB左右,精简前占用240KB。

http://www.jsqmd.com/news/1204890/

相关文章:

  • C++高性能IO架构:从Reactor模式到微秒级响应优化实战
  • 全平台QQ数据库逆向解密:原理、工具与实战指南
  • 华为OD机试C卷“记票统计”题解:双数据结构实现高效映射与顺序输出
  • Python编译安装SSL模块缺失问题深度解析与解决方案
  • fastadmin 最新版本V1.6.5.20260602记录
  • python数据可视化技巧的100个练习 -- 21. 网站流量数据的流图
  • SpringBoot通过Moquette集成MQTT Broker快速实现设备管理消息订阅与发布
  • C# 多线程进阶知识点(线程优先级、多委托传参、线程锁、死锁)
  • Liunx内核IO多路复用selector机制简介
  • 梁山派学习笔记1
  • 宝珀官方售后服务中心电话和完整地址实地考察报告_多信源验证(2026年7月更新) - 宝珀官方售后服务中心
  • 文件夹加密实战指南:从AES原理到EFS、BitLocker与VeraCrypt方案选择
  • 从冰冷的对话框到“会说话的脸“:3D数字人交互技术的落地实践
  • VMware虚拟机磁盘扩容与LVM分区管理实战
  • Ubuntu 14.04 LTS 系统安装与优化指南
  • Python新手入门:从Hello World到调试技巧
  • LangServe革新LLM应用部署:从LangChain链到生产级API的一站式方案
  • 2026 年现阶段,鄯善热门的中央空调安装定做厂家哪个好,安装不当?省钱的秘密藏在这套系统里 - 企业推荐管【认证】
  • Windows服务化运行与shawl工具实战指南
  • 大模型自动评分系统:三种方法、四大缺陷与实战应对策略
  • HarmonyOS7 图标按钮行:用 Row 把图文按钮做得更顺手
  • Linux与Windows虚拟机环境搭建与优化指南
  • 普通烤火罩容易起火,新 e 选安全吗?
  • Selenium框架内网页源码获取:iframe与SPA动态内容实战指南
  • HarmonyOS7 加载状态展示页实战:LoadingProgress 不只是会用,还要用得顺手
  • C++异常处理:从基础语法到RAII与noexcept实战指南
  • 从数组逆向搜索到文件加密:Java实战编程与数据安全入门
  • Claude企业版协作功能解析:项目可见性与团队AI知识库管理
  • python3GUI--使用PyQt5仿飞车登录界面(详细图文介绍)
  • Waveloom:本地化AI编程助手,终端环境下的代码智能辅助方案