[STM32N6] 【STM32N6570-DK测评】LVGL benchmark

[复制链接]
 楼主| xhackerustc 发表于 2025-5-10 08:21 | 显示全部楼层 |阅读模式
本帖最后由 xhackerustc 于 2025-5-10 08:27 编辑

从以往经验要运行LVGL,移植过程很繁琐耗时,难倒是不难,但是需要按照LVGL官方移植文档每个芯片甚至每个板子都要移植一次。但是正如笔者一开始提到的,对于大sram、大flash、高性能的MCU如STM32H7,STM32N6来说再按以前的单片机软件开发的做法其实很费劲,这时候就应该以适当的资源overhead来换取代码的复用,降低维护成本,具体来说就是切换到有比较完整和成熟生态的RTOS上来,zephyr是笔者最最推荐的,下面就以LVGL benchmark demo为例展示下zephyr的方便快捷程度。

首先zephyr中已经集成移植好LVGL并写好了好几个demo,板级开发只要按zephyr规定做好display驱动部分,LVGL就开箱即用了。这已经有Linux下驱动那味了:做好DRM驱动,什么Xorg、wayland即立马可用

充分利用大sram特性,开发中免去烧录过程
因笔者想充分利用大sram特性,加载到sram从sram运行,能不烧录flash就不烧录flash。幸运的是stm32n6的sram充分大,使得把LVGL与其demo都编译了sram也能完全放得下。但是主线zephyr中默认是要烧录flash的,所以它的默认sram配置非常保守,笔者给它改大些:
  1. diff --git a/dts/arm/st/n6/stm32n6.dtsi b/dts/arm/st/n6/stm32n6.dtsi
  2. index e779082794c..d29d0c29675 100644
  3. --- a/dts/arm/st/n6/stm32n6.dtsi
  4. +++ b/dts/arm/st/n6/stm32n6.dtsi
  5. @@ -40,9 +40,6 @@
  6.                 compatible = "mmio-sram";
  7.         };

  8. -       axisram2: memory@34180400 {
  9. -               compatible = "mmio-sram";
  10. -       };

  11.         clocks {
  12.                 clk_hse: clk-hse {
  13. diff --git a/dts/arm/st/n6/stm32n657X0.dtsi b/dts/arm/st/n6/stm32n657X0.dtsi
  14. index b503ffed905..87071b4c3c5 100644
  15. --- a/dts/arm/st/n6/stm32n657X0.dtsi
  16. +++ b/dts/arm/st/n6/stm32n657X0.dtsi
  17. @@ -9,10 +9,6 @@
  18. / {
  19.         axisram1: memory@34000000 {
  20.                 /* 400 kB of FLEXRAM followed by 624 kB of AXISRAM1 */
  21. -               reg = <0x34000000 (DT_SIZE_K(400) + DT_SIZE_K(624))>;
  22. -       };
  23. -
  24. -       axisram2: memory@34180400 {
  25. -               reg = <0x34180400 DT_SIZE_K(511)>;
  26. +               reg = <0x34000000 (DT_SIZE_K(800) + DT_SIZE_K(624))>;
  27.         };
  28. };

再配置下LVGL demo
  1. west build -b stm32n6570_dk --build-dir=/tmp/test/build samples/modules/lvgl/demos -t menuconfig
1-1.jpg
注意选中LV_Z_DEMO_BENCHMARK与LV_USE_PERF_MONITOR选项,后一选项对跑benchmark并非必须的,它就是在LCD上显示性能数据用,benchmark嘛当然要数据咯

编译
  1. west build -b stm32n6570_dk --build-dir=/tmp/test/build samples/modules/lvgl/demos



直接运行
  1. halt
  2. load_image /tmp/build/stm32n6.bin 0x34000000
  3. reg pc 0x34008ae4
  4. resume



LVGL benchmark视频供欣赏
https://www.bilibili.com/video/BV1KJV9zjEVV/

可以看到跑30fps毫无压力,整个过程cpu使用率并不高大部分时间在1%到30%之间,在文本下拉测试过程瞬间曾最高达到80%使用率,但是注意它的fps仍然保持在30fps左右,很了不起的成绩。

总结
大家发现没有,本次LVGL测试并没涉及到LVGL移植,极其方便,对真正做到了对开发者开箱即用,而且笔者相信ST官方在添加display驱动支持时,也并不需要改动任何LVGL的东西,只要保证display驱动和dts符合zephyr标准即可,这种方便正是zephyr RTOS带来的优势。



 楼主| xhackerustc 发表于 2025-5-11 10:31 | 显示全部楼层
因zephyr暂无STM32N6的GPU支持,所以这个LVGL应该无GPU加速,一旦ST把GPU支持给做到zephyr中去,cpu使用率会大幅降低
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

165

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

42

主题

165

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部