OneOS 下的图形组件配置学习

学习小计

不积跬步无以至千里,不积小流无以成江海。此篇文章,主要对自己使用OneOS下的一个图形组件,对于配置的一些感受,欢迎指正。

功能

轻量级GUI框架基于LVGL移植开发,针对图形化开发工具的设计,以模块化的方式,解决物联网操作系统在微控制器下图形界面资源占用过大、源码不可见、图形界面库不统一、使用难度较大的痛点。

主要功能如下:

  1. 核心部件,如:按钮、图表、滑杆、图片、复选框、下拉列表、标签、滚轮、开关、线、文本框、弧、进度条等。
  2. 对象类型的基本属性:位置、尺寸、家长、样式、事件处理程序等等
  3. 触发事件机制:当被点击、滚动、数值改变、重新绘制等时,
  4. 动态创建和删除对象
  5. 颜色模块:处理所有与颜色相关的功能,如颜色深度、颜色深度之间的转换、混合颜色等
  6. 图层用于多个对象之间的显示层级关系
  7. 执行动画的创建、删除、播放、暂停、停止等,管理动画的轨迹、速度、时间等。
  8. 具有抗锯齿、不透明度、平滑滚动的高级图形
  9. 具有类似 CSS 样式的完全可定制的图形元素
  10. 支持bmp/png/jpg图片格式
  11. 支持使用点阵及TTF矢量字库
  12. 支持多国语言,自带中英文
  13. 多输入设备支持(如触摸板、鼠标、键盘、编码器等)
  14. 支持本地模拟仿真

配置

此份说明文档主要阐明如何高效使用menuconfig对轻量级框架进行快速使用和配置。

(Top) → Components→ GUI
(lcd) GUI display dev name
(touch) GUI input dev name
[*] Enable LVGL  --->

touchlcdGUI的输入输出设备,选中Enable LVGL即可使能LVGL,目前支持的版本为LVGL7.9LVGL8.2

    LVGL (Enable lvgl 8.2)  --->
    LVGL basic menu  --->
    Widget usage  --->
    Extra Widgets  --->
    Themes  --->
    Layouts  --->
    Text Settings  --->
    Font usage  --->
    LVGL FileSystem  --->
    LVGL Log  --->
    LVGL Asserts  --->
    Third party Lib  --->
    Extra  --->
[ ] Enable LVGL examples  ----
[*] Enable LVGL Demo  --->

以上是适配支持的LVGL主要menuconfig配置。从上到下一一解释。

  1. LVGL basic menuLVGL最基本的配置,也是最重要的配置
  2. Widget usage是对基础控件的支持与使能
  3. Extra Widgets是对额外的高级控件的支持与使能
  4. Themes是自带的一些主题
  5. Layouts布局
  6. Text Settings文本编码设置
  7. Font usage字体选择
  8. LVGL FileSystem文件系统支持
  9. LVGL Log信息打印辅助开发
  10. LVGL Asserts断言
  11. Third party Lib第三方库
  12. Extra其它功能
  13. Enable LVGL examples一些简单的示例
  14. Enable LVGL Demo一些复杂的示例

LVGL basic menu

(120) LVGL buff lines
(20) LVGL display refresh period(ms)
(30) Input device read period(ms)
(10) GUI task priority
(4096) GUI task stack size
(5) GUI task msleep
[ ] Enable LVGL two buff
[ ] Enable CPU usage and FPS count Show
[ ] Show the used memory and the memory fragmentation
[ ] LVGL minimal configuration.
[*] Enable graphics acceleration
[*] Enable complex draw engine
  1. LVGL的单绘制缓冲区的行数
  2. 默认显示刷新周期,LVGL将在此期间重新绘制更改的区域
  3. 输入设备读取周期
  4. GUI任务的优先级设置
  5. GUI任务的栈大小设置
  6. GUI任务的默认睡眠时间
  7. 使能LVGL双绘制缓冲区
  8. 显示CPU使用率和FPS计数显示
  9. 显示已用内存和内存碎片
  10. LVGL最小化配置,一般用于硬件资源很小的情况
  11. 使能硬件加速
  12. 使能复杂绘图引擎

widget usage

支持了很多控件,可以自己选择是否需要,默认全部选中

extra widgets

支持了很多高级控件,可以自己选择是否需要,默认全部选中

theme

支持的主题,是对象的默认样式。创建对象时,将自动应用来自主题的样式。

layouts

[*] A layout similar to Flexbox in CSS.
[*] A layout similar to Grid in CSS

支持flex弹性布局和grid网格布局。

text settings

(X) UTF8
( ) ASCII

为字符串选择字符编码。IDE或编辑器应具有相同的字符编码。

font usage

选择支持的字体。

filesystem

-*- LVGL using filesystem
        Select mount device (SD/TF Card)  --->

通过此配置,关联组件中的文件系统。

log

( ) TRACE
( ) INFO
(X) WARNING
( ) ERROR
( ) USER LOG
( ) NO LOG

LVGLlog日志,支持以上6个级别,级别越高,打印信息更多。

asserts

[*] Check if the parameter is NULL. (fast)
[*] Checks if the memory is successfully allocated or no. (fast)
[ ] Check if the styles are properly initialized. (fast)
[ ] Check the integrity of `lv_mem` after critical operations. (Slow)
[ ] Check NULL, the object's type and existence. (Slow).

断言机制,分别在于:

  1. 检查参数是否为NULL
  2. 检查内存是否已成功分配
  3. 检查样式是否正确初始化
  4. 关键操作后检查lv_mem的完整性
  5. 检查NULL,对象的类型和存在性

third party lib

[ ] Enable LVGL GIF
[ ] Enable LVGL PNG
[ ] Enable LVGL JPG
[ ] Enable LVGL BMP
[ ] Enable LVGL QRCODE

支持的第三方库

examples and demo

选中后,选择对应的示例,供开发者运行体验。

demo选中后,编译运行后将直接运行该demoexample选中后,将会添加到shell命令中去,需要开发者,自己在shell中调用该命令,example命令以ex_开头。

注意事项

使用LV_CONF_MINIMAL作为LVGL最小化配置时,需要注意首先取消使能LVGL,然后保存配置后,再次使能LVGL,然后再选中LVGL minimal configuration

(lcd) GUI display dev name
(touch) GUI input dev name
[ ] Enable LVGL  --->
Components → GUI→ Enable LVGL→ LVGL basic menu
(20) LVGL display refresh period(ms)
(30) Input device read period(ms)
(10) GUI task priority
(4096) GUI task stack size
(5) GUI task msleep
[ ] Enable LVGL two buff
[ ] Enable CPU usage and FPS count Show
[ ] Show the used memory and the memory fragmentation
[*] LVGL minimal configuration.

在使用stm32f469-st-disco来测试benchmark测试帧率时,通过配置选中该demo

Components → GU→ Enable LVGL→ Enable LVGL Demo
(1) Enable LVGL demo benchmark
(0) Enable LVGL demo music
(0) Enable LVGL demo keypad and encoder
(0) Enable LVGL demo stress
(0) Enable LVGL demo widgets

需要注意的是:

(120) LVGL buff lines
(20) LVGL display refresh period(ms)
(30) Input device read period(ms)
(10) GUI task priority
(4096) GUI task stack size
(5) GUI task msleep
[ ] Enable LVGL two buff
[ ] Enable CPU usage and FPS count Show
[ ] Show the used memory and the memory fragmentation
[ ] LVGL minimal configuration.
[*] Enable graphics acceleration
[*] Enable complex draw engine
  1. 使能图形加速Enable graphics acceleration,该MCU具有专门处理图形图像的硬件,比如 stm32 的 DMA2D。
  2. LVGL display refresh period,刷新周期选择20ms
  3. 绘制缓冲区大小,选择120行,不选择双缓冲区,这是在有限条件下的折中
  4. 不要选择Enable CPU usage and FPS count ShowShow the used memory and the memory fragmentationLVGL minimal configuration
  5. 优化级别选择-O2
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容