乐趣区

关于rtc: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 局部则显示了所有后果。

退出移动版