拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

LVGL加载外部Flash图片资源实战:从方案选型到性能优化

LVGL加载外部Flash图片资源实战:从方案选型到性能优化

从MCU里硬挤RAM的日子,做嵌入式UI的应该都不陌生。项目做大了,图标、背景图、开机动画、多语言切换图……一张全屏背景按RGB565算,320x240就是150KB,一套UI下来几张图,内置Flash再省也就1MB到2MB起步,图片资源根本没地方放。于是我们很自然就想到把图片挪到外部Flash,容量大、价格低,几块钱就能买到8MB、16MB的NOR Flash或者更大容量的NAND。但问题也随之来了:LVGL本来设计上把图片解码成像素数组之后才好绘制,直接把图片文件路径丢给它?处理不好,轻则加载卡到掉帧,重则直接内存爆掉、屏幕白屏。这篇文章就从一个真实项目的角度,把LVGL加载外部Flash图片资源的完整链路讲透,包括方案选型、格式转换、解码器注册、性能优化和排坑记录,给正在做类似工作的朋友一个能直接抄作业的参考。

先交代一下项目环境:主控是STM32H750,内部Flash只有128KB起步(实际可用还不到1MB),外挂了一片16MB的W25Q128 SPI NOR Flash,屏幕是480x272的RGB屏,跑FreeRTOS,LVGL用的9.x版本。整个UI包含30多张界面切图、一组图标字体和几个动画序列,图片资源总量大概是9MB左右,全部存放在外部Flash。这套架构跑起来之后,界面切换单帧平均耗时在25ms以内,内存峰值控制在320KB以内,在H750这种RAM不算富裕(内置RAM约1MB,可用堆也就600KB左右)的平台上基本达到了可用状态。整个过程踩了不少坑,下面按实操顺序慢慢展开。

返回列表