目录
1. 项目整体结构
项目源码托管地址:https://gitcode.com/am335xt3/lvgl.git
LVGL项目采用模块化设计,主要包含以下核心目录:
├── apps # 应用程序目录
│ ├── helloworld # Hello World示例应用
│ ├── smarthome # 智能家居演示程序
│ ├── template # 应用开发模板
│ └── tests # 测试程序集合
│ ├── databaseTest # 数据库测试
│ ├── lnxfsTest # 文件系统测试
│ └── virtboardTest # 虚拟键盘测试
├── lvgl # LVGL核心库
├── lv_drivers # 设备驱动库
├── thirdpart # 第三方依赖库
│ ├── tslib # 触摸屏驱动库
│ ├── sqlite3 # 数据库支持
│ └── ffmpeg # 多媒体支持
└── doc/ # 项目文档
2. 核心目录说明
2.1 lvgl目录
LVGL核心库,提供图形界面的基础框架和控件:
- src:源代码目录,包含核心组件、绘图引擎、控件等
- demos:官方演示程序
- examples:使用示例
2.2 lv_drivers目录
设备驱动库,支持多种显示和输入设备:
- display:显示设备驱动(framebuffer、DRM等)
- indev:输入设备驱动(触摸屏、按键等)
2.3 thirdpart目录
第三方依赖库:
- tslib:触摸屏驱动库
- sqlite3:数据库支持
- ffmpeg:多媒体支持
3. 应用程序目录(apps)详解
3.1 helloworld组件
基础示例应用,展示LVGL基本功能的使用。
├── src/
│ ├── main.c # 主程序入口
│ ├── dump.c # 调试辅助功能
│ └── mouse_cursor_icon.c # 鼠标光标图标
主要特性:
- 演示基本GUI控件的使用
- 包含鼠标光标支持
- 提供调试信息输出
3.2 smarthome组件
智能家居演示程序,展示完整的应用开发案例
├── src/
│ ├── com/ # 通用组件
│ ├── drv/ # 驱动适配
│ ├── pages/ # 界面页面
│ │ ├── splash_page # 启动页面,显示应用启动动画
│ │ ├── login_page # 登录页面,提供用户认证界面
│ │ ├── home_page # 主页面,智能家居控制中心
│ │ ├── logo_icon # Logo图标资源
│ │ └── page_manager # 页面管理器,处理页面切换
│ ├── main.c # 主程序
│ └── lv_app_conf.h # 应用配置
├── images/ # 图片资源
└── doc/ # 组件文档
主要特性:
- 完整的智能家居控制界面
- 模块化的页面设计
- 包含虚拟键盘等高级控件
3.3 template组件
应用开发模板,为新应用开发提供基础框架。
├── src/
│ └── main.c # 模板主程序
├── images/ # 图片资源目录
└── doc/ # 文档目录
主要特性:
- 提供标准的项目结构
- 包含基础配置和框架代码
- 便于快速启动新项目
3.4 tests组件
测试程序集合,用于功能验证和开发测试。
├── databaseTest/ # 数据库测试
├── lnxfsTest/ # 文件系统驱动测试,目的是linux下不使用驱动符号,未成功
└── virtboardTest/ # 虚拟键盘测试
主要特性:
- 数据库操作测试
- 文件系统驱动功能测试
- 虚拟键盘功能测试
4. 构建系统
项目使用CMake构建系统:
- CMakeLists.txt:主构建配置文件
- toolchain.cmake:交叉编译工具链配置
每个组件都包含独立的CMakeLists.txt文件,支持灵活的构建配置。
5. 开发流程
- 参考helloworld示例了解基本用法
- 基于template组件创建新应用
- 参考smarthome组件学习完整应用开发
- 使用tests组件进行功能测试
6. 注意事项
- 遵循项目的目录结构规范
- 合理使用现有组件和示例代码
- 注意文档和资源文件的管理
- 保持良好的代码组织和注释