Bigan(安)
东方欲晓 莫道君行早
展开
-
XSLVGL2.0 开发手册
XSLVGL2.0 Brief原创 2023-11-18 16:01:46 · 393 阅读 · 0 评论 -
XSLVGL2.0 Brief(v2.0)
XSLVGL是基于开源项目LVGL研发的嵌入式图形显示系统,也可以简单地理解为XSLVGL在完全兼容开源的LVGL开发方式基础上,增加了一些新的特性。XSLVGL分为Linux版本和FreeTROS两个版本。两个版本使用同一套开发接口,这大大增加了应用的可移植性。XSLVGL在针对特定平台的性能升上做了大量的优化,包含帧率送显、解码优化和LVGL源码优化等。基于这些优化,使得XSLVGL能达到60帧送显的能力。XSLVGL也提供了丰富的新特性接口,以期提升项目的开发速度。原创 2023-11-18 15:58:10 · 213 阅读 · 0 评论 -
【XSLVGL2.0】如何实现一些简单的图表(lv_chart.c)
本章节旨在熟悉lv_chart组件。原创 2024-04-22 15:01:39 · 145 阅读 · 0 评论 -
【嵌入式】关于lv_img_conv工具安装后执行失败的问题
最近在使用。原创 2024-03-19 19:21:54 · 162 阅读 · 0 评论 -
【案例讲解】LVGL 如何用LVGL画加载圈
很多场景下,在用户操作时,需要使用一个加载圈来缓解用户焦虑问题。原创 2023-11-26 19:11:46 · 869 阅读 · 1 评论 -
【XSLVGL2.0】如何在其它线程内更新UI
项目常常会在其它线程更新UI的状态,但如果直接更新UI会导致UI数据异常从而使得UI挂死。这时只需要使用UI资源锁即可保证UI数据不会异常了。参考XSLVGL2.0 User Manual 页面管理器(v2.0)中和// 去操作UI。原创 2023-11-26 16:59:39 · 843 阅读 · 0 评论 -
【XSLVGL2.0】如何注册焦点对象及焦点保存
LVGL的焦点多数是需要自己手动注册的,它被注册在lv_group_t对象中。XSLVGL2.0的焦点逻辑是独立管理的,它与每一个页面绑定。所以当页面切换时,不会存在焦点混乱的问题。另外,LVGL一些对象会向默认焦点组自动注册,该功能可能导致焦点中多出一些莫名奇妙的焦点对象出来。// 显示时同步焦点// 隐藏时保存焦点// 向焦点组注册焦点对象// 在这里加焦点事件组件。原创 2023-11-25 19:39:04 · 615 阅读 · 0 评论 -
【XSLVGL2.0】如何实现一个顶层图层对话框
当项目中要求一个页面显示在最顶层,不能被其它页面遮挡时,可以使用此方法。XSLVGL2.0提供了一个消息图层来处理这一逻辑。只需要将新创建的对象以此为父对象创建即可。原创 2023-11-25 19:26:14 · 512 阅读 · 0 评论 -
【XSLVGL2.0】如何向指定页面传递消息
项目中经常遇见一场景,当页面A有数据变化时,页面B同时需要更新数据。原创 2023-11-25 19:20:52 · 506 阅读 · 0 评论 -
【XSLVGL2.0】如何做全局键功能和键值映射
项目常见需要配置一个按键,并要求短按此按键回到首页, 长按此按键进行关机。XSLVGL2.0在输入设备对接接口中,有一个回调,在此回调中可以直接收到输入设备上报的所有按键事件。一般这个功能实现放在main.c中。-1 : 0;} else {// 跳转到首页} else {// 关机} else {return -1;-1 : 0;} else {// 跳转到首页if (timer!原创 2023-11-25 18:58:59 · 434 阅读 · 0 评论 -
【XSLVGL2.0】如何监听供电状态(包含电池电量等)
XSLVGL2.0对供电状态进行了功能封装,这样能减少客户做一系列判定逻辑的代码,只需要根据不同的事件,显示不同的状态即可。根据XSLVGL2.0 User Manual 系统管理器(v2.0)中相关APIs的描述,只需要注册接口即可监听这一功能(一注册此接口即会返回当前新的状态)。case XSLV_POWER_SUPPLY_MODE_BATTERY: // 电池供电case XSLV_POWER_SUPPLY_MODE_BATTERY_CHARGING: // 充电中。原创 2023-11-25 18:14:41 · 497 阅读 · 0 评论 -
XSLVGL2.0 User Manual 主题管理器(v2.0)
LVGL本身是有主题功能的,但它是针对全局的配置,放在XSLVGL上,作为各个部分是拆分成页面的形式并不是特别友好。更直接点说,就是面对复杂的多页面切换时,这种方式不够灵活。原创 2023-11-25 18:00:08 · 966 阅读 · 0 评论 -
【XSLVGL2.0】如何新增一种语言和词条
本文件旨在介绍新增一种语言词条的方法。原创 2023-11-25 02:17:16 · 1428 阅读 · 0 评论 -
XSLVGL2.0 User Manual 页面管理器(v2.0)
页面管理器是参考以下的模式建立的一套独立页面的管理功能。此套逻辑,保证LVGL在渲染页面时,仅渲染当前需要展示的页面,而其它页面会被放至后台栈中不会被渲染,以期提升渲染速度。原创 2023-11-23 15:17:31 · 371 阅读 · 0 评论 -
XSLVGL2.0 User Manual 资源管理器(v2.0)
资源管理器是配合配置文件desc.json来实现的,而desc.json存在,使的多语言、字库的支持更加友好。简单点来说,用户通过资源ID(由’R.'开头的字符串)来查询,资源管理器会自动结合当时的环境给出正确的资源内容。"zh_CN": {"en_US": {"name":"English", "desc":"英语"},原创 2023-11-23 11:25:39 · 123 阅读 · 0 评论 -
XSLVGL2.0 User Manual 外设管理器(v2.0)
外设管理器是用来管理设备上热插拔设备的。例如SD卡、USB设备等。原创 2023-11-22 16:04:03 · 140 阅读 · 0 评论 -
XSLVGL2.0 User Manual 系统管理器(v2.0)
系统管理器主要负责两个功能:一是基础的系统配置,二是基础的系统功能porting管理。基础的系统配置提供包含首次开机默认音量、音量加减、屏幕亮度加减、亮/关屏、自动熄屏超时计算、自动待机超时计算、自动关机超时计算等接口。这些接口都是一般项目中最常用的接口。基础的系统功能porting管理是为了方向移植到不同的平台上,或者定制化一些系统接口功能。所有的porting接口由结构体进行管理,通过函数可以获取该结构指针位置。原创 2023-11-22 15:22:19 · 114 阅读 · 0 评论 -
XSLVGL2.0 User Manual 缩略图生成器(v2.0)
本文旨在说明缩略图生成器的实现方式及使用方法。缩略图生成器采成异步线程来解决生成时执行时间不可控的UI阻塞问题,同时送数据的队列采用的先进后出的方式,保证最近请求能在第一时间响应请求。送数据的队列由初始化时决定,当即时请求数量超出此队列长度时,先加入此队列的请求会被自动取消掉(使用此功能多为配合UI展示来做的,超出队列的请求视为已被隐藏的对象)。替换系统管理器中的............// 特殊处理return ret;原创 2023-11-22 13:15:54 · 124 阅读 · 0 评论 -
【嵌入式】如果用PS导出GIF图片
GIF图片是嵌入式上做动画常用的简化开发的手段。一些动画效果,直接使用GIF图片,这样即节省开发成本,也能提高项目的可维护性。但很多人却不知道嵌入式的GIF解码器一般是比较简单的。因此,如果GIF图片不设置播放延时会导致同一张图片在不同的平台上展示出不同的动画效果来。这里就介绍一下,如果使用PS导出一个嵌入式能正常使用的GIF图片来。原创 2022-10-25 15:37:13 · 2621 阅读 · 0 评论 -
【嵌入式】如何替换malloc
使用LD_PRELOAD字段的预加载方式xsmemcheck.so 参考实现代码如下。原创 2023-11-21 11:42:16 · 223 阅读 · 0 评论 -
【嵌入式】【GIT】如何迁移老的GIF到新的仓库时使用LFS功能并保持LOG不变
假设有仓库需要迁移到新的仓库如果正常时,无论新老仓库都会查到以下log,表示tags和分支都迁移成功了。原创 2023-10-31 19:00:24 · 328 阅读 · 0 评论 -
【嵌入式】关于全志平台的工具链管理说明
本文档旨在说明存放全志平台上应用开发所使用的工具链资源,这些资源仅供合作方使用。为方便合作方随时下载,本文档链接为公开地址,但其内所有资源均为带密码的压缩资源包,合作方向可联系管理人员获得某指定包的解压密码。新的合作方可参考下面的申请流程成我方的合作方。中的法律流程要求指客户的项目涉及违法、违规被公、检、法相关人员问询时。所有的压缩包按统一的目录结构来存放资源,以。例如:在2022年11月25日,我方对。的方式进行命名管理。本文档内所有资源均按。原创 2022-11-26 17:17:15 · 916 阅读 · 0 评论 -
【案例讲解】LVGL关于旋转的配置
在实现项目中,因为横竖屏的关系,需要对其做90度的旋转。配置旋转时发现一些局部刷新控件,旋转后效果不对。异常图标正常图标。原创 2023-10-13 13:04:26 · 1950 阅读 · 0 评论 -
【案例讲解】LVGL 解决字体展示花屏的问题
R11上显示字体花屏原创 2023-02-21 13:07:26 · 1712 阅读 · 0 评论 -
【定制功能】LVGL 图片缩放
实际项目中,有很多图片与实际展示的大小不一致的,所以需要有一个功能,能自行对图片进行缩放。原创 2022-10-20 19:50:51 · 4585 阅读 · 0 评论 -
【案例讲解】LVGL 如何用LVGL画一个勾
在很多的场景下需要确认和取消按钮。而如果只是显示几个字符的样例,你的DEMO是上去档次的,所以这里介绍一下确认按钮中的勾和叉,如何实现。原创 2022-12-26 10:01:18 · 1177 阅读 · 0 评论 -
【案例讲解】LVGL 给label增加滑动条
【代码】【案例讲解】给label增加滑动条。原创 2023-02-20 14:47:26 · 779 阅读 · 0 评论 -
LVGL lv_color_t 像素定义详解
本章节从一个特殊的4x2的32位真彩色的长方形图片,通过工具生成不同的内置图片数据来入手,以更深入的了解LVGL中像素的处理思路和逻辑。小白提醒转换时,最好先将图片转换成png格式,因为使用bmp或者其它格式图片存在生成的数据丢失透明度的问题。CF_RAW生成的内置图片数据被定义为一个/**在结构体,有一个颜色格式(Color format)字段(header.cf),决定了对数据的处理逻辑,它被定义为的枚举类型。而这个未知,资源可能出错了;包含和。原创 2023-06-08 22:55:35 · 1817 阅读 · 0 评论 -
LVGL font 字库管理(lv_font.c)
LVGL框架中对于字库提供了三个接口(在`lvgl/src/font/lv_font.c`中)用于获取字的图片、字的信息及查询字的宽度。在这三个接口之下,提供了两种字库解决方案:内置字库和外挂字库(freetype)。原创 2022-08-19 19:14:02 · 1796 阅读 · 0 评论 -
LVGL misc area 方块区域通用函数(lv_area.c)
该章节主要描述LVGL中lv_area.c和lv_area.h中定义的对方块区域使用时常用到的函数接口。这些函数的理解,直接影响对LVGL渲染的方案理解,所以这里列举说明一下。原创 2023-10-08 20:57:37 · 438 阅读 · 0 评论 -
LVGL misc log日志系统(lv_log.h)
LVGL的日志系统实现比较简单,它支持五个日志级别和一个日志导出接口。用户可以通过接口来设置输出日志级别;通过接口来导出日志到用户的日志管理系统中。当然为了减少代码量,日志级别设置也有一个宏来管理日志级别。是从代码编译上管理日志接口的,它管理对应级别的日志是否编译进代码;而只是控制运行时是否将日志输出。...原创 2022-08-24 16:49:01 · 923 阅读 · 0 评论 -
LVGL misc lru最少使用算法(lv_lru.c)
lru算法全称为的缩写,即最近最少使用的意思,是一种常用的页面转换算法,多用于缓存管理中。百度百科 页面置换算法页面转换算法:在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法该算法的思路非常简单:发生缺页中断时,将最久未使用的页面转换出去。在LVGL中,该算法用于SDL的缓存管理中,代码位置。}......原创 2022-08-26 17:59:13 · 978 阅读 · 0 评论 -
LVGL misc tlsf算法(lv_tlsf.c)
LVGL采用的内存分配器是使用的tlsf算法。因为这个算法只是一个实时系统常用的算法,可以看作是一个工具,对LVGL本身并没有逻辑上的关联,所以这里只介绍一下算法的基本知识,就不过多分析源码实现了。如果有想了解该算法的,可以再找找相关实现原理。...原创 2022-08-22 21:39:57 · 1250 阅读 · 0 评论 -
LVGL misc list 列表管理(lv_ll.c)
LVGL中提供了一个基础的列表管理机制,它是一个标准的双向循环列表。由表头和数据节点组成。所形成的形态如下图所示:数据结构上,将节点的数据段data放在前面,而head和tail放在末尾,这样就不影响将列表生成的对象直接强转成定义的数据结构了。...原创 2022-08-19 12:29:59 · 1536 阅读 · 0 评论 -
LVGL misc timer 定时器(lv_timer.c)
定时器机制是LVGL中非常重要的一项功能,它承载了LVGL的延时任务执行,周期任务执行,时序任务执行等,可以说理解定时器的设计就一定程度上理解发LVGL的任务调度机制。原创 2022-08-17 19:01:24 · 3628 阅读 · 0 评论 -
LVGL core obj_tree对象树管理(lv_obj_tree.c)
实际了对象树管理接口,实际就是树的基本操作增、删、改、查功能。相当于一个工具类。原创 2022-10-11 16:48:54 · 801 阅读 · 2 评论 -
LVGL core disp显示设计(lv_disp.c)
lv_disp.c当前显示页面的配置scr_act在原始的LVGL是以screen的概念存在,但我们还是习惯叫它为一个页面提供获取top_layer、sys_layer、prev_scr图层接口配置主题管理默认的主题管理是递归查找的,实际项目中因此页面的复杂性,虽然也兼容了此主题管理的方案,但还是推荐使用单页面自行管理主题的方案壁纸设置多页面切换的动画支持计算无用户操作时间清理显示缓存。原创 2022-10-02 18:50:53 · 1724 阅读 · 0 评论 -
LVGL core event事件管理(lv_event.c)
LVGL 事件机制是其框架的一个核心组成部件。所有lv_obj_t对象状态更新、信息交互等都是通过该事件机制来完成的。因此建议在研究lv_obj_t的渲染过程之前,先把事件机制完全弄懂是非常必要的事件。LVGL 事件管理机制仅支持单线程运行,在MCU上使用不会存在并发的问题,但如果在Linux上使用,需要特别注意不能在其它线程中调用此类接口。...原创 2022-08-22 17:00:42 · 1411 阅读 · 0 评论 -
LVGL core obj and obj_class 对象管理(lv_obj.c/lv_obj_class.c)
LVGL的虽然是用c语言实现的代码,却采用lv_obj_t和结构体来实现一些对象思想。相比与C++语言来讲,该套机制实现了继承关系,却没有支持重载关系(之所以说它只支持继承关系而不支持重载,就是因为这个结构体在使用时,多被定义为const修饰,这样对象的功能函数就没法修改了。如果有用到重载关系的,需要开发者自行处理)。对应C++中的类,而lv_obj_t对应着对象,对象lv_obj_t通过类来构造。对象使用中定义的接口来构造成lv_obj_t对象,lv_obj_t对象使用lv_obj.c。...原创 2022-08-29 18:39:20 · 1657 阅读 · 0 评论 -
LVGL core theme主题管理(lv_theme.c)
如果打开宏,主题的初始化是在显示设备注册时完成的。整个themes的实现放在目录下面。这里一共有三套主题(basic、default和mono)可供选择或者参考。源码中默认对接的是 default 主题,所以在中,看到的是调用default主题的接口。也就是说,如果需要更换主题,把这里面的接口换掉就可以了。或者要重新做一套主题,参考这些实现修改也就可以了。虽说有三套主题,但逻辑流程是一样的。主要完成两个工作:构造lv_theme_t结构体和初始化默认样多备用(style_init函数内实现)。构造。....原创 2022-08-18 19:16:11 · 2162 阅读 · 0 评论