OneOS下的GUI框架测试

1.简介

最近在学习RTOS,发现国产RTOS竟然已经发展得这么蓬勃了,之前一直喜欢用freertos,但现在更多得国产物联网操作系统更让我值得期待和尝试了。此次,主要是体验下中国移动旗下得一块轻量级RTOS,通过配置组件,使能GUI模块,顺便跑了下demo,发现惊喜连连,棒棒哒!

OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/AMIPSRISC-V等主流CPU架构,兼容POSIXCMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。

轻量级GUI框架是基于LVGL8.2,是一个C语言编写的免费的开源图形库,提供了用于嵌入式GUI的各种元素。用户可以利用丰富的图形库资源,在消耗低内存的情况下构建视觉效果丰富多彩的GUI。

Benchmark是LVGL性能测试的测试用例。其在矩形、边框、阴影、文本、图像混合、图像变换、混合模式等各种情况下进行性能测试。测试期间对象的大小和位置使用伪随机数设置,以使得性能测试可重复。

2.测试步骤

使用menuconfig配置Benchmark性能测试用例,并使用keil或者gcc编译,并烧写程序到stm32f469-st-disco板子上去。

重启开发板,此时,性能测试将会运行,屏幕顶部显示当前测试步骤的标题和上一步骤的结果。

测试结束后,将创建一个表格来显示测量的FPS值。

3.测试原理

FPS的代码测量原理如下:

  1. 构造scene_dsc_t结构体,并在其中保存各种场景下的帧率测试所需数据,包含:场景名、用于场景测试的回调函数、消耗渲染时间、刷新次数,以及权重。其中测试场景48个,叠加显示不透明度与完全不透明度方式,则测试总场景96个。
  2. 在显示驱动的回调函数 monitor_cb中,实现每一个测试场景的累积渲染时间和帧数。获取到此数据后,便可得到每秒钟帧数,即FPS=帧数/累积渲染时间。
  3. lv_demo_benchmark帧率测试入口函数中,调用scene_next_task_cb函数,并在其中调用每一个scene_dsc_t结构体中的场景测试回调函数,对每一个场景进行测试。
  4. 测试完每一个场景,即可得到每一个场景对应的帧率FPS,通过加权平均的方式,获取到平均帧率。

测试原理逻辑图如下:

测试范围包括:

  1. 矩形:普通矩形、圆角矩形、圆形
  2. 边框:普通边框、圆角边框、圆形边框、上边框、左边框、左上边框、左右边框、上下边框
  3. 阴影:小阴影、小阴影偏移、大阴影、大阴影偏移
  4. 图形:RGB图形、ARGB图形、chorma keyed图形、indexed图形、alpha only图形、RGB图形着色、ARGB图形着色、chorma keyed图形着色、indexed图形着色、RGB图形旋转、RGB图形平滑旋转、ARGB图形旋转、ARGB图形平滑旋转、RGB图形缩放、RGB图形平滑缩放、ARGB图形缩放、ARGB图形平滑缩放
  5. 文本:小型文本、中等文本、大型文本、压缩的小型文本、压缩的中等文本、压缩的大型文本
  6. 线条
  7. 弧形:普通弧线、粗弧线
  8. 混合模式:混合模式下的矩形、混合模式下的边框、混合模式下的阴影、混合模式下的图形、混合模式下的线条、混合模式下的弧线、混合模式下的文本

对于简单的测试情况,它可能会导致非常高的FPS结果。例如如果在5毫秒内绘制一些简单的矩形,基准测试将显示其为200 FPS。因此,它忽略了LV_DISP_REFR_PERIOD,它告诉LVGL刷新屏幕的频率。换句话说,测试显示了纯渲染时间的FPS,而不受该宏的限制。

4.结果分析

本轻量级GUI帧率测试使用LVGL官方benchmark,硬件选择stm32f469-st-discoCoretex-M4核心。最终经过测试,得到平均帧率约为80FPSOpa.speed部分,显示不透明度与完全不透明度相比的测量速度。

在表格的第一部分“缓慢但常见的情况”中,显示了被视为常见但速度低于20 FPS的情况。下面的All cases部分则显示了所有结果。


就是玩儿~

15 声望
0 粉丝
0 条评论
推荐阅读
网络世界里的大图书馆 ZLibrary
现实之中,纸质书籍的购买,逐渐没落。现在还能回想起读书时候在新华书店买入的心情,但时间却再也回不去了。我们常常在网络上网,浏览各种各样的信息。但,这种信息都是些什么呢?我给自己的行为归了个类:娱乐...

蓁蓁阅读 53

封面图
电阻为什么都是4.7kΩ、5.1kΩ,而不是整数5kΩ?
很多刚开始接触电路设计的小伙伴,可能会对电阻值觉得非常困惑,为什么通用的标准电阻阻值不是整数?例如通常是4.7kΩ、5.1kΩ,而不是5kΩ。

攻城狮华哥1阅读 226

封面图
SPI协议与GPIO模拟SPI的实现
SPI(Serial Peripheral Interface, 串口外设接口),它用于MCU与各种外围设备以串行方式进行通信,速度最高可达25MHz以上。

十二楼主阅读 615

《鹅鸭杀》爆火,一文带你了解如何实现顶流社交游戏
2023 年开年,一款名为《鹅鸭杀》(Goose Goose Duck)的社交游戏异军突起,不仅吸引了很多萌新玩家,还让各大平台的知名游戏主播们沉迷其中,与粉丝们一起夜夜开黑。

声网阅读 534

封面图
RTE 领域的发展,为视频编解码标准带来哪些新变化?丨Dev for Dev 专栏
1990 年左右 H.261 标准的制定,开启了视频编解码标准化的历程。经过 30 多年的努力,视频的编码效率得到了极大幅度的提升。在下图中,我们大致列举了一下所有的视频编码标准的制定组织和发布时间。

声网阅读 452

CS5518/MIPI转LVDS转换方案芯片
CS5518是一个MIPI DSI输入,LVDS输出转换芯片。MIPI DSI最多支持4个车道,每个车道的最大运行速度 为1Gbps。LVDS支持18或24位像素,25MHz到154MHz,通过VESA或JEIDA格式。它只能使用一个1.8V电源,节省 成本,优...

13699759787阅读 443

封面图
声网许振明:RTC 场景 UHD 视频应用和探索
大家好,我是声网的视频工程师许振明,今天跟大家主要介绍一下声网在 RTC 场景 UHD 视频的应用和探索。主要基于声网 HFR 和 VDR 两个系统来展开分享。

声网阅读 396

就是玩儿~

15 声望
0 粉丝
宣传栏