本帖最后由 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配置非常保守,笔者给它改大些:
diff --git a/dts/arm/st/n6/stm32n6.dtsi b/dts/arm/st/n6/stm32n6.dtsi
index e779082794c..d29d0c29675 100644
--- a/dts/arm/st/n6/stm32n6.dtsi
+++ b/dts/arm/st/n6/stm32n6.dtsi
@@ -40,9 +40,6 @@
compatible = "mmio-sram";
};
- axisram2: memory@34180400 {
- compatible = "mmio-sram";
- };
clocks {
clk_hse: clk-hse {
diff --git a/dts/arm/st/n6/stm32n657X0.dtsi b/dts/arm/st/n6/stm32n657X0.dtsi
index b503ffed905..87071b4c3c5 100644
--- a/dts/arm/st/n6/stm32n657X0.dtsi
+++ b/dts/arm/st/n6/stm32n657X0.dtsi
@@ -9,10 +9,6 @@
/ {
axisram1: memory@34000000 {
/* 400 kB of FLEXRAM followed by 624 kB of AXISRAM1 */
- reg = <0x34000000 (DT_SIZE_K(400) + DT_SIZE_K(624))>;
- };
-
- axisram2: memory@34180400 {
- reg = <0x34180400 DT_SIZE_K(511)>;
+ reg = <0x34000000 (DT_SIZE_K(800) + DT_SIZE_K(624))>;
};
};
再配置下LVGL demo
west build -b stm32n6570_dk --build-dir=/tmp/test/build samples/modules/lvgl/demos -t menuconfig
注意选中LV_Z_DEMO_BENCHMARK与LV_USE_PERF_MONITOR选项,后一选项对跑benchmark并非必须的,它就是在LCD上显示性能数据用,benchmark嘛当然要数据咯
编译
west build -b stm32n6570_dk --build-dir=/tmp/test/build samples/modules/lvgl/demos
直接运行
halt
load_image /tmp/build/stm32n6.bin 0x34000000
reg pc 0x34008ae4
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带来的优势。
|