监控系统3 - LVGL
目录
一、LVGL
1. 概念
2. 特点
3. 相关
4. 移植
5. 相关函数
1. main.c
2. lv_init
3. fbdev_init
3. 修改参数
4. 快捷操作
二、Makefile
三、示例分析
1.main.c
2. "hello world" 标签
3. 按键
四、操作函数
1. 显示字符串
2. 按键
3. 触摸屏
1. evdev_init
2. 设备树
1. I2C芯片
2. 设备树匹配表
3. 设备树配置
3. touch.ko
4. main.c
五、 图形设计
1. 新建画布
1. 版本选择
2. 开发板
3. 模板选择
4. 配置信息
2. 图形设计
1. 设计面板
2. 按钮跳转
3. 添加中文
4. 执行结果
5. 导出代码
6. 结合lvgl
一、LVGL
1. 概念
LVGL是一个嵌入式图形库,创建MCU、MPU等显示类型的UI,使图形更优美更高级
放入Linux系统中可视为.c,.h文件进行操作,添加UI功能,实现对显示图案的操作(Linux下一切皆文件)
2. 特点
-
轻量且高效:专为资源受限的嵌入式系统设计,只需很少的内存和计算资源即可运行。
-
高度可移植:不依赖特定的硬件或操作系统,可运行在多种微控制器(MCU)和处理器上,支持多种显示和输入设备。
-
功能丰富:提供丰富的现代化UI控件(按钮、滑块、图表、列表等)、动画、抗锯齿、不透明度、平滑滚动等效果。
-
强大的定制性:支持自定义主题、样式,甚至可以重绘任何控件的外观。
-
多语言支持:内置UTF-8编码支持,可显示多语言字符。
-
开源免费:遵循MIT许可证,可免费用于商业项目
3. 相关
framebuffer作为LVGL的底层基础,二者有紧密的关系
framebuffer:是Linux系统提供的一块内存区域,直接对应屏幕像素。它提供了画点、画线等最基础的绘图能力,相当于一张“画布”
LVGL:是一个高级的图形库,建立在framebuffer(或其他显示驱动)上,提供按钮、标签、滑块等现成的UI组件和动画效果,通过调用framebuffer接口将图像显示到屏幕上
4. 移植
1. 复制并解压LVGL-V8_3.tar 到虚拟机的rootfs目录下
lv_drivers 显示设备驱动相关的代码(fb0,分辨率,色深)
lvgl 图形库的核心代码 (控件)
lv_port_linux_frame_buffer 用于移植的模板
2. 进入 LVGL-V8_3.tar 目录创建自己的文件目录 mylvgl
3. 将 lv_drivers 和 lvgl 放入 lv_port_linux_frame_buffer 中,便于代码管理
4. 拷贝到mylvgl中准备编写
5. 相关函数
1. main.c
2. lv_init
3. fbdev_init
3. 修改参数
接口选择:800 * 480 色深:RGB888
打开二维码:
4. 快捷操作
ctrl + f 查找
ctrl+d 复制光标所在行插入到下一行
ctrl+p 通过文件名查找
ctrl+g 跳转到指定行
二、Makefile
Makefile调试
show:
echo $()查看变量
三、示例分析
基本示例 - LVGL 9.4 文档
1.main.c
2. "hello world" 标签
3. 按键
四、操作函数
1. 显示字符串
打印hello world
2. 按键
按键显示及回调函数
3. 触摸屏
1. evdev_init
2. 设备树
1. I2C芯片
GT9147屏:4.5寸单层多点
2. 设备树匹配表
3. 设备树配置
设备树下i2c2下的触摸屏设置
复位引脚的电气特性,GT9147
注意 GPIO1_IO09 的引脚是否有复用
3. touch.ko
编译后将ko文件复制到tftpboot目录下,便于启用
编译:
sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8
复制:
cp arch/arm/boot/zImage /home/linux/tftpboot/
在minicom中执行调用,确认事件event1可以触发回调触屏中断,在main.c中配置回调名
insmod touch.ko
cat /dev/input/event1
4. main.c
在minicom中执行调用
insmod touch.ko
cd final/3-LVGL/mylvgl
./demo
五、 图形设计
恩智浦图形设计器
1. 新建画布
1. 版本选择
v8.3.5
2. 开发板
simulator模拟器
3. 模板选择
emptyUI空
4. 配置信息
2. 图形设计
1. 设计面板
背景 - 文字 - 图表 - 图片 - 二维码 - 按钮
2. 按钮跳转
事件添加
3. 添加中文
1. window寻找字体
C盘 - Windows - Fonts
2. 选择字体复制到工程目录下
工程目录下import - font
3. 导入字体
资源管理 - 字体 - 导入字体
4. 添加文字时选择字体
4. 执行结果
选择模拟器 - C(c语言编译,用于导入代码替换中)
5. 导出代码
工程 - 代码导出 - zeqhyr
6. 结合lvgl
1. 将生成代码目录下的 custom 和 generated 复制到 mylvgl 同级目录下
2. 将 main.c 代码中相关部分添加到 mylvgl 的 main.c 中
添加头文件和全局变量
调用函数
3. 修改Makefile至最终版
添加 .c 和 .h 文件地址
添加编译许可