0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HPM6750 LVGL刷屏性能再提升?大神网友开辟片内新天地

先楫半导体HPMicro 2022-07-22 11:19 次阅读

先楫体验官“RSCN”评测了HPM6750的coremark跑分后(原文请至EEWORLD搜索RSCN)又出干货!这次“RSCN”将为我们演示如何优化自己手中的HPM6750使它性能提升。

以下正文转自EEWORLD @RSCN

之前的coremark跑分测评中,在flash和ram运行的性能大致一样,主要的原因还是代码空间小于32K,这刚好是cache的空间范围内,HPM6750有32K ICACHE和32K DCACHE,性能上是最高的,所以跑分上,两者并没有太大的差距。

但是,如果代码空间超过了32K,这时候cache总会有用满的时候,也会有不命中的情况下,这时候需要考虑的正是系统资源和编译整合利用

下面以littlevgl的benchmark跑分例子要进行性能提升的一个验证方法,当然这仅仅作为参考,并不能决定大多数应用场景。

由于上个贴子说明了SPI的一点缺陷,会导致DMA的辅助功能提升并不大,在实际跑lvgl的时候,code放在flash,编译器使用segger,代码缺省优化,也其实没优化的情况下,生成的代码如下:

b51c1710-039c-11ed-9ade-dac502259ad0.png

那么按照这样烧录进去,weightied fps大概是120多左右

b5582e8a-039c-11ed-9ade-dac502259ad0.png

这是有点低了,先从lvgl的配置上去优化,lvgl的刷新周期,从30fps最大刷新率改为100fps刷新率,提升上也并不是很大,大概在160左右变动。

b585787c-039c-11ed-9ade-dac502259ad0.pngb59f55f8-039c-11ed-9ade-dac502259ad0.png

那么开O3优化的效果又是如何,再次烧录进去,weightied fps大概是174多左右

b5bd9676-039c-11ed-9ade-dac502259ad0.png

当然也试了以下方法,实验过程也忘了拍照,但是其实效果性能并没有提升多少,也就180左右变动

1、改为全尺寸双缓冲,但是其实这种对MCU屏幕有用,对于SPI屏幕上,效果并没多少。

2、改为非全尺寸双缓冲,大概五分之一局部刷新。

3、改为单缓冲局部刷新和单缓冲全尺寸刷新,效果均不大。

于是试着找了官方的技术,放假期间的,技术也在中午跟着我远程调试了下,换为GCC编译器,以及开启了相关优化,优化提升也不明显,大概也是180fps变动。

在调试的过程中,有个idea让楼主茅塞顿开,也就是官方技术建议把中断isr放在ram运行,但实际提升也不大。

于是楼主照着这个思路来看下性能有没有增加,也就是把核心的代码加载到ram中运行。好在HPM6750有足够的RAM来加载,根据手册可知道,两核心有SLV各512K,SRAM一共1M,这是足够加载很多核心代码。

b5eb93be-039c-11ed-9ade-dac502259ad0.png

说干就干,在代码上去实现的话,可以使用ATTR_RAMFUNC修饰符放在定义的函数前面,这样编译的时候就会加载到RAM运行。

在实际调试中,单纯几个函数的修饰并不能解决问题。也不可能去手动一个一个修饰,好在与SES可以可视化去操作加载。从ATTR_RAMFUNC,Link文件可看到。

ATTR_RAMFUNC是把函数放在了section的.fast中

b6175e0e-039c-11ed-9ade-dac502259ad0.png

从Link可看到,fast是放在了ILM_SLV的256K空间中

b62d4c00-039c-11ed-9ade-dac502259ad0.png

于是我们可以参考Link,自己在copy个link,把fast放在更大的RAM上,也就是SRAM上

b6445bc0-039c-11ed-9ade-dac502259ad0.png

那么ses如何去加载这些函数到RAM上了,跟keil类似

右键点击需要加载的文件夹,选择options

b658e702-039c-11ed-9ade-dac502259ad0.png

选择code段改为.fast,这样就可以一次搞定加载所有需要到RAM运行的函数。

b6768b90-039c-11ed-9ade-dac502259ad0.png

根据之前的调试性能,再加载核心的放在RAM中运行,烧录代码进去,奇迹的时刻,从122fps提升到286,整整提升了两倍性能,这已经对于SPI这个稍微缺陷IP,足够有帮助了。

b68d26ac-039c-11ed-9ade-dac502259ad0.png

于此总结:

1、在从代码优化,编译器优化上,可以提高性能。

2、在1的基础上,随着代码空间的增多,32k cache总有用完的时候,xip flash 也会有所损失性能,最好就是可以把主要的代码加载到RAM中运行,更可提高性能。

3、除了32K cache的加持,内部RAM整合也有足够2M,对于系统而言,是足够性能整合的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288597
收藏 人收藏

    评论

    相关推荐

    【深度测评】HPM6750 MCU片内16位ADC精度测试

    【深度测评】HPM6750 MCU片内16位ADC精度测试
    的头像 发表于 10-30 17:43 1923次阅读
    【深度测评】<b class='flag-5'>HPM6750</b> MCU片内16位ADC精度测试

    想找一个先楫半导体的HPM6750 使用linux剪裁操作系统的例程

    想找一个先楫半导体的HPM6750 使用linux剪裁操作系统的例程,SDK里给了FREERT的,没有LINUX的。哪里可以下载的到?
    发表于 10-25 16:18

    HPM6750 从 XPI0 CB 端口启动

    XPI0CA端口的引脚,如下图所示。所以最后选择了XPI0的CB端口用于连接NORFlash。部分引脚复用功能(来源:HPM6750数据手册)XPI部分原理图2问题在HP
    的头像 发表于 10-21 08:18 492次阅读
    <b class='flag-5'>HPM6750</b> 从 XPI0 CB 端口启动

    HPM6750 ADC EVK用户使用手册

    电子发烧友网站提供《HPM6750 ADC EVK用户使用手册.pdf》资料免费下载
    发表于 09-19 15:46 0次下载
    <b class='flag-5'>HPM6750</b> ADC EVK用户使用手册

    HPM6750支持硬件串口空闲中断检测吗?

    使用官方的SDK1.2打开uart_hardware_rx_idle例程后终端输入指令generate_project -list后显示支持hpm6750evkmini 但是使用指令
    发表于 09-05 13:49

    HPM6750HPM6450是PIN to PIN的吗?

    相同的封装,HPM6750HPM6450是PINto PIN的吗?
    发表于 06-08 08:27

    请问使用eMMC时, HPM6750支持的最大容量和速率是多少?

    请问使用eMMC时, HPM6750支持的最大容量 和速率是多少? 谢谢!
    发表于 05-26 08:12

    请问HPM6750两核的配置是SMP吗?

    0x90000000 0x9FEFFFFF 255 MBytes XPI1 串行总线控制器XPI1 存储空间 再看linker script 的设置. HPM6750两核的配置是SMP吗?
    发表于 05-26 08:05

    两个HPM6750之间是否可以通过IO进行并行通信?通信案例有吗?

    两个HPM6750之间是否可以通过IO进行并行通信?通信案例有吗
    发表于 05-26 08:02

    HPM6750手册中支持256MB,但是地址线只有13位,是否支持扩展到256MB?

    HPM6750手册中支持256MB,但是地址线只有13位. 是否支持扩展到256MB?
    发表于 05-26 07:24

    请问HPM6750能不能接MCU接口的液晶?

    请问 HPM6750能不能接MCU接口的液晶? 如果能接,能不能给个示意图,手册里没有提到对MCU接口的液晶接法,谢谢
    发表于 05-26 07:15

    HPM6750的4个CANFD以及USB HS能一起运行吗?

    HPM6750 的4个CANFD以及USB HS能一起运行吗,这样就能做个CANFD采集盒了,不知道是否可行?
    发表于 05-26 07:07

    请问HPM6750芯片的湿度敏感等级,***,是多少啊?

    请问HPM6750芯片的湿度敏感等级,***,是多少啊? 在资料里面没有找到相关的描述。 谢谢!
    发表于 05-26 06:23

    HPM6750有没有开启LV_USE_GPU_HPM_PDMA的例程?

    HPM6750, 有没有开启LV_USE_GPU_HPM_PDMA的例程? 现有例程启用 LV_USE_GPU_HPM_PDMA后无法正常运行lvgl的demo, 显示异常. 另
    发表于 05-26 06:14

    HPM6750EVK/HPM6750EVKMINI调试失败的原因及其解决办法

    。 2Bootpin配置 HPM6750的boot pin配置也有可能会影响到芯片调试。建议如果发生调试失败,可以尝试调整boot pin配置如下: BOOT0 = 0,BOOT1=1 避免
    发表于 05-26 06:06