如何在MDK中部署LVGL?

💡 原文中文,约8700字,阅读约需21分钟。
📝

内容提要

LVGL在2月份推出了LVGL9,3月19日发布了首个维护更新版本v9.1.0。LVGL9追求图形性能为主,资源消耗为辅,改进了2D GPU的支持,提供了LVGL Intrinsics机制。LVGL8的维护更新版本v8.4.0也发布了。

🔎

延伸解读

LVGL9 性能优先的设计转变

LVGL9 从追求小巧转向图形性能为主,资源消耗为辅,这与 MCU 资源日益丰富的趋势相适应。在 2D GPU 支持上,LVGL9 允许 CPU 与 GPU 并行操作,并支持多种硬件加速方法同时存在,例如 Arm-2D(Helium 加速)和 2D GPU 可以协同工作,将 GPU 不擅长的任务交给 Helium 加速的软件处理。此外,LVGL9 引入 Intrinsics 机制,简化了针对特定 2D 操作的加速过程。

颜色格式统一为 ARGB8888 的影响

在 LVGL9 中,LV_COLOR_DEPTH 仅用于指定用户屏幕的颜色格式,而内核统一使用 ARGB8888 进行内部处理。这意味着资源文件会先转换为 ARGB8888 再统一处理,处理后的显示缓冲在送往 LCD 前再转换回用户指定的颜色格式。这种设计旨在提升性能,但可能增加内存占用和转换开销,开发者需根据实际硬件资源权衡。

MDK 部署中 cmsis-pack 的模块化优势

通过 MDK 的 cmsis-pack 部署 LVGL9,用户可以像点菜一样按需选择模块,例如必选的 Essential 核心服务、OS 抽象层、显示驱动或移植模板。cmsis-pack 会自动将所选模块的宏定义加入 RTE_Components.h,省去手动配置的麻烦。LVGL9 还提供了常见硬件平台的现成驱动支持,简化了移植过程。

移植时的注意事项与性能测试

使用移植模板时,需将 lv_port_disp_template.h 和 .c 文件开头的 #if 0 改为 #if 1 以生效,并根据硬件选择缓冲模式。若系统没有 DMA 或专用 LCD 控制器,双缓冲不会带来本质性能提升。时间相关移植推荐使用 perf_counter,并注意在初始化前更新 SystemCoreClock。跑 Benchmark 或 Widgets Demo 时,需开启 LV_USE_PERF_MONITOR 和 LV_USE_SYSMON,且 Widgets Demo 要求栈大小不小于 4K。

❓

Q&A

LVGL9与LVGL8相比有哪些主要改进?

LVGL9在图形性能上进行了优化,支持CPU与GPU并行操作,并允许同时使用多个硬件加速方法,简化了加速过程。

如何在MDK中获取LVGL cmsis-pack?

用户可以通过Github下载LVGL cmsis-pack,关注公众号获取网盘链接,或直接通过MDK的Pack-Installer安装。

在MDK中部署LVGL的步骤是什么?

步骤包括配置RTE、配置LVGL和使用模板进行移植,确保选择所需模块并进行相应的代码修改。

LVGL9的内核使用什么颜色格式?

LVGL9的内核统一使用ARGB8888作为颜色格式,以提升性能。

如何使用perf_counter来提升性能监控?

用户需获取perf_counter的cmsis-pack并在工程中初始化,确保在main函数中调用相关初始化代码。

LVGL9如何支持周期性刷新任务?

LVGL9提供了lv_timer_periodic_handler()函数,可以在主循环中定期调用以刷新任务。

🏷️

标签

➡️

继续阅读