最近在学习RTOS
,发现国产RTOS
竟然已经发展得这么蓬勃了,之前一直喜欢用freertos
,但现在更多得国产物联网操作系统更让我值得期待和尝试了。此次,主要是体验下中国移动旗下得一块轻量级RTOS
,通过配置组件,使能GUI模块,顺便跑了下demo
,发现惊喜连连,棒棒哒!
OneOS
是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A
、MIPS
、RISC-V
等主流CPU架构,兼容POSIX
、CMSIS
等标准接口,支持Micropython
语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。
轻量级GUI框架是基于LVGL8.2
,是一个C语言编写的免费的开源图形库,提供了用于嵌入式GUI的各种元素。用户可以利用丰富的图形库资源,在消耗低内存的情况下构建视觉效果丰富多彩的GUI。
Benchmark
是LVGL性能测试的测试用例。其在矩形、边框、阴影、文本、图像混合、图像变换、混合模式等各种情况下进行性能测试。测试期间对象的大小和位置使用伪随机数设置,以使得性能测试可重复。
使用menuconfig
配置Benchmark
性能测试用例,并使用keil或者gcc编译,并烧写程序到stm32f469-st-disco
板子上去。
重启开发板,此时,性能测试将会运行,屏幕顶部显示当前测试步骤的标题和上一步骤的结果。
测试结束后,将创建一个表格来显示测量的FPS值。
FPS的代码测量原理如下:
scene_dsc_t
结构体,并在其中保存各种场景下的帧率测试所需数据,包含:场景名、用于场景测试的回调函数、消耗渲染时间、刷新次数,以及权重。其中测试场景48个,叠加显示不透明度与完全不透明度方式,则测试总场景96个。monitor_cb
中,实现累积渲染时间和周期数。lv_demo_benchmark
帧率测试入口函数中,调用scene_next_task_cb
函数,并在其中调用每一个scene_dsc_t
结构体中的场景测试回调函数,对每一个场景进行测试。测试范围包括:
RGB
图形、ARGB
图形、chorma keyed
图形、indexed
图形、alpha only
图形、RGB
图形着色、ARGB
图形着色、chorma keyed
图形着色、indexed
图形着色、RGB
图形旋转、RGB
图形平滑旋转、ARGB
图形旋转、ARGB
图形平滑旋转、RGB
图形缩放、RGB
图形平滑缩放、ARGB
图形缩放、ARGB
图形平滑缩放对于简单的测试情况,它可能会导致非常高的FPS结果。例如如果在5毫秒内绘制一些简单的矩形,基准测试将显示其为200 FPS。因此,它忽略了LV_DISP_REFR_PERIOD
,它告诉LVGL刷新屏幕的频率。换句话说,测试显示了纯渲染时间的FPS,而不受该宏的限制。
本轻量级GUI帧率测试使用LVGL官方benchmark
,硬件选择stm32f469-st-disco
,Coretex-M4
核心。最终经过测试,得到平均帧率约为80FPS
。Opa.speed
部分,显示不透明度与完全不透明度相比的测量速度。
在表格的第一部分“缓慢但常见的情况”中,显示了被视为常见但速度低于20 FPS
的情况。下面的All cases
部分则显示了所有结果。
首发链接:https://my.oschina.net/u/5412040/blog/5546466