Files
2026-08-05 17:25:09 +08:00

191 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LVGL Reference Index
> **类别:reference** | **芯片:cross-platform** | **主题:LVGL 图形库参考索引**
> Top-level index for all LVGL version references, migration guides, and ESP32 compatibility notes.
> Structured for AI agent consumption during ESP32 GUI development tasks.
---
## Directory Structure
```
references/lvgl/
├── README.md # This file - top-level index
├── migration/
│ ├── v8-to-v9.md # Definitive v8 -> v9 migration guide
│ └── version-matrix.md # Feature/widget/API matrix across versions
├── v8.2/ # v8.2 API reference (if populated)
├── v8.3/ # v8.3 API reference (if populated)
├── v8.4/ # v8.4 API reference (if populated)
├── v9.0/ # v9.0 API reference (if populated)
├── v9.1/ # v9.1 API reference (if populated)
├── v9.2/ # v9.2 API reference (if populated)
├── v9.3/ # v9.3 API reference (if populated)
├── v9.4/ # v9.4 API reference (if populated)
└── v9.5/ # v9.5 API reference (if populated)
```
---
## Version Selection Guide
### Quick Decision Tree
```
Starting a new ESP32 GUI project?
├── ESP32-S3 or ESP32-P4 (with PSRAM)?
│ └── Use v9.5 (latest stable, full feature set)
├── ESP32 original with PSRAM?
│ └── Use v9.5 (good fit with PSRAM for buffers)
├── ESP32-C3/C6/H2 (no PSRAM)?
│ └── Use v8.4 (lower memory footprint)
├── Need maximum community examples/tutorials?
│ └── Start with v8.3 (most content available)
└── Need GPU acceleration or vector graphics?
└── Use v9.5 (only option with draw pipeline + ThorVG)
Migrating an existing project?
├── Currently on v7?
│ └── Migrate directly to v9.5 (skip v8)
├── Currently on v8 and working fine?
│ ├── Need v9 features? → Migrate to v9.5
│ └── No new needs? → Stay on v8.4
└── Currently on v9.0-v9.4?
└── Upgrade to v9.5 (backward compatible within v9)
```
---
## Version Timeline
```
2020 2021 2022 2023 2024 2025
| | | | | |
v7.0 v8.0 v8.3 v8.3.9 v9.0 v9.1 v9.2 v9.5
May Jun Jul Aug Jan Mar Aug Feb
| | |
v7.9 v8.4 v9.4
Jan Mar Oct
|
v9.3
Jun
```
### Major Version Eras
- v7 eraVersions=7.0 - 7.9, Period=May 2020 - Jan 2021, Key Characteristics=Legacy style system, basic layout
- v8 eraVersions=8.0 - 8.4, Period=Jun 2021 - Mar 2024, Key Characteristics=Flexbox/grid, CSS-like styles, mature ecosystem
- v9 eraVersions=9.0 - 9.5+, Period=Jan 2024 - present, Key Characteristics=New driver API, draw pipeline, observer, built-in drivers
---
## Migration Guides
- v8.x to v9.xDocument=[migration/v8-to-v9.md](migration/v8-to-v9.md), Effort Level=High
- Version comparisonDocument=[migration/version-matrix.md](migration/version-matrix.md), Effort Level=Reference
### Migration Effort Summary
- v8.3To=v8.4, Breaking Changes=None, Compatibility Layer=N/A, Estimated Effort=Trivial (recompile)
- v8.xTo=v9.0+, Breaking Changes=Major, Compatibility Layer=`lv_api_map_v8.h` (partial), Estimated Effort=2-5 days typical
- v9.xTo=v9.y, Breaking Changes=None, Compatibility Layer=N/A, Estimated Effort=Trivial (recompile)
- v7.xTo=v9.x, Breaking Changes=Extreme, Compatibility Layer=`lv_api_map_v7.h` + `v8.h`, Estimated Effort=5-10 days typical
---
## ESP32 Compatibility Summary
### Recommended LVGL Version by ESP32 Chip
- ESP32 (original)PSRAM=None, Recommended LVGL=v8.4, Rationale=RAM too limited for v9
- ESP32 (original)PSRAM=4MB+, Recommended LVGL=v9.5, Rationale=PSRAM compensates for v9 RAM usage
- ESP32-S2PSRAM=None, Recommended LVGL=v8.4, Rationale=320KB RAM, too tight for v9
- ESP32-S2PSRAM=2MB+, Recommended LVGL=v9.5, Rationale=Viable with PSRAM
- ESP32-S3PSRAM=2-8MB, Recommended LVGL=v9.5, Rationale=Ideal target for v9
- ESP32-C3PSRAM=None, Recommended LVGL=v8.4, Rationale=No PSRAM, 400KB RAM
- ESP32-C5PSRAM=None, Recommended LVGL=v8.4, Rationale=Limited RAM, no PSRAM
- ESP32-C6PSRAM=None, Recommended LVGL=v8.4 or v9.5, Rationale=512KB RAM, monitor usage
- ESP32-H2PSRAM=None, Recommended LVGL=v8.4, Rationale=320KB RAM, BLE-focused chip
- ESP32-P4PSRAM=Up to 32MB, Recommended LVGL=v9.5, Rationale=Best ESP32 for GUI workloads
### ESP-IDF Version Compatibility
- v8.3/v8.4ESP-IDF 4.4=Yes, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes
- v9.0-v9.2ESP-IDF 4.4=Yes, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes
- v9.3-v9.5ESP-IDF 4.4=No, ESP-IDF 5.0=Yes, ESP-IDF 5.1=Yes, ESP-IDF 5.2+=Yes
### Integration Methods for ESP32
1. **ESP Component Registry** (recommended for ESP-IDF): Add `lvgl/lvgl` to `idf_component.yml`
2. **esp_lvgl_port**: Official ESP-IDF LVGL port with driver integration (supports v8 and v9)
3. **PlatformIO**: Add to `platformio.ini` lib_deps
4. **Arduino Library Manager**: Search "lvgl" in Library Manager
5. **Git submodule**: Manual integration into project
---
## Version Folder Contents
Each version folder (`v8.2/`, `v8.3/`, etc.) is intended to contain:
- API reference summaries for that specific version
- Widget documentation snapshots
- Configuration templates (`lv_conf.h` defaults)
- ESP32-specific notes and tested configurations
- Known issues and workarounds
### Currently Populated
- `v8.2/`Status=Empty, Contents=Placeholder
- `v8.3/`Status=Empty, Contents=Placeholder
- `v8.4/`Status=Empty, Contents=Placeholder
- `v9.0/`Status=Empty, Contents=Placeholder
- `v9.1/`Status=Empty, Contents=Placeholder
- `v9.2/`Status=Empty, Contents=Placeholder
- `v9.3/`Status=Empty, Contents=Placeholder
- `v9.4/`Status=Empty, Contents=Placeholder
- `v9.5/`Status=Empty, Contents=Placeholder
---
## Key Differences Between Major Versions (Summary)
### v8 Highlights
- Flexbox and grid layout support
- CSS-like cascading style system with local styles per widget
- `lv_disp_drv_t` / `lv_indev_drv_t` struct-based driver model
- `lv_meter` widget for gauge displays
- `lv_msg` messaging system
- `lv_coord_t` coordinate type
- Buffer sizes in pixels
- Abbreviated API names (`btn`, `img`, `disp`, `scr`)
### v9 Highlights
- New display/indev API: opaque types with setter functions
- Draw pipeline architecture (task-based, GPU-extensible)
- Parallel rendering support
- Observer pattern replacing `lv_msg`
- Built-in drivers (SDL, Linux FB, TFT_eSPI, ST7789, ILI9341)
- `lv_scale` widget (replaces `lv_meter` ticks)
- ThorVG vector graphics on Canvas
- Full-word API names (`button`, `image`, `display`, `screen`)
- `lv_color_t` always RGB888 internally
- Buffer sizes in bytes
- Kconfig full support
- Built-in OS abstraction (pthread, FreeRTOS)
- Runtime color format adjustment
- `lv_coord_t` removed (use `int32_t`)
---
## External Resources
- LVGL Official Docs (latest)URL=https://docs.lvgl.io/master/, Description=v9.6 development docs
- LVGL v8.3 DocsURL=https://docs.lvgl.io/8.3/, Description=Last major v8 docs
- LVGL GitHubURL=https://github.com/lvgl/lvgl, Description=Source code and releases
- LVGL ForumURL=https://forum.lvgl.io/, Description=Community support
- ESP Component RegistryURL=https://components.espressif.com/components/lvgl/lvgl, Description=ESP-IDF integration
- lv_api_map_v8.hURL=https://github.com/lvgl/lvgl/blob/master/src/lv_api_map_v8.h, Description=v8 compatibility macros
- ESP32 LVGL TipsURL=https://docs.lvgl.io/master/integration/chip_vendors/espressif/tips_and_tricks.html, Description=ESP32-specific optimization