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屏跑FreeRTOSLVGL用的9.x版本。整个UI包含30多张界面切图、一组图标字体和几个动画序列图片资源总量大概是9MB左右全部存放在外部Flash。这套架构跑起来之后界面切换单帧平均耗时在25ms以内内存峰值控制在320KB以内在H750这种RAM不算富裕内置RAM约1MB可用堆也就600KB左右的平台上基本达到了可用状态。整个过程踩了不少坑下面按实操顺序慢慢展开。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →