黄山派上能使用PSRAM来跑lvgl9吗

看黄山派有 8MB OPI-PSRAM,接口频率144MHz,但是不知道怎么用起来。我在csdn上看到有关于esp32用psram优化lvgl的 【ESP32】Arduino+LVGL 如何使用PSRAM优化显示_arduino esp32 lvgl 全屏缓冲-CSDN博客 想试试看 黄山派上面也能这样优化吗?

在PSRAM上跑是什么意思呢,是将lvgl的函数放到psram中,还是将缓冲buffer放到psram上?

将缓冲buffer放到psram上,糖佬。malloc的是psram上的资源。

如果是要将整个system heap都换成psram,rt_system_heap_init的初始化改下就可以了

但是频率调整的接口调用需要在sram线程栈调用,以及部分外设访问处理的buf需要使用sram

以watch例程为例,默认配置已经把psram用起来了,
l1_non_ret_bss_framebuf是渲染用的framebuf,开了pingpong两个,每个50行,在片内sram上

.RW_IRAM0       0x200125f8    0x31798
 .bss.l1_non_ret_bss_frambuf
                0x200125f8    0x130b0 build_sf32lb52-lcd_n16r8_hcpu\sifli_sdk\middleware\lvgl\lv_drivers\lv_lcd.o

l2_non_ret_bss_frame_buf是送屏用的framebuf,按全屏大小开的,放在了 psram上

.RW_PSRAM_NON_RET
 .bss.l2_non_ret_bss_frambuf
                0x601c5a80    0x55b18 build_sf32lb52-lcd_n16r8_hcpu\sifli_sdk\middleware\lvgl\lv_drivers\lv_lcd.o

这是proj.conf里和渲染framebuf相关的两个宏

CONFIG_LV_FB_TWO_NOT_SCREEN_SIZE=y
CONFIG_LV_FB_LINE_NUM=50

和送屏buffer相关的宏是LCD_FB_USING_AUTO,因为默认是AUTO,所以没有出现在proj.conf

谢谢佬,这个精细的操作对我来说,超纲了,哈哈哈

谢谢大佬,我回头好好研究下这个。 :heart_eyes:

大佬 我想问下原始的链接ld文件是在哪个目录下,才能修改。我这块刚接触不是很熟,没找到原始的链接ld文件是在哪里修改内容 :joy:

原始的链接脚本在路径:drivers/cmsis/sf32lb52x/Templates/gcc/hcpu/link.lds
如果要修改和新增,可以参考小智工程https://github.com/OpenSiFli/xiaozhi-sf32/tree/xiaozhi2/app/project/sf32lb52-lchspi-ulp_hcpu

谢谢 糖佬,俺去好好研究研究。十分感谢

watch例程也有类似的用法,修改过的link文件按照板子名称放在example\multimedia\lvgl\watch\project\sf32lb52-lcd_n16r8_hcpu 这个目录下,

参考这个文档,如果这些目录下都没有link文件,就会选择默认的link文件,
通用工程构建方法 - SiFli SDK编程指南 文档

编译的log也能看到使用的link文件路径

1 个赞

収稻,谢谢大佬。新的知识灌输到我的脑子了 :collision: