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