目录
[1. 概念](#1. 概念)
[2. 特点](#2. 特点)
[3. 相关](#3. 相关)
[4. 移植](#4. 移植)
[5. 相关函数](#5. 相关函数)
[1. main.c](#1. main.c)
[2. lv_init](#2. lv_init)
[3. fbdev_init](#3. fbdev_init)
[3. 修改参数](#3. 修改参数)
[4. 快捷操作](#4. 快捷操作)
[2. "hello world" 标签](#2. "hello world" 标签)
[3. 按键](#3. 按键)
[1. 显示字符串](#1. 显示字符串)
[2. 按键](#2. 按键)
[3. 触摸屏](#3. 触摸屏)
[1. evdev_init](#1. evdev_init)
[2. 设备树](#2. 设备树)
[1. I2C芯片](#1. I2C芯片)
[2. 设备树匹配表](#2. 设备树匹配表)
[3. 设备树配置](#3. 设备树配置)
[3. touch.ko](#3. touch.ko)
[4. main.c](#4. main.c)
[五、 图形设计](#五、 图形设计)
[1. 新建画布](#1. 新建画布)
[1. 版本选择](#1. 版本选择)
[2. 开发板](#2. 开发板)
[3. 模板选择](#3. 模板选择)
[4. 配置信息](#4. 配置信息)
[2. 图形设计](#2. 图形设计)
[1. 设计面板](#1. 设计面板)
[2. 按钮跳转](#2. 按钮跳转)
[3. 添加中文](#3. 添加中文)
[4. 执行结果](#4. 执行结果)
[5. 导出代码](#5. 导出代码)
[6. 结合lvgl](#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. 移植
-
复制并解压LVGL-V8_3.tar 到虚拟机的rootfs目录下
lv_drivers 显示设备驱动相关的代码(fb0,分辨率,色深)
lvgl 图形库的核心代码 (控件)
lv_port_linux_frame_buffer 用于移植的模板 -
进入 LVGL-V8_3.tar 目录创建自己的文件目录 mylvgl
-
将 lv_drivers 和 lvgl 放入 lv_port_linux_frame_buffer 中,便于代码管理
-
拷贝到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 $()查看变量
三、示例分析
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. 添加中文
- window寻找字体
C盘 - Windows - Fonts

- 选择字体复制到工程目录下
工程目录下import - font
- 导入字体
资源管理 - 字体 - 导入字体

- 添加文字时选择字体
4. 执行结果
选择模拟器 - C(c语言编译,用于导入代码替换中)

5. 导出代码
工程 - 代码导出 - zeqhyr

6. 结合lvgl
-
将生成代码目录下的 custom 和 generated 复制到 mylvgl 同级目录下
-
将 main.c 代码中相关部分添加到 mylvgl 的 main.c 中
添加头文件和全局变量

调用函数

- 修改Makefile至最终版
添加 .c 和 .h 文件地址
添加编译许可