示例程序
LVGL Demo
配置
如果要运行 LVGL demo, 需要在 Luban-Lite 系统 RT-Thread 配置中通过 me 命令打开配置界面:
Application options --->
*** Filesystem related ***
[*] Using File System Image 0 --->
--- Using File System Image 0
Select File System Type (FATFS) --->
(packages/artinchip/lvgl-ui/aic_demo/base_demo/lvgl_src/) Data Directory
(app.fatfs) Image Name
[*] auto calcuate image size
[ ] Using File System Image 1 ----
*** lvgl demo select related ***
-*- LVGL (official): powerful and easy-to-use embedded GUI library --->
(20) Priority of LVGL thread
(32768) Stack size of LVGL thread
(5) Display refresh period (ms)
[ ] Support SquareLine Studio
[ ] Enable built-in examples
[ ] Enable built-in demos
-*- ArtInChip lvgl demo
select lvgl demo (lvgl demo with basic function) --->
(X) lvgl demo with basic function
( ) lvgl demo of meter
(16) LVGL color depth(32/16)
(8) LVGL image cached number
(/rodata/lvgl_data) LVGL Resource Directory
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
每个参数的含义详见:多媒体章节 LVGL 使用指南。
特别说明:
在 ArtInChip LVGL demo 中,选择不同的 demo 应用,对应的要调整 Using File System Image 0 中的 Data Directory 中的路径,否则会导致无法找到资源文件,显示出现白屏。
举例1:使用 lvgl_demo_basic_function,则 Using File System Image 0 中的 Data Directory 路径为 (packages/artinchip/lvgl-ui/aic_demo/base_demo/lvgl_src/)
举例2:使用 lvgl_demo_meter,则 Using File System Image 0 中的 Data Directory 路径为 (packages/artinchip/lvgl-ui/aic_demo/meter_demo/lvgl_src/)
界面
客户自定义APP
本章节演示添加一个名为 test_demo 的 LVGL 应用,详见多媒体章节 LVGL 使用指南。 添加应用。
添加 APP 选项
在 application/Kconfig 中,添加代码:
config AIC_LVGL_METER_DEMO
bool "LVGL demo of meter"
config AIC_LVGL_TEST_DEMO # 添加 AIC_LVGL_TEST_DEMO,以便在 menuconfig 菜单中选择
bool "LVGL demo of test"
config AIC_LVGL_LAUNCHER_DEMO
bool "LVGL launcher demo"
2
3
4
5
6
配置 APP
使用 me 命令进入配置界面,在 Application options 中选择 AIC_LVGL_TEST_DEMO,并保存:
Application options --->
[*] ArtInChip LVGL demo --->
select LVGL demo (LVGL demo of test) --->
( ) LVGL demo with basic function
( ) LVGL demo of meter
(X) LVGL demo of test
( ) LVGL launcher demo
2
3
4
5
6
7
配置素材路径
Application options --->
[*] Using File System Image 0
(packages/artinchip/lvgl-ui/aic_demo/test_demo/lvgl_src/) Data Directory 该路径以 SDK 为根目录,根据实际情况自行修改
[*] Using File System Image 1
(packages/artinchip/lvgl-ui/aic_demo/test_demo/lvgl_src/) Data Directory 该路径以 SDK 为根目录,根据实际情况自行修改
2
3
4
5
源码适配
将源码解压缩至 packages/artinchip/lvgl-ui/aic_demo 目录下,文件结构为:
packages/artinchip/lvgl-ui/aic_demo/aic_demo$ tree -h
.
└── [4.0K] test_demo
├── [4.0K] lvgl_src
│ └── [ 0] readme.txt # 该文件用于验证资源打包,本身为空文件
├── [ 571] SConscript
├── [4.0K] thread
│ ├── [1.0K] test_thread.c
│ └── [ 211] test_thread.h
└── [4.0K] ui
├── [1.3K] test_ui.c
└── [ 228] test_ui.h
2
3
4
5
6
7
8
9
10
11
12
SConscript 更改:
test_demo 中的 SConscript 需要跟进实际项目路径进行修改,解析如下:
from building import *
import os
cwd = GetCurrentDir()
group = []
src = Glob('*.c')
# 源文件路径
src += Glob('./ui/*.c')
src += Glob('./thread/*.c')
CPPPATH = [cwd]
# 头文件路径
CPPPATH.append(cwd + './ui')
CPPPATH.append(cwd + './thread')
list = os.listdir(cwd)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
group = group + SConscript(os.path.join(d, 'SConscript'))
# AIC_LVGL_TEST_DEMO 宏需要与 application/Kconfig 中添加的宏一致
group = group + DefineGroup('LVGL-port', src, depend = ['AIC_LVGL_TEST_DEMO'], CPPPATH = CPPPATH)
Return('group')
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
增加入口函数
Luban-Lite SDK 中,已经融合了 LVGL-8.3.2,并与 AIC 芯片硬件接口、加速模块、触控等进行了对接,因此用户只需要将 UI 部分的功能接入即可。
在 packages/artinchip/lvgl-ui/aic_ui.c 中,添加:
void aic_ui_init()
{
#ifdef AIC_LVGL_BASE_DEMO
#include "base_ui.h"
base_ui_init();
#endif
#ifdef AIC_LVGL_METER_DEMO
#include "meter_ui.h"
meter_ui_init();
#endif
#ifdef AIC_LVGL_LAUNCHER_DEMO
extern void launcher_ui_init();
launcher_ui_init();
#endif
#ifdef AIC_LVGL_MUSIC_DEMO
extern void lv_demo_music(void);
lv_demo_music();
#endif
#ifdef AIC_LVGL_TEST_DEMO
test_thread();
test_ui_init();
#endif
return;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
小技巧
Bringup 的时候不建议调整,运行默认程序即可。